Mikrousługi: nowoczesna architektura oprogramowania
Kontynuując temat ewolucji i zmian paradygmatów i metod pracy wydarzyło się w obszarze tworzenia oprogramowania, o którym ostatnio poruszyliśmy w artykułach pt „Rozwój oprogramowania: przegląd historyczny do dnia dzisiejszego”, „Interoperacyjność przez chmurę: jak to osiągnąć?” y „XaaS: Cloud Computing - Everything as a Service”, dzisiaj porozmawiamy Mikrousługi.
Mikrousługi to nowoczesna architektura oprogramowania, a nie API (interfejs programowania aplikacji) lub sama technologia, którą można zainstalować i używać. Architektury oprogramowania, znane również jako wzorce oprogramowania, są całkowicie obce językom programowania, ponieważ określają jedynie sposób, w jaki technologie powinny działać, a nie sposób ich implementacji.

Wprowadzenie
Mikrousługi można postrzegać jako ewolucję architektury SOA (architektura zorientowana na usługi), który prowadzi programistów do tworzenia bardziej modułowych aplikacji, które są funkcjonalne i autonomiczne, z dużą zdolnością do ponownego wykorzystania w efektywny sposób, jak to się dzieje w podobny sposób, gdy optymalizujemy użycie jakiegoś sprzętu, w którym tylko się rozwija to, co jest naprawdę potrzebne, zamiast niepotrzebnie rozwijać swój pełny potencjał.
Architektura mikrousług, w praktyce nie stał się tak rozpowszechniony jak w teorii, to znaczy jest lepiej znany niż używany. Jednak każdego dnia coraz więcej programistów wdraża go, ponieważ jest to model rozwoju oprogramowania poprawia czas, wydajność i stabilność zmiennych w projektach, w których jest stosowany. Poza tym jego prosta powiązana skalowalność sprawia, że jest on szczególnie przydatny w projektach, w których niezbędna jest zgodność między platformami (internet, urządzenia mobilne, urządzenia do noszenia, IoT).

Ale podczas gdy SOA jest architekturą wyższego poziomuczyli Architekturę, w której budowane są aplikacje oparte na usługach, gdzie usługa jest najmniejszą i najbardziej funkcjonalną jednostką pracy w ramach tworzonej aplikacji, Architektura mikrousług również pozwala nam tworzyć usługi, ale te usługi są zaprojektowane w bardzo mały i specyficzny sposób tak, aby spełniały bardzo precyzyjną i terminową funkcjonalność, w taki sposób, że można je oddzielić od reszty aplikacji i działać w sposób całkowicie autonomiczny od reszty aplikacji, w której została utworzona.

