Sobes.tech
Junior

Jaký je rozdíl mezi mikroservisní architekturou a monolitickou?

sobes.tech AI

Odpověď od AI

Monolitická architektura:

  • Jednotná, soběstačná aplikace.
  • Všechny komponenty jsou úzce propojené.
  • Nasazení probíhá jako jeden celek.
  • Škálování je obvykle horizontální (zvětšení počtu instancí celé aplikace).
  • Vývoj, testování a ladění jsou jednodušší pro malé projekty.
  • Problémy se škálováním jednotlivých částí, aktualizacemi, refaktoringem velkého monolitu.

Mikroslužbová architektura:

  • Sada malých, nezávislých služeb.
  • Každá služba plní konkrétní obchodní funkci.
  • Služby spolu komunikují (například přes HTTP, prostřednictvím fronty zpráv).
  • Služby jsou nasazovány nezávisle.
  • Možnost škálovat každou službu samostatně.
  • Technologický stack se může lišit pro různé služby.
  • Složitost správy distribuovaného systému, zajištění konzistence dat, monitorování, testování.

Klíčové rozdíly:

Vlastnost Monolitická architektura Mikroslužbová architektura
Velikost Velká Malá
Nezávislost Nízká Vysoká
Nasazení Jako celek Nezávislé
Škálování Horizontální (celé) Po službách
Odolnost vůči chybám Nízká (chyba části znamená selhání celého systému) Vysoká (selhání služby nevede ke selhání celého systému)
Technologie Jednotný stack Různé stacky
Složitost správy Nízká (pro malé) Vysoká (pro distribuované systémy)
# Příklad struktury monolitické aplikace
# Aplikace obsahuje všechny moduly na jednom místě
class UserManagement:
    def create_user(self):
        pass

class OrderProcessing:
    def process_order(self):
        pass

class PaymentGateway:
    def process_payment(self):
        pass

class MonolithicApp:
    def __init__(self):
        self.user_management = UserManagement()
        self.order_processing = OrderProcessing()
        self.payment_gateway = PaymentGateway()

    def run(self):
        # Celá funkčnost běží v jednom procesu
        pass
# Příklad struktury mikroslužbové architektury
# Samostatné služby pro uživatele, objednávky a platby
# Tyto služby jsou nasazovány a fungují nezávisle
class UserServiceClient:
    def create_user(self):
        # Volání vzdálené služby uživatelů
        pass

class OrderService:
    def process_order(self):
        # Logika zpracování objednávky
        pass

class PaymentServiceClient:
    def process_payment(self):
        # Volání vzdálené služby plateb
        pass

# Samostatné procesy nebo kontejnery pro každou službu
# UserService.run()
# OrderService.run()
# PaymentService.run()