Close

Mikrousługi: czym są i jakie przynoszą korzyści

Mniej więcej do 2013 roku firmy zwykle tworzyły oprogramowanie dla firm i organizacji, konstruując aplikacje jako pojedyncze jednostki z dużymi bazami kodów — architekturę monolityczną. Ponieważ oprogramowanie stało się bardziej złożone, a popularność zyskało przetwarzanie w chmurze, podejście to stało się mniej praktyczne.

Pojawienie się produktów typu oprogramowanie jako usługa (aplikacji dostarczanych w chmurze) pozwoliło firmom korzystać z usług dostawców, takich jak Amazon Web Services, do tworzenia nowych serwerów i szybkiego dodawania nadmiarowości. Dzięki temu usługi pozostawały online podczas aktualizacji. Zapoczątkowało to również nową erę prędkości i elastyczności. Użytkownicy zaczęli oczekiwać szybkich uaktualnień i ulepszeń, co skłoniło firmy do zmiany swoich procesów tworzenia oprogramowania.

Firmy zaczęły dzielić aplikacje na mniejsze, niezależne usługi lub mikrousługi. Na przykład zamiast umieszczać skrzynkę odbiorczą wiadomości na monolitycznej platformie e-commerce mogą utworzyć dla tej funkcji oddzielną mikrousługę.

Jednocześnie programiści zaczęli pracować w mniejszych, bardziej wyspecjalizowanych grupach, które modyfikowały i ulepszały poszczególne usługi bez ryzyka dla całej aplikacji. Grupy te często brały również odpowiedzialność za działanie swojego kodu — model ten nosi nazwę DevOps. Aby ułatwić te zmiany, kierownicy projektów zaczęli opracowywać nowe metodologie, takie jak Agile, która dzieli projekty na mniejsze, ale częstsze wydania.

Czytaj dalej, aby dowiedzieć się więcej o budowie aplikacji opartych na mikrousługach. Dowiedz się również, w jaki sposób narzędzie Compass firmy Atlassian ogranicza złożoność, umożliwiając jednocześnie programistom czerpanie korzyści z tego modelu architektury.

Mikrousługi to zbiór niewielkich jednostek, które umożliwiają ciągłe dostarczanie i wdrażanie dużych, złożonych aplikacji.

Czym są mikrousługi?


Mikrousługa to funkcja odpowiedzialna za pojedynczy element logiki (z wyjątkiem objaśnionych poniżej mikrousług domeny). Mikrousługi łączą się, tworząc aplikacje rozproszone, takie jak Jira Software.

Ilustracja mikrousług

Istnieją trzy rodzaje mikrousług:

  1. Mikrousługi domeny luźno łączą usługi z powiązaną funkcją.
  2. Mikrousługi integracyjne ułatwiają interakcję między niepowiązanymi aplikacjami.
  3. Mikrousługi jednostek pracy obsługują pojedyncze funkcje.

Mikrousługi współdziałają ze sobą za pomocą interfejsów programowania aplikacji (API). Programiści pracujący nad poszczególnymi usługami mogą poznawać wewnętrzne funkcjonowanie pozostałych mikrousług, co stanowi kolejną przewagę nad architekturą monolityczną.

Architektura oparta na mikrousługach oferuje wiele korzyści, ale jednocześnie zwiększa stopień złożoności. Dlatego firma Atlassian opracowała narzędzie Compass, które ma pomóc firmom ograniczać tę złożoność podczas zmiany skali. Ta platforma środowiska programistycznego gromadzi wszystkie informacje o wynikach prac inżynierskich i współpracy zespołowej w centralnej lokalizacji z możliwością wyszukiwania.

Kluczowe zasady dotyczące mikrousług


Architektura oparta na mikrousługach ma kilka charakterystycznych cech. Programiści mogą samodzielnie rozwijać i wdrażać swoje usługi, korzystając z języków i technologii dopasowanych do ich komponentów.

