Architektura mikrousług - odpowiedź na monolityczne tworzenie oprogramowania

Paulina Cirocka 14 września 2022 4 min czytania
Contents

Konteneryzacja była przełomem w świecie IT. Jednym z jej produktów było wprowadzenie architektury mikrousług. Czym są mikrousługi, jak mogą usprawnić rozwój oprogramowania i dlaczego są lepsze od tradycyjnych monolitycznych aplikacji? Dowiesz się tego z tego artykułu.

Czym są mikrousługi?

Mikrousługi są przeciwieństwem stylu architektury monolitycznej. Architektura aplikacji oparta na mikrousługach to zbiór niezależnie wdrażalnych, luźno powiązanych funkcjonalności. Zazwyczaj komunikują się one za pomocą HTTP/REST API. Komponenty mogą korzystać z różnych języków programowania, technologii i sprzętu, ale nadal współpracują ze sobą i można je zmieniać bez konieczności modyfikacji reszty aplikacji.

Jak to się zaczęło?

Trudno ustalić dokładną datę powstania mikrousług. Z pewnością możemy wspomnieć o wiceprezesie ThoughtWorks, Fredzie George’u, który zaczął pracować nad prototypem, wykorzystując zasady ustalone wcześniej przez Jeffa Baya. Głównym celem było ulepszenie SOA - service-oriented architecture. SOA była dobrą drogą dla nowoczesnego programowania, ale wymagała użycia tzw. Enterprise Service Bus (ESB) do komunikacji między mikrousługami. Ze względu na długie, skomplikowane procesy, takie jak routing, mapowanie i audyty, ESB stał się kolejną monolityczną aplikacją, która stale opóźniała procesy wdrożeniowe.

Kolejnym kamieniem milowym było wprowadzenie technologii chmurowych i konteneryzacji, które ulepszyły mikrousługi, czyniąc je bardziej elastycznymi. Aby zmniejszyć ich zależność od infrastruktury, zaprojektowano model Service Mesh. Pomaga on w komunikacji między mikrousługami, dzięki czemu zespoły programistyczne mogą skupić się na tworzeniu nowych funkcji zamiast dopasowywaniu projektu do infrastruktury.

Kobieta w okularach patrząca na linie kodu

Dlaczego warto używać mikrousług?

Mikrousługi są bezcenne w usługach chmurowych - lepiej sprawdzają się w architekturze serverless i mogą współpracować ze sobą nawet przy użyciu różnych języków i technologii. Inne zalety mikrousług to:

Stabilność

Aplikacje oparte na mikrousługach są przede wszystkim bezpieczne - programiści lub całe zespoły mogą pracować niezależnie nad pojedynczymi komponentami, a w przypadku błędu lub zmiany w kodzie, działania wymagane są tylko na jednym elemencie, bez wpływu na całą aplikację. Pozwala to również zespołom na eksperymentowanie i rozwijanie aplikacji w różnych językach programowania.

Oszczędność czasu

Dzięki niezależności, zmiany są mniejsze, ale wprowadzane znacznie częściej. Proces testowania i wdrażania jest łatwiejszy, więc czas między kolejnymi wydaniami jest krótszy, a liczba wdrożeń na dzień może znacznie wzrosnąć.

Prostota

Chociaż wdrożenie mikrousług wymaga dużo pracy od wysoko wykwalifikowanych programistów, złożoność systemu jest zmniejszona, co eliminuje niektóre błędy. Dobrze przygotowane mikrousługi są ponadczasowe, ponieważ mogą dynamicznie modyfikować system i wymuszać modularność.

Skalowalność

Zlokalizowanie najbardziej problematycznej mikrousługi i stworzenie większej liczby jej instancji prowadzi do lepszej skalowalności i efektywności całego systemu. Ta praktyka wymaga dobrze rozwiniętej kultury DevOps, ale rosnąca popularność narzędzi chmurowych zdecydowanie pomaga. Tutaj bardzo przydatne mogą być AWS ECS lub AWS EC2.

Co może pójść nie tak?

Jak wspomniano wyżej, korzystanie z mikrousług wymaga dobrze wyedukowanych programistów i dużej ilości czasu. Ogromna liczba małych elementów oznacza bardziej zaawansowaną infrastrukturę, która również wymaga dużo pracy zarządczej. Złożoność testowania jest większa w porównaniu do architektury monolitycznej. Ponieważ każda mikrousługa powinna być niezależna, oznacza to, że każda musi mieć swoją własną bazę danych. Dlatego programiści muszą zapewnić spójność danych między wieloma usługami.

Równania matematyczne

Kto używa mikrousług?

Najpopularniejszymi przykładami użytkowników mikrousług na świecie są PayPal, Uber i Netflix. Według Adriana Cockcrofta, Dyrektora ds. Inżynierii Web, a później Architekta Chmury w Netflix, obecnie szybkość wygrywa na rynku. Im szybciej poznajesz swoich klientów i dajesz im to, czego chcą, tym lepsza jest Twoja efektywność. Jesteś też zawsze o dwa kroki przed konkurencją. Według Cockcrofta, optymalizacja prowadzona głównie pod kątem efektywności spowalnia organizację. To był jeden z powodów wdrożenia mikrousług w Netflix.

Logo Netflix

Mikrousługi to styl architektoniczny, który zrewolucjonizował zarządzanie aplikacjami. Są opłacalne nie tylko w technologii, ale także w możliwościach biznesowych. Choć wymagają dużo pracy przy wdrożeniu i dobrze przygotowanego zarządzania danymi (innymi słowy, ze względu na markup operacyjny są łatwiejsze do stosowania w większych i dojrzałych środowiskach developerskich), w wielu przypadkach stają się nieocenionym stylem architektonicznym, który diametralnie zmienia proces tworzenia aplikacji.

microservices architecture monolithapps monolithapplications
paulina.webp
Paulina Cirocka
Marketing Specialist

Doświadczona specjalistka ds. marketingu, specjalizuje się w tworzeniu treści. Pracuje dla firm IT od 2019 roku. W Devopsity odpowiada nie tylko za zarządzanie marketingiem, ale także za employer branding.

Spis treści

Przeczytaj również:

Poprzedni post Następny post