Dołącz do Governautów, zarejestruj się
Załóż konto
Reklama

Drogi użytkowniku!
Wygląda na to, że używasz rozszerzenia blokującego reklamy.
W Governice nie stosujemy nachalnych reklam. Możesz bezpiecznie odblokować je na naszej stronie ;-)
Zarządzanie jakością IT, systemy informatyczne, oprogramowanie biznesowe i inżynieria oprogramowania – to przykładowe zagadnienia, którym poświęcony jest dział Zarządzanie informatyką. Z haseł i artykułów można dowiedzieć się także o nadzorze IT, interakcji człowieka z komputerem czy wsparciu użytkowników IT.
Mikrousługa ang. Microservices
Mikrousługa - niewielka, autonomiczna usługa zapewniająca jedną, konkretną funkcjonalność, posiadająca lekkie interfejsy (takie jak np. http) pozwalające jej współpracować z innymi mikrousługami.
Podstawowe cechy
- niewielkie, dzięki czemu wprowadzanie zmian jest łatwe i obarczone małym ryzykiem. Jon Eaves z firmy RealEstate.com.au z Australii uważa, że kod mikrousługi można przepisać w dwa tygodnie, co odpowiada czasowi trwania przeciętnego sprintu, podczas którego Zespół powinien dostarczyć działający fragment kodu.
- autonomiczne, co oznacza, że każda jest odrębnym podmiotem, czyli może być wdrożona jako odizolowana usługa w ramach infrastruktury PaaS (ang. Platform as a Service) lub może być procesem systemu operacyjnego. Mikrousługi muszą pozwalać na wprowadzanie zmian niezależnie od innych usług oraz pozwalać na odrębne wdrażanie — bez konieczności zmiany konsumentów.
- zdecentralizowane, czyli nie ma scentralizowanego zarządzania mikrousługami, co powoduje, że każda z nich może być przygotowana w innym języku programowania oraz może używać innej technologii przechowywania danych.
Przesłanki koncepcji mikrousług
- projektowanie tematyczne (ang. domain-driven design — DDD) modelowanie oparte na reprezentowaniu w kodzie rzeczywistego świata;
- ciągłe dostarczanie (ang. continuous delivery) czyli skuteczne i wydajne wdrażanie tworzonego oprogramowania;
- struktury sieciowe – komunikowanie się maszyn oparte na koncepcji WWW;
- architektura sześciokątna – jako alternatywa architektury warstwowej, pozwalającej ukryć logikę biznesową;
- wirtualizacja na żądanie – platformy pozwalające na konfigurowanie i i zmianę rozmiarów maszyn;
- automatyzacja infrastruktury;
- małe, autonomiczne zespoły odpowiedzialne za pełny cykl życia swoich produktów;
- elastyczne systemy (ang. antifragile), które można obecnie budować w dużej skali.
Korzyści biznesowe
- obniżenie kosztów nawet o 60%;
- zwiększenie tempa pracy nad wprowadzaniem nowych rozwiązań (produktów i usług);
- nawet 10-krotnie bardziej efektywne wykorzystanie infrastruktury IT;
- redukcja czasu potrzebnego na wprowadzenie rozwiązania na rynek (Time to Market)
- sprawne dopasowanie się do zmian i potrzeb rynku.
Mikrousługa jako styl architektoniczny
- złożony kod, w którym wprowadzanie zmian jest trudne i wiąże się z dużym ryzykiem,
- konieczność tworzenia rozległej dokumentacji pozwalającej na utrzymanie przez duże zespoły,
- narastający w miarę rozwoju systemu brak spójności kodu,
- konieczność rygorystycznego przestrzegania standardów (rygorów) ustalonych na początku,
- współzależność, czasami niezamierzona, fragmentów kodu odpowiedzialnych za różne funkcjonalności, która musi być uwzględniana przy rozwoju systemu.
Podstawowymi korzyściami stylu opartego o mikrousługi są:
- skalowalność,
- autonaprawa,
- wykrywanie usług,
- pełna automatyzacja,
- niewymagające utrzymanie, a nawet brak konieczności utrzymania (NoOps/ZeroOps).
Przewagi mikrousług nad architekturą monolityczną
Architektura monolityczna
- Miesiące spędzone przez programistów na nauce kodu
- Ryzyko znacznej przebudowy aplikacji podczas wprowadzania zmian do kodu
- Ograniczenia w wykorzystaniu różnych języków programowania
- Długi proces budowy aplikacji
- Długi okres testowania
- Złożona struktura zespołu pracującego nad aplikacją, brak jasnej odpowiedzialności
- Wydajność serwerów wykorzystywana jedynie w kilku procentach • Szybkie przyswojenie kodu dzięki podziałowi na mniejsze elementy
Architektura oparta o mikrousługi
- Sprawne identyfikowanie i rozwiązywanie problemów bez konieczności przebudowy aplikacji
- Możliwość wykorzystania różnych technologii
- Skrócony do minimum cykl produkcyjny
- Automatyczne testowanie, poprawa wydajności i jakości
- Praca w mniejszych bardziej produktywnych zespołach deweloperskich
- Zoptymalizowanie wykorzystania serwerów
Komunikacja między mikrousługami
Cała komunikacja pomiędzy mikrousługami odbywa się za pośrednictwem wywołań sieci. To pozwala wymusić podział między mikrousługami i unikać niebezpieczeństw związanych ze zbyt ścisłymi sprzężeniami.
Mikrousługa udostępnia interfejs programowania aplikacji (API), przez który komunikują się z nią usługi współpracujące. Aby dobrze rozdzielić interfejsy API, należy właściwie zamodelować usługi oraz odpowiednio zaprojektować interfejsy API.
Filozofia mikrousług jest zbieżna z modelem, który Gartner określił mianem Gospodarka API (ang. API Economy).
Mikrousługi a DevOps
Wykorzystanie mikrousług wymaga podejścia continuous delivery czyli kompletnej automatyzacji i optymalizacji procesów dostarczania, które odbywa się ustawicznie, a nie w rocznych, półrocznych czy w najlepszym przypadku kwartalnych cyklach. Programista zasila repozytoria, narzędzia same kojarzą właściwe wersje kodów i środowisk, przeprowadzają różnego rodzaju testy w tym wydajnościowe i regresyjne. Następnie następuje integracja kodów, która również jest procesem ciągłym, to znaczy w dużym uproszczeniu, znika część ograniczeń związanych z oczekiwaniem propagowanej wersji kodu na właściwe środowisko integracyjne a tym samym skraca się czas do przejścia na produkcje. Ten ostatni etap również może nastąpić automatycznie – choć jak pokazują doświadczenia – zwykle zachowujemy dozę zdrowego rozsądku i ostatecznie czekamy na decyzję ludzką. (źródło: Krzysztof Waszkiewicz: "Mikrousługi, jako podstawa aplikacji trzeciej generacji", ITwiz.pl, 14 grudnia 2015 r.)
Mikrousługi versus SOA
Bibliografia
- Microservices na Wikipedia en
- O’Reilly: Budowanie mikrousług, Wyd. Helion, 2015 r.
- Andrzej Sobczak: Mikrousługi (Microservices) – faktyczna nowość, czy kolejny buzzword?, ArchitekturaKorporacyjna.pl
- Krzysztof Waszkiewicz: Mikrousługi, jako podstawa aplikacji trzeciej generacji, ITwiz.pl, 14 grudnia 2015 r.
- Tomasz Kowalczyk: "Architektura mikrousług", Computerworld.pl, 28.01.2015
- Onwelo Microservices Lab
ostatnia modyfikacja 14 grudnia 2016 r.