- 2024-01-20
- Papp Miklós
Mik azok a microservice tervezési minták?
A mikroszolgáltatás független alkalmazáskomponensekből áll, amelyek egy rendszer számára specifikus funkciókat hajtanak végre. Egyetlen példánya vagy több példánya is lehet a funkcionális követelmények alapján.
A kliensoldali (webes felület és mobilos UI) és a köztes rétegekben lévő más integrált szolgáltatásokkal együtt ezek a mikroszolgáltatások mindegyike egy teljes architektúrát alkot.
Az ilyen mikroszolgáltatás-architektúra tervezése, fejlesztése és telepítése azonban kihívásokkal jár, mint például:
- Közös hozzáférés kezelése
- Adatkonzisztencia
- Szolgáltatások biztonsága
- Szolgáltatások közötti kommunikáció
- Függőségkezelés
Itt jönnek a képbe a mikroszolgáltatás tervezési minták (microservice design patterns)! Ezek olyan referenciaarchitektúrás minták, amelyek segítenek a szolgáltatások hatékonyabb adminisztrációjában, ezeknek a kihívásoknak a leküzdésében és a teljesítmény maximalizálásában.
Sőt, a mikroszolgáltatásokban az Ön felhasználási eseteihez megfelelő tervezési minták alkalmazása növelheti a komponensek újrafelhasználhatóságát, ami végül a fejlesztési idő és erőfeszítések csökkenését eredményezi. Idővel az újrafelhasználhatóság kiküszöböli a szükségtelen újrafejlesztést az alkalmazás módosításainál.
A 10 legfontosabb microservice tervezési minta
Fontos megjegyezni, hogy a mikroszolgáltatás tervezési minták nem csodaszerek! Minden tervezési mintának megvannak a maga előnyei és hátrányai. A következőkben az alábbi 12 tervezési mintát mutatjuk be röviden:
- Strangler Fig
- SAGA
- Aggregator
- Event Source
- CQRS
- Sidecar
- Database per microservice
- Backend For Frontends (BFF)
- Api Gateway
- Circuit Braker
1. Strangler Fig minta
A Strangler mintát eredetileg Martin Fowler mutatta be 2004-ben a „StranglerFigApplication” című blogbejegyzésében.Összefoglalva a „Strangler Pattern” lehetséges alkalmazási területei:
1. Fokozatos átállás:
- A monolitikus alkalmazás fokozatos lebontása mikroszolgáltatásokra.
- A funkcionalitás fokozatos áthelyezése az új mikroszolgáltatásokba.
- A régi és az új kódok párhuzamos futtatása egy ideig.
2. Kockázatcsökkentés:
- A hibák izolálása az új mikroszolgáltatásokban.
- Az alkalmazás folyamatos elérhetőségének biztosítása.
- A visszaállás lehetősége a régi rendszerre.
3. Architektúrális rugalmasság:
- Lehetővé teszi a különböző technológiák használatát a mikroszolgáltatásokban.
- Független skálázhatóság a mikroszolgáltatások számára.
- Javítja az alkalmazás karbantarthatóságát.
4. Hosszú távú fenntarthatóság:
- Megkönnyíti a jövőbeli változtatások és fejlesztések bevezetését.
- Javítja az alkalmazás teljesítményét és megbízhatóságát.
- Támogatja a DevOps gyakorlatokat.
További források:
- Martin Fowler: Strangler Fig Application https://martinfowler.com/bliki/StranglerFigApplication.html
- ThoughtWorks Embracing the Strangler Fig pattern for legacy modernization https://www.thoughtworks.com/insights/articles/embracing-strangler-fig-pattern-legacy-modernization-part-one
- Mechanical Rock Blogs: Strangler Pattern https://blog.mechanicalrock.io/2020/05/04/strangler-pattern.html