Komunikacja między mikrousługami jest oparta na interfejsie API, co umożliwia dostęp do danych z różnych źródeł bez modyfikacji. Poszczególne usługi można skalować w zależności od zapotrzebowania, co pozwala ograniczać koszty i zapewnić dostępność.

Te atrybuty sprawiają, że aplikacje rozproszone oparte na mikrousługach są elastyczne i łatwe w utrzymaniu.

W architekturze mikrousług każdy komponent można opracowywać, wdrażać, obsługiwać, zmieniać i wdrażać ponownie bez narażania działania innych usług czy integralności aplikacji.

Korzyści płynące z mikrousług


Mikrousługi mają wiele zalet. Upraszczają zarządzanie rozwojem i projektami. Czasami eliminują potrzebę tworzenia oddzielnych zespołów operacyjnych, ponieważ programiści mogą obsługiwać działanie tworzonych przez siebie mikrousług.

Niektóre inne zalety mikrousług:

Ilustracja wagi

Odporność i wyodrębnianie błędów

W architekturach monolitycznych jeden błąd wpływa na całą aplikację. Tymczasem mikrousługi są niezależne. Jedna awaria nie wpływa na pozostałe części aplikacji.

Ilustracja Agile

Agility

Dzielenie aplikacji na mniejsze części przyspiesza ich rozwój. Pozwala zespołom na szybsze tworzenie, testowanie i wdrażanie oprogramowania.

Ilustracja zestawu narzędzi

Różnorodność technologiczna

Mikrousługi pozwalają programistom wybierać narzędzia i technologie odpowiednie do zadania. Zwiększa to wydajność i produktywność.

Ilustracja wieży z klocków

Ulepszona konserwacja

Możliwość testowania poszczególnych komponentów ułatwia znajdowanie i naprawianie błędów bez przełączania całej aplikacji w tryb offline.

Wyzwania związane z mikrousługami


Architektura oparta na mikrousługach ma wiele zalet, ale rodzi również wyzwania.

Jednym z wyzwań związanych z mikrousługami jest to, że niezależne usługi generują dzienniki. Jest to wada w porównaniu ze scentralizowanymi dziennikami architektury monolitycznej, które zapewniają programistom i zespołom operacyjnym jedno źródło rzetelnych informacji. Bardziej skomplikowane są również monitorowanie oraz zarządzanie infrastrukturą, ponieważ istnieje wiele zmiennych. Problem stanowią testowanie i debugowanie, ponieważ w przeciwieństwie do architektury monolitycznej brakuje tu zintegrowanego środowiska programistycznego (IDE).

Compass firmy Atlassian może pomóc w poradzeniu sobie z tymi wszystkimi wyzwaniami. Narzędzie to ułatwia współpracę i pozwala firmom zarządzać złożonością architektur rozproszonych w miarę ich skalowania. Robi to przez gromadzenie niepowiązanych informacji w centralnej lokalizacji z możliwością wyszukiwania.

Niekontrolowany rozwój

Rezygnacja z architektury monolitycznej na rzecz mikrousług oznacza zwiększenie stopnia złożoności. Pojawia się więcej usług w większej liczbie miejsc, a do tego pracuje nad nimi więcej zespołów. Z tego powodu trudno jest określić, jak poszczególne komponenty są ze sobą powiązane, kto jest właścicielem danego komponentu oprogramowania i jak uniknąć negatywnego wpływu na działanie zależnych komponentów. Brak zarządzania niekontrolowanym rozwojem skutkuje wolniejszym tempem prac programistycznych i gorszą wydajnością operacyjną. W miarę rozwoju systemu konieczny staje się doświadczony zespół operacyjny, który będzie zarządzać ponownymi wdrożeniami i częstymi zmianami architektury.

Brak wyraźnej odpowiedzialności

