====== Mikroslužby (Microservices) ====== **Mikroslužby** umožňují rozložit komplexní aplikaci na menší kusy, které spolu komunikují přes definovaná rozhraní (nejčastěji [[it_encyklopedie:webhook|REST API]]). Každá mikroslužba se zaměřuje na jednu konkrétní obchodní funkci a může být vyvíjena, nasazována a škálována zcela samostatně. [Image of Monolithic vs Microservices architecture diagram] ===== 1. Klíčové vlastnosti ===== * **Autonomie:** Každá služba může být napsána v jiném programovacím jazyce (např. katalog v Pythonu, platby v Javě) a mít vlastní databázi. * **Specializace:** Služba řeší jeden úkol (Single Responsibility Principle). * **Decentralizace:** Neexistuje žádný centrální bod, na kterém by závisel vývoj všech částí. * **Odolnost:** Pokud selže jedna mikroslužba (např. doporučování produktů), zbytek e-shopu (košík, platba) může stále fungovat. ===== 2. Srovnání: Monolit vs. Mikroslužby ===== ^ Vlastnost ^ Monolitická architektura ^ Architektura mikroslužeb ^ | **Vývoj** | Jednoduchý start, rychlé psaní kódu. | Komplexnější na začátku, vyžaduje koordinaci. | | **Nasazení** | Musí se přenasadit celá aplikace. | Lze aktualizovat pouze jednu malou službu. | | **Škálování** | Nutno kopírovat celý systém. | Škáluje se jen ta služba, která je přetížená. | | **Chyby** | Jedna chyba může shodit celou aplikaci. | Chyba je izolovaná v rámci jedné služby. | ===== 3. Komunikace mezi službami ===== Protože služby neběží v jednom procesu, musí spolu mluvit přes síť: * **Synchronní:** Pomocí protokolu HTTP/REST (čeká se na odpověď). * **Asynchronní:** Pomocí zpráv (Message Queues jako RabbitMQ nebo Kafka). Služba "A" pošle zprávu "Objednávka vytvořena" a dál se o ni nestará; služba "B" si ji vyzvedne, až bude mít čas. ===== 4. Nevýhody a výzvy ===== Mikroslužby nejsou "zlaté vejce" a přinášejí nové problémy: * **Režie sítě:** Komunikace přes síť je pomalejší než volání funkcí v paměti. * **Konzistence dat:** Je těžké zajistit, aby data ve všech oddělených databázích byla v každém okamžiku stejná. * **Komplexita provozu:** Místo jedné aplikace musíte monitorovat, logovat a zabezpečovat stovky malých kontejnerů. ===== 5. Technologie v pozadí ===== Provoz mikroslužeb by byl téměř nemožný bez moderních nástrojů: * **Docker:** Balí mikroslužby do izolovaných kontejnerů. * **Kubernetes:** Automatizuje správu a škálování těchto kontejnerů. * **API Gateway:** Jednotný vstupní bod pro uživatele, který směruje požadavky na správné mikroslužby. > **Zajímavost:** Giganti jako Netflix nebo Amazon mají tisíce mikroslužeb. Jejich systémy jsou tak komplexní, že k jejich zobrazení používají tzv. "Death Star" diagramy, kde tisíce bodů (služeb) tvoří hustou pavučinu propojení. [[it_encyklopedie:it_architektura_rozcestnik|Zpět na Rozcestník]]