Sobes.tech
Junior

Aký je rozdiel medzi mikroservisnou architektúrou a monolitnou?

sobes.tech AI

Odpoveď od AI

Monolitická architektúra:

  • Jednotná, sebestačná aplikácia.
  • Všetky komponenty sú úzko prepojené.
  • Nasadenie prebieha ako jeden celok.
  • Škálovanie je zvyčajne horizontálne (zväčšenie počtu inštancií celej aplikácie).
  • Vývoj, testovanie a ladenie sú jednoduchšie pre malé projekty.
  • Problémy so škálovaním jednotlivých častí, aktualizáciami, refaktoringom veľkého monolitu.

Mikroslužbová architektúra:

  • Sada malých, nezávislých služieb.
  • Každá služba plní konkrétnu obchodnú funkciu.
  • Služby komunikujú medzi sebou (napríklad cez HTTP, prostredníctvom fronty správ).
  • Služby sú nasadzované nezávisle.
  • Možnosť škálovať každú službu samostatne.
  • Technologický stack sa môže líšiť pre rôzne služby.
  • Zložitosť správy distribuovaného systému, zabezpečenie konzistencie dát, monitorovanie, testovanie.

Kľúčové rozdiely:

Príznak Monolitická architektúra Mikroslužbová architektúra
Veľkosť Veľká Malá
Nezávislosť Nízka Vysoká
Nasadenie Ako celok Nezávislé
Škálovanie Horizontálne (celé) Po službách
Odolnosť voči chybám Nízka (chyba časti znamená zlyhanie celého systému) Vysoká (zlyhanie služby nevedie ku zlyhaniu celého systému)
Technológie Jednotný stack Rôzne stacky
Zložitosť správy Nízka (pre malé) Vysoká (pre distribuované)
# Príklad štruktúry monolitickej aplikácie
# Aplikácia obsahuje všetky moduly na jednom mieste
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á funkcionalita beží v jednom procese
        pass
# Príklad štruktúry mikroslužbovej architektúry
# Samostatné služby pre používateľa, objednávky a platby
# Tieto služby sú nasadzované a fungujú nezávisle
class UserServiceClient:
    def create_user(self):
        # Volanie vzdialenej služby používateľov
        pass

class OrderService:
    def process_order(self):
        # Logika spracovania objednávky
        pass

class PaymentServiceClient:
    def process_payment(self):
        # Volanie vzdialenej služby platieb
        pass

# Samostatné procesy alebo kontajnery pre každú službu
# UserService.run()
# OrderService.run()
# PaymentService.run()