W przypadku architektury mikrousług nie zawsze jest jasne, kto odpowiada za co. Zespół DevOps może korzystać z połączenia interfejsów API, bibliotek komponentów, narzędzi do monitorowania oraz obrazów Docker pozwalających użytkownikom wdrożyć aplikację. Ważny jest wgląd w informacje o komponentach, łącznie z ich właścicielami, zasobami i zmieniającymi się zależnościami między komponentami. Konieczna jest precyzyjna komunikacja i koordynacja pomiędzy licznymi zespołami, aby każda osoba biorąca udział w pracach mogła z łatwością dotrzeć do wiedzy, która jest potrzebna do zrozumienia produktu.

Wykładniczy wzrost kosztów infrastruktury

Każda nowa mikrousługa dodana do wdrożenia produkcyjnego generuje własny koszt związany z zestawem testów, podręcznikami wdrażania, infrastrukturą hostingową, narzędziami do monitorowania i nie tylko.

Zwiększone obciążenie organizacyjne

Aby koordynować wprowadzanie aktualizacji i użycie interfejsów przez zespoły zajmujące się architekturą mikrousług, potrzebny jest dodatkowy poziom komunikacji i współpracy.

Debugowanie

Debugowanie aplikacji obejmującej wiele mikrousług, z których każda ma swój zestaw dzienników, może być nie lada wyzwaniem. Jeden proces biznesowy może działać na wielu komputerach w różnym czasie, co rodzi dodatkowe komplikacje.

Reagowanie na incydenty

Ważne jest, aby mieć dane umożliwiające odpowiadanie na incydenty związane z mikrousługami, np. kto korzysta z danej mikrousługi, gdzie i w jaki sposób została ona wdrożona oraz z kim należy się kontaktować w razie problemów.

Do czego służy architektura mikrousług?


Duże witryny internetowe dla konsumentów często korzystają z setek lub tysięcy mikrousług. Mikrousługi są szczególnie pomocne w następujących przypadkach użycia i branżach:

  • Witryny e-commerce, takie jak eBay, używają oddzielnych mikrousług do koszyków, aplikacji mobilnych i przesyłania wiadomości.
  • Instytucje finansowe, takie jak Bank of America, wykorzystują mikrousługi do komunikacji z usługami zewnętrznymi. Używają ich również do obsługi funkcji, takich jak autoryzacja użytkowników i wyświetlanie transakcji.
  • Platformy mediów społecznościowych, takie jak Instagram i Facebook, używają mikrousług do wyświetlania użytkownikom kanałów informacyjnych, wiadomości, powiadomień i sieci znajomych.

Najlepsze praktyki dotyczące zarządzania mikrousługami


Przez lata programiści stworzyli dziesiątki niezbędnych najlepszych praktyk w zakresie rozwoju mikrousług. Poniżej podano kilka przykładów:

  • Zasada jednej odpowiedzialności (SRP) określa, że każdy moduł lub mikrousługa powinny mieć tylko jedną funkcję. Ciągła integracja (CI) SRP to metodologia kontroli kodu źródłowego, która automatyzuje kontrole jakości kodu przed jego włączeniem do projektu, przyspieszając proces przez wyeliminowanie potrzeby stosowania oddzielnego procesu zapewnienia jakości. Ta najlepsza praktyka DevOps sprzyja prędkości. CI poprzedza ciągłe dostarczanie (CD), które uruchamia zautomatyzowane narzędzia kompilacyjne w celu przygotowania oprogramowania do wdrożenia.
  • Bramy interfejsów API upraszczają komunikację między mikrousługami, zarządzają uwierzytelnianiem i autoryzacją oraz zwiększają bezpieczeństwo.
  • Asynchroniczna komunikacja między mikrousługami zachowuje autonomię, zmniejszając zależności, które mogą spowolnić działanie aplikacji.
  • Przechowywanie wersji mikrousług ma kluczowe znaczenie, gdy programiści wprowadzają zmiany powodujące niezgodność, takie jak usunięcie całej operacji. Ta praktyka zapewnia płynne zmiany statusu i minimalizuje prawdopodobieństwo zakłóceń w świadczeniu usług.

