Poradnik dotyczący mikrousług: Co to jest, Architektura i przykład

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 dzielone są na najmniejsze, niezależne jednostki.

Co to jest monolityczny Architektura?

Mówiąc prościej, można powiedzieć, że architektura monolityczna przypomina duży pojemnik, w którym wszystkie komponenty oprogramowania aplikacji są umieszczone w jednym pakiecie.

Omówmy przykład sklepu eCommerce w kontekście architektury monolitycznej.

Monolityczny Architektura
Monolityczny Architecture aplikacji eCommerce

W każdej aplikacji e-commerce dostępne są pewne standardowe funkcje, takie jak wyszukiwanie, Revwidok i oceny oraz płatności. Funkcje te są dostępne dla klientów za pomocą przeglądarki lub aplikacji. Kiedy twórca witryny eCommerce wdraża aplikację, jest to pojedyncza jednostka monolityczna. Kod różnych funkcji, takich jak wyszukiwanie, Review i oceny oraz płatności znajdują się na tym samym serwerze. Aby skalować aplikację, musisz uruchomić wiele 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 z architekturą mikrousług. W tym przykładzie architektury mikrousług każda mikrousługa koncentruje się na pojedynczej zdolności biznesowej. Szukaj, oceniaj i Review i Payment mają swoje instancje (serwer) i komunikują się ze sobą.

Mikrosfery Architektura
Mikrosfery Architektura

W Monolicie Archikonstrukcji wszystkie elementy łączą się w jeden moduł. Ale w mikrousługach ArchiW swojej architekturze są one podzielone na poszczególne moduły (mikroserwisy), które komunikują się ze sobą, jak pokazano w powyższym przykładzie mikrousług.

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 tej architekturze Dane są stowarzyszone. Każda mikrousługa ma swój oddzielny magazyn danych. Następny w tym Java W samouczku na temat mikrousług poznamy różnice między mikrousługami a architekturą monolityczną.

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 usterek jest łatwa. Nawet jeśli jedna usługa przestanie działać, inna może nadal działać. Izolacja błędów jest trudna. Jeśli jakaś konkretna funkcja nie działa, cały system przestaje działać. Aby poradzić sobie z tym problemem, aplikacja musi zostać ponownie zbudowana, ponownie przetestowana, a także ponownie wdrożona.
Wszystkie mikrousługi powinny być luźno powiązane, aby zmiany wprowadzone w jednym nie wpływały na drugie. Monolityczna architektura jest ściśle powiązana. Zmiany w jednym module kodu wpływają na drugi
Firmy mogą wdrożyć więcej zasobów do usług generujących wyższy zwrot z inwestycji Ponieważ usługi nie są izolowane, indywidualna alokacja zasobów nie jest możliwa
Więcej zasobów sprzętowych można przeznaczyć na często używaną usługę. W powyższym przykładzie handlu elektronicznego większa liczba użytkowników sprawdza listę produktów i wyszukuje w porównaniu do płatności. Można zatem przeznaczyć więcej zasobów na mikrousługę wyszukiwania i list produktów. Skalowanie aplikacji jest trudne i marnotrawne.
Mikrousługi zawsze pozostają spójne i stale dostępne. Narzędzia programistyczne stają się przeciążone, ponieważ proces musi zaczynać się od zera.
Dane są stowarzyszone. Dzięki temu poszczególne mikrousługi mogą przyjąć model danych najlepiej dostosowany do swoich potrzeb. Dane są scentralizowane.
Małe skupione zespoły. Równoległy i szybszy rozwój Wymagany jest duży zespół i znaczny wysiłek w zarządzaniu zespołem
Zmiana modelu danych jednej Mikrousługi nie ma wpływu na inne Mikrousługi. Zmiana modelu danych wpływa na całą bazę danych
Współdziała z innymi mikrousługami za pomocą dobrze zdefiniowanych interfejsów Nie dotyczy
Mikrousługi działają na zasadzie skupiającej się na produktach, a nie projektach Połóż nacisk na cały projekt
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 polegają na sobie nawzajem i będą musiały 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.
  • Różne usługi będą miały swój odrębny mechanizm, co skutkuje dużą ilością pamięci na nieustrukturyzowane dane.
  • Skuteczne zarządzanie i praca zespołowa są niezbędne, aby zapobiec kaskadowemu rozprzestrzenianiu się problemów
  • Odtworzenie problemu będzie trudnym zadaniem, jeśli zniknął on w jednej wersji i powrócił w najnowszej wersji.
  • Niezależne wdrożenie jest skomplikowane w przypadku mikrousług.
  • Architektura mikrousług wiąże się z wieloma dodatkowymi operacjami.
  • Zarządzanie aplikacją jest trudne, gdy do systemu dodawane są nowe usługi
  • Do obsługi heterogenicznie rozproszonych mikrousług potrzebna 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 za pomocą rejestru, który działa jak lista katalogów. Aplikacje muszą wyszukać usługi w rejestrze i wywołać usługę.

