Poradnik dotyczący mikrousług: Co to jest, Architektura i przykład
⚡ Inteligentne podsumowanie
Mikrousługi to wzorzec architektury zorientowanej na usługi, w którym aplikacja jest budowana jako zbiór małych, niezależnych jednostek usługowych. Ten materiał omawia architekturę monolityczną i mikrousługową, różnice między nimi, wyzwania, porównanie SOA, popularne narzędzia i najlepsze praktyki.
Czym są mikroserwisy?
Mikrosfery jest zorientowanym na usługi wzorcem architektury, w którym aplikacje są budowane jako zbiór różnych najmniejszych niezależnych jednostek usługowych. Jest to Inżynieria oprogramowania podejście, które koncentruje się na rozłożeniu aplikacji na moduły jednofunkcyjne z dobrze zdefiniowanymi interfejsami. Te moduły mogą być niezależnie wdrażane i obsługiwane przez małe zespoły, które są właścicielami całego cyklu życia usługi.
Termin „mikro” odnosi się do rozmiaru mikrousługi, którą musi zarządzać pojedynczy zespół programistów (od 5 do 10 programistów). W tej metodologii duże aplikacje są dzielone na najmniejsze, niezależne jednostki.
Co to jest monolityczny Architektura?
Mówiąc prościej, architektura monolityczna przypomina duży kontener, w którym wszystkie komponenty oprogramowania aplikacji są połączone w jeden pakiet. Omówmy przykład sklepu eCommerce w kontekście architektury monolitycznej.
Monolityczny Architecture aplikacji eCommerce
W każdej aplikacji e-commerce dostępne są pewne standardowe funkcje, takie jak wyszukiwanie, RevWidoki i oceny oraz płatności. Funkcje te są dostępne dla klientów za pośrednictwem przeglądarki lub aplikacji. Kiedy twórca witryny e-commerce wdraża aplikację, staje się ona pojedynczą, monolityczną jednostką. Kod dla różnych funkcji, takich jak wyszukiwanie, RevAplikacje i oceny oraz płatności znajdują się na tym samym serwerze. Aby skalować aplikację, konieczne jest uruchomienie wielu instancji (serwerów) tych aplikacji.
Co to jest Mikroserwis Architektura?
Mikrousługi Architektura to styl rozwoju architektonicznego, który pozwala na budowanie aplikacji jako zbioru małych autonomicznych usług opracowanych dla domeny biznesowej. Jest to odmiana architektury w stylu strukturalnym, która pomaga organizować aplikacje jako luźno powiązany zbiór usług. Mikrousługa Architecture zawiera szczegółowe usługi i lekkie protokoły.
Weźmy przykład aplikacji e-commerce opracowanej w oparciu o architekturę mikrousług. W tym przykładzie architektury mikrousług każda mikrousługa koncentruje się na pojedynczej funkcjonalności biznesowej. Wyszukiwanie, ocena i Review i Payment mają swoje instancje (serwery) i komunikują się ze sobą.
Mikrosfery Architektura
W Monolicie ArchiW strukturze wszystkie komponenty łączą się w jeden moduł. Ale w mikrousługach ArchiStrukturalnie są one rozproszone na pojedyncze moduły (mikrousługi), które komunikują się ze sobą, jak pokazano w przykładzie mikrousług powyżej.
Komunikacja między mikrousługami jest komunikacją bezstanową, w której każda para żądania i odpowiedzi jest niezależna. Dzięki temu mikrousługi mogą komunikować się bez wysiłku. W Mikroserwisie ArchiW strukturze dane są federowane. Każda mikrousługa ma swój własny, oddzielny magazyn danych.
Mikrousługi a monolityczne Architektura
| Mikrosfery | Monolityczny Architektura |
|---|---|
| Każda jednostka całej aplikacji powinna być jak najmniejsza i być w stanie realizować jeden konkretny cel biznesowy. | Jedna baza kodu dla wszystkich celów biznesowych. |
| Uruchomienie usługi jest stosunkowo szybkie. | Uruchomienie usługi zajmuje więcej czasu. |
| Izolacja awarii jest łatwa. Nawet jeśli jedna usługa przestanie działać, inne będą mogły nadal działać. | Izolacja błędów jest trudna. Jeśli jakaś konkretna funkcja nie działa, cały system przestaje działać. Aby rozwiązać ten problem, aplikacja musi zostać przebudowana, ponownie przetestowana i ponownie wdrożona. |
| Wszystkie mikrousługi powinny być luźno powiązane, tak aby zmiany wprowadzone w jednej nie miały wpływu na drugą. | Architektura monolityczna jest ściśle powiązana. Zmiany w jednym module kodu wpływają na pozostałe. |
| Firmy mogą przeznaczyć więcej zasobów na usługi generujące wyższy zwrot z inwestycji. | Ponieważ usługi nie są izolowane, nie jest możliwa indywidualna alokacja zasobów. |
| Więcej zasobów sprzętowych można by przeznaczyć na usługę, z której często się korzysta. W powyższym przykładzie e-commerce, więcej użytkowników sprawdza listę produktów i wyszukiwanie niż dokonuje płatności, więc więcej zasobów można by przeznaczyć na mikrousługę wyszukiwania i listowania produktów. | Skalowanie aplikacji jest trudne i marnotrawne. |
| Mikrousługi zawsze pozostają spójne i stale dostępne. | Narzędzia programistyczne są przeciążone, ponieważ cały proces trzeba zaczynać od zera. |
| Dane są federowane. Dzięki temu poszczególne mikrousługi mogą przyjąć model danych najlepiej dopasowany do ich potrzeb. | Dane są scentralizowane. |
| Małe, skoncentrowane zespoły. Równoległy i szybszy rozwój. | Wymagany jest duży zespół i znaczne zaangażowanie w jego zarządzanie. |
| Zmiana modelu danych jednej Mikrousługi nie ma wpływu na inne Mikrousługi. | Zmiana modelu danych ma wpływ na całą bazę danych. |
| Współpracuje z innymi mikrousługami za pomocą dobrze zdefiniowanych interfejsów. | Nie dotyczy. |
| Mikrousługi opierają się na zasadzie skupienia się na produktach, a nie projektach. | Kładzie nacisk na całość projektu. |
| Brak współzależności między bazami kodu. Możesz używać różnych technologii dla różnych Mikrousług. | Jedna funkcja lub program zależy od innych. |
Wyzwania związane z mikroserwisami
- Mikrousługi są od siebie zależne i muszą się ze sobą komunikować.
- W porównaniu z systemami monolitycznymi istnieje więcej usług do monitorowania, które są opracowywane przy użyciu różnych języki programowania.
- Jako że jest to system rozproszony, jest to z natury złożony model.
- Poszczególne usługi będą miały własne, odrębne mechanizmy, co spowoduje konieczność wykorzystania dużej ilości pamięci na nieustrukturyzowane dane.
- Aby zapobiec kaskadowemu narastaniu problemów, konieczne jest skuteczne zarządzanie i praca zespołowa.
- Odtworzenie problemu będzie trudnym zadaniem, jeśli zniknął on w jednej wersji i pojawił się ponownie w wersji najnowszej.
- Niezależne wdrażanie jest skomplikowane w przypadku mikrousług.
- Architektura mikrousług wiąże się z wieloma dodatkowymi operacjami.
- Trudno jest zarządzać aplikacją, gdy do systemu dodawane są nowe usługi.
- Do obsługi heterogenicznie rozproszonych mikrousług niezbędna jest szeroka gama wykwalifikowanych specjalistów.
- Mikrousługi są kosztowne, ponieważ do różnych zadań biznesowych trzeba utrzymywać inną przestrzeń serwerową.
SOA kontra mikrousługi
Usługi SOA są utrzymywane w organizacji przez rejestr, który działa jak lista katalogowa. Aplikacje muszą wyszukać usługi w rejestrze i wywołać je. Innymi słowy, SOA jest jak orkiestra, w której każdy artysta gra na swoim instrumencie, a dyrektor muzyczny wydaje wszystkim instrukcje.
Z drugiej strony, mikrousługi to forma architektury zorientowanej na usługi, w której aplikacje są budowane jako zbiór różnych mniejszych usług, a nie jako jedno oprogramowanie lub aplikacja. Mikrousługi są jak trupa, w której każdy tancerz jest niezależny i wie, co ma zrobić. Dzięki temu, jeśli pominie jakieś kroki, wie, jak wrócić do właściwej kolejności. Oto szczegółowe porównanie SOA i mikrousług.
| Parametr | SOA | Mikrosfery |
|---|---|---|
| Typ projektu | W architekturze SOA komponenty oprogramowania są udostępniane światu zewnętrznemu w celu wykorzystania w formie usług. | Micro Service jest częścią SOA. Jest to implementacja SOA. |
| Zależność | Jednostki biznesowe są zależne. | Są od siebie niezależni. |
| Rozmiar oprogramowania | Rozmiar oprogramowania jest większy niż jakiegokolwiek konwencjonalnego oprogramowania. | Rozmiar oprogramowania w mikrousługach jest zawsze niewielki. |
| Technologia stosu | Stos technologii jest niższy w porównaniu do Microservice. | Stos technologii mikrousług może być bardzo duży. |
| Charakter aplikacji | Monolityczna z natury. | Pełny stos w naturze. |
| Niezależny i skupiony | Aplikacje SOA są zbudowane do wykonywania wielu zadań biznesowych. | Są zbudowane do wykonywania jednego zadania biznesowego. |
| Rozlokowanie | Proces wdrażania jest czasochłonny. | Wdrożenie jest proste i mniej czasochłonne. |
| Opłacalność | Bardziej opłacalne. | Less opłacalne. |
| Skalowalność | Less w porównaniu do mikrousług. | Wysoce skalowalne. |
| Logika biznesowa | Komponenty logiki biznesowej są przechowywane w pojedynczej domenie usług, z prostymi protokołami komunikacyjnymi (HTTP z XML lub JSON) i interfejsem API obsługiwanym przez zestawy SDK/klientów. | Logika biznesowa może być realizowana w różnych domenach, przy czym pomiędzy usługami znajdują się warstwy na wzór korporacyjnej magistrali usług (Middleware). |
Narzędzia mikrousług
1) Wiremock: testowanie mikrousług
WireMock to elastyczna biblioteka do tworzenia zamienników i mockingu usług sieciowych. Umożliwia konfigurację odpowiedzi zwracanej przez API HTTP po otrzymaniu określonego żądania. Służy również do testowania mikrousług.
Download link: http://wiremock.org/
2) Okno dokowane
Docker to projekt open source, który pozwala nam tworzyć, wdrażać i uruchamiać aplikacje za pomocą kontenerów. Korzystając z tych kontenerów, programiści mogą uruchamiać aplikacje jako pojedynczy pakiet. Pozwala to na umieszczanie bibliotek i innych zależności w jednym pakiecie.
Download link: https://www.docker.com/
3) Hystrix
Hystrix to odporność na błędy Java Biblioteka. To narzędzie zostało zaprojektowane w celu oddzielenia punktów dostępu do zdalnych usług, systemów i bibliotek zewnętrznych w rozproszonym środowisku, takim jak mikrousługi. Usprawnia ono cały system poprzez izolowanie niesprawnych usług i zapobieganie kaskadowemu efektowi awarii.
Download Link: https://github.com/Netflix/Hystrix
Najlepsze praktyki mikrousług Architektura
- Osobny magazyn danych dla każdej mikrousługi.
- Utrzymuj kod na podobnym poziomie dojrzałości.
- Osobna kompilacja dla każdej mikrousługi.
- Zawsze traktuj każdy serwer jako bezstanowy.