Czym są architektury oprogramowania (wzorce)?
Aby dobrze zrozumieć architekturę oprogramowania mikrousług, dobrze jest wiedzieć trochę o wszystkich najbardziej znanych istniejących architekturach oprogramowania. Istnieje wiele, jak widać na stronie oodesign lub po prostu w Wikipedia, ale według słynnej książki pt «Książka wzorów wzorów» (Książka wzorców projektowych) istniejące wzorce można sklasyfikować jako:
Kreatywne
Te, które zajmują się sposobami tworzenia instancji obiektów i których celem jest abstrakcja procesu tworzenia instancji i ukrycie szczegółów tworzenia lub inicjowania obiektów. W tej klasie są następujące:
- Fabryka abstrakcyjna
- Budowniczy
- Metoda fabryczna
- Prototyp
- Singel
Strukturalny
Te, które opisują, w jaki sposób można łączyć klasy i obiekty (proste lub złożone), tworząc duże struktury i dostarczając nowe funkcje. W tej klasie są następujące:
- Zasilacz
- Most
- Kompozyt
- Dekorator
- Fasada
- Flyweight
- lufka
comportamiento
Te, które pomagają nam zdefiniować komunikację i iterację między obiektami systemu. Celem tego wzoru jest zmniejszenie sprzężenia między obiektami. W tej klasie są następujące:
- Łańcuch odpowiedzialności
- Command
- Interpretator
- iteratory
- Mediator
- Memento
- Obserwator
- Miasto
- Strategia
- Metoda szablonu
- Gość
inni
Poprzednie wzorce projektowe wyrażały schematy definiujące struktury projektowe, za pomocą których można tworzyć systemy oprogramowania. Ale kiedy chcemy lepiej wyrazić podstawowy schemat organizacyjny i strukturalny tworzonych systemów oprogramowania, zwykle znajdujemy tę inną klasyfikację:
- Architektura łupkowa
- DAO: Data Access Object
- DTO: obiekt transferu danych
- EDA: Architektura sterowana zdarzeniami
- Niejawne wywołanie
- Nagie przedmioty
- Programowanie warstwowe
- Peer-to-peer
- Rurociąg
- SOA: Architektura zorientowana na usługi
- Trzy poziomy
Jest też „Model widoku kontrolera” który jest dobrze znany i używany i dzieli się na:
- Model / widok / kontroler
- Model / Widok / Prezenter
- Model / Widok / Prezenter z prezenterem modelu
- Model / Widok / Widok-Model
- Model / Widok / Prezenter z pasywnym widokiem
- Model / widok / prezenter z kontrolerem nadzorującym
Bycie „Model View Controller”, jeden z najbardziej znanych i obecnie wdrożonychjest niewystarczające, aby zapewnić wymagane funkcjonalności aplikacji korporacyjnej, a to jeden z głównych powodów, dla których Architektura mikrousług zastępuje model-widok-kontroler (MVC).

Zalety architektury mikrousług
Kiedy platforma internetowa korzysta z architektury mikrousług, ma zwykle następujące zalety:
- rozwiązać łatwo każdy problem lub problem przedstawiony przez zajęcie się każdą małą mikrousługą zaangażowaną w konkretną sytuację.
- Łagodzić Ogólne lub globalne awarie usług, ponieważ niepowodzenie mikrousługi nie wpływa na inne, ponieważ są one całkowicie niezależne.
- W celu ułatwienia uruchomienie i włączenie kompletnych lub określonych funkcjonalności lub usług, ponieważ każda Mikrousługa może być dodawana lub usuwana i aktualizowana oddzielnie i stopniowo.
- Aby być lepszym dostęp do aplikacji lub usług stworzonych ze wszystkich typów urządzeń i platform.
- Zwiększ wszechstronność platformy, ponieważ mikrousługi mogą być dystrybuowane na różnych serwerach i napisane w różnych językach.

Struktury Open Source
istnieje wiele opcje open source których programiści mogą używać do opracowywania rozwiązań, które są częścią architektur mikrousług. W szczególności dla języka Java, która jest szeroko stosowaną technologią do tego celu, są następujące:
- Krykiet
- Kreator kropli
- Mikroprofil Eclipse
- Helidon
- Golf
- Payara Mikro
- Graj
- Reszta
- Iskra
- Buty sprężynowe
- kabaczek
- Wywyższać się
- Teleobecność
- Dziki Cierniak
- zipkin

Przykłady sieci Web z architekturami mikrousług
Wśród dużej liczby witryn internetowych, które zapewniają usługi aplikacji na dużą skalę i stopniowo wdrażają architekturę mikrousług w celu poprawy utrzymania i skalowalności platformy usług i produktów, dzięki czemu jest prosta, skuteczna i szybka, możemy wymienić trzy główne w branży Czym oni są:
- Amazon
- Ebay
- Netflix

Wnioski
Jest jasne, że Mikrousługi wnoszą wiele do nowoczesnego tworzenia oprogramowania opartego na sieci WebAle oznaczają także zmierzenie się z wieloma nowymi wyzwaniami do rozwiązania. Problemy, które nie tylko mają związek z uczeniem się i wydajną pracą Framework, ale także z tym, jak te nowe rozwiązania są uzupełniane i wdrażane w działach IT, które w końcu są tymi, którzy umieszczają je online i zarządzają nimi, i mają głos przy podejmowaniu ostatecznych decyzji dotyczących każdego rozwoju. Ale Ta architektura jest tutaj i pozostała na długo.