W innym świecie, 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 pojedyncze oprogramowanie lub aplikacja.

Mikrousługi są jak trupa, w której każdy tancerz jest niezależny i wie, co musi zrobić. Więc jeśli pominą jakieś kroki, wiedzą, jak wrócić do właściwej kolejności. Teraz w tym samouczku dotyczącym architektury mikrousług poznajmy różnicę między SOA a mikrousługami.

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ż w przypadku 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 Charakter monolityczny 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 domenie pojedynczej usługi. Proste protokoły przewodowe (HTTP z XML JSON). API jest obsługiwane przez SDK/klientów. Logika biznesowa może działać w różnych domenach korporacyjnej magistrali usług, podobnie jak warstwy pomiędzy usługami oprogramowania pośredniczącego

Narzędzia mikrousług

1) Wiremock: testowanie mikrousług

WireMock to elastyczna biblioteka do stubbingu i kpin z usług sieciowych. Może skonfigurować odpowiedź zwracaną 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 typu open source, który pozwala nam tworzyć, wdrażać i uruchamiać aplikacje przy użyciu kontenerów. Korzystając z tych kontenerów, programiści mogą uruchamiać aplikację jako pojedynczy pakiet. Umożliwia dostarczanie bibliotek i innych zależności w jednym pakiecie.

Download link:https://www.docker.com/

3) Hystrix

Hystrix to biblioteka Java odporna na błędy. To narzędzie służy do oddzielania punktów dostępu do zdalnych usług, systemów i bibliotek innych firm w środowisku rozproszonym, takim jak mikrousługi. Poprawia cały system, izolując niesprawne usługi i zapobiegając kaskadowemu efektowi awarii.

Download Link:https://github.com/Netflix/Hystrix

Najlepsze praktyki mikrousług Architektura

  • Oddzielny magazyn danych dla każdej Mikrousługi
  • Zachowaj kod o podobnym poziomie dojrzałości.
  • Oddzielna kompilacja dla każdej usługi Micro.
  • Zawsze traktuj – surowo jak bezpaństwowca.

Podsumowanie

  • Mikrousługi to zorientowany na usługi wzorzec architektury, w którym aplikacje są tworzone jako zbiór różnorodnych, najmniejszych, niezależnych jednostek usługowych.
  • Mikrousługi Archiarchitektura to styl rozwoju architektonicznego, który pozwala na tworzenie aplikacji jako zbioru małych autonomicznych usług opracowanych na potrzeby określonej domeny biznesowej.
  • Architektura monolityczna przypomina duży pojemnik, w którym wszystkie komponenty oprogramowania aplikacji są umieszczone w jednym pakiecie
  • W Mikroserwisie każda jednostka całej aplikacji powinna być najmniejsza i powinna być w stanie dostarczyć jeden konkretny cel biznesowy
  • W architekturze monolitycznej duża baza kodu może spowolnić cały proces rozwoju. Nowe wydania mogą trwać miesiące. Utrzymanie kodu jest trudne
  • Dwa typy mikrousług to 1) bezstanowe 2) stanowe
  • Mikroserwisy w Java polegać na sobie nawzajem i będą musieli się ze sobą komunikować. Pomaga położyć nacisk na konkretną funkcję i potrzeby biznesowe
  • Architektura zorientowana na usługi, w skrócie SOA, to ewolucja rozproszonego przetwarzania oparta na modelu żądania lub odpowiedzi dla aplikacji synchronicznych i asynchronicznych
  • W SOA komponenty oprogramowania są wystawione na świat zewnętrzny w celu wykorzystania w formie usług, podczas gdy Micro Service jest częścią SOA. Jest to implementacja SOA
  • Wiremock, Docker i Hystrix to niektóre z popularnych narzędzi do obsługi mikrousług