Wzory kompozycji
Kompozycja oprogramowania oznacza sposób tworzenia oprogramowania. Zasadniczo zajmuje się diagramem architektury oprogramowania wysokiego poziomu, w którym różne moduły oprogramowania będą komunikować się dla określonych celów biznesowych. W tym rozdziale poznamy różne wzorce kompozycji oprogramowania, które są szeroko stosowane w organizacjach. W mikrousługach dzielimy każdą funkcję na jeden proces. Każda z tych usług będzie miała charakter niezależny i pełny stos.
Dekompozycja funkcjonalna odgrywa ważną rolę w budowaniu mikrousług. Zapewnia sprawność, elastyczność i skalowalność Twojej aplikacji.
Wzorzec agregatora
Wzorzec agregatora to najprostszy wzorzec sieci Web, który można zaimplementować podczas opracowywania mikrousługi. W tym wzorcu kompozycji prosty moduł sieciowy będzie działał jako moduł równoważenia obciążenia, co oznacza, że będzie wywoływał różne usługi zgodnie z wymaganiami. Poniżej znajduje się diagram przedstawiający prostą aplikację internetową mikrousług z projektem agregatora. Jak widać na poniższym obrazie, „Agregator” jest odpowiedzialny za wywoływanie różnych usług jedna po drugiej. Jeśli musimy zastosować jakąkolwiek logikę biznesową do wyników usługi A, B i C, możemy zaimplementować logikę biznesową w samym agregatorze.
Agregator może być ponownie wystawiony jako kolejna usługa dla świata zewnętrznego, która może być skonsumowana przez innych w razie potrzeby. Tworząc usługę sieciową wzorców agregatora, musimy pamiętać, że każda z naszych usług A, B i C powinna mieć własne warstwy pamięci podręcznej i powinna mieć charakter pełnego stosu.
Wzorzec proxy
Wzorzec mikrousług proxy to odmiana modelu agregatora. W tym modelu zamiast modułu agregacji użyjemy modułu proxy. Serwis proxy może dzwonić do różnych usług indywidualnie.
We wzorcu proxy możemy zbudować jeden poziom dodatkowego bezpieczeństwa, udostępniając warstwę proxy zrzutu. Ta warstwa działa podobnie do interfejsu.
Łańcuchowy wzór
Jak sama nazwa wskazuje, ten typ wzoru kompozycji będzie podążał za strukturą łańcuchową. Tutaj nie będziemy używać niczego pomiędzy warstwą klienta a usługą. Zamiast tego pozwolimy klientowi komunikować się bezpośrednio z usługami, a wszystkie usługi zostaną połączone w taki sposób, że dane wyjściowe jednej usługi będą danymi wejściowymi następnej usługi. Poniższy obraz przedstawia typową mikrousługę połączonego wzorca.
Jedną z głównych wad tej architektury jest to, że klient zostanie zablokowany do zakończenia całego procesu. Dlatego jest wysoce zalecane, aby długość łańcucha była jak najkrótsza.
Wzorzec mikrousług gałęzi
Mikrousługa gałęzi to rozszerzona wersja wzorca agregatora i wzorca łańcucha. W tym wzorcu projektowym klient może bezpośrednio komunikować się z usługą. Ponadto jedna usługa może jednocześnie komunikować się z więcej niż jedną usługą. Poniżej przedstawiono schematyczne przedstawienie Branch Microservice.
Wzorzec mikrousług rozgałęzienia umożliwia deweloperowi dynamiczne konfigurowanie wywołań usług. Wszystkie zgłoszenia serwisowe będą odbywać się równolegle, co oznacza, że serwis A może wezwać serwis B i C jednocześnie.
Wzorzec zasobów współdzielonych
Wzorzec współdzielonych zasobów jest w rzeczywistości konglomeratem wszystkich typów wzorców wspomnianych wcześniej. W tym wzorcu klient lub moduł równoważenia obciążenia będą bezpośrednio komunikować się z każdą usługą, gdy zajdzie taka potrzeba. Jest to najbardziej efektywny wzorzec projektowy stosowany powszechnie w większości organizacji. Poniżej przedstawiono schematyczną reprezentację wzorca projektowego zasobu współużytkowanego.