Oparty na systemie Jira Software zestaw narzędzi Open DevOps firmy Atlassian ułatwia zespołom automatyczną integrację narzędzi firmy Atlassian i jej partnerów, umożliwiając im skupienie się na tworzeniu i obsłudze oprogramowania.

Lepsze zarządzanie architekturą mikrousług dzięki platformie Compass


Compass firmy Atlassian to platforma programistyczna, która łączy rozproszoną architekturę oprogramowania i współpracujące zespoły w jednym miejscu. Zapewnia ona wygodny przegląd wszystkich komponentów i usług, nad którymi pracuje zespół. Zawiera również katalog komponentów oprogramowania, który ułatwia programistom znalezienie tego, czego potrzebują.

Ilustracja mikrousług

Compass umożliwia łatwe zarządzanie komponentami, śledzenie własności i monitorowanie relacji. Śledzi również zmiany w czasie rzeczywistym.

Zintegrowanie platformy Compass ze środowiskiem programistycznym jest proste dzięki konfigurowalnemu interfejsowi użytkownika i kompatybilności z narzędziami własnymi i narzędziami innych firm. Dowiedz się, jak zarządzać architekturą mikrousług za pomocą platformy Compass oraz jak łączy ona niepowiązane informacje w ujednoliconej, centralnej lokalizacji.

Mikrousługi: często zadawane pytania


Jakich narzędzi powszechnie używa się w mikrousługach?

Firmy często używają narzędzi do konteneryzacji, takich jak Kubernetes i Docker. Przeważnie korzystają również z bram interfejsów API między mikrousługami a ich klientami. Bramy te realizują funkcje ruchu przez interfejsy API, takie jak uwierzytelnianie, kontrola dostępu i równoważenie obciążenia.

Czym różnią się mikrousługi od architektury monolitycznej?

Rozwiązania monolityczne to duże bazy kodów funkcjonujące jako jeden system. Wymagają przestojów systemu w celu aktualizacji i debugowania. Architektury mikrousług to aplikacje rozproszone o mniejszych, niezależnych funkcjach. Programiści mogą aktualizować, ulepszać i debugować te moduły bez przełączania całej aplikacji w tryb offline. Upraszcza to skalowanie i przyspiesza rozwój oprogramowania.

Jak mikrousługi wpływają na DevOps?

Osoby znające DevOps wiedzą, że ciągła integracja i ciągłe dostarczanie (pipeline CI/CD DevOps) stanowią podstawy metodologii DevOps. Modułowy charakter mikrousług idealnie pasuje do tego podejścia. Mikrousługi umożliwiają programistom szybkie i częste tworzenie, testowanie i wdrażanie małych wydań.

Dołącz do społeczności Atlassian, aby uzyskać dostęp do większej ilości artykułów i dyskusji o mikrousługach.

Zarządzanie mikrousługami za pomocą rozwiązania Compass

Podczas pracy z architekturą mikrousług rozwiązanie Atlassian Compass pozwala zarządzać złożonością skalowanej architektury rozproszonej. Jest to rozszerzalna platforma środowiska programistycznego, która w centralnej lokalizacji z możliwością wyszukiwania łączy niepowiązane informacje o wynikach prac inżynierskich i współpracy zespołowej. Oprócz pomocy w uporaniu się ze wzrostem liczby mikrousług dzięki katalogowi komponentów rozwiązanie Compass ułatwia ustalenie najlepszych praktyk i pomiar kondycji oprogramowania przy użyciu kart wyników oraz zapewnia dane i analizy dotyczące całego zestawu narzędzi DevOps za pomocą rozszerzeń opartych na platformie Atlassian Forge.

Compass — ilustracja mikrousług