Tylko teraz 35% rabatu na hasło #DEV. Gwarancja Pracy lub Stażu gratis i wygodne finansowanie — nawet 40 rat 0%. Kto pierwszy, ten lepszy!
← Blog

Mikroserwisy w Javie - czym są i kiedy warto je stosować?

Marek Zoellner · 08.08.2022

Mikroserwisy to bardziej dojrzałe podejście do tworzenia architektury oprogramowania, gdzie cały program składa się z mniejszych, niezależnych elementów komunikujących się ze sobą. Dzięki nim możemy zdekomponować tradycyjną, monolityczną aplikację na zwinne mikroserwisy i umieścić je w chmurze.

W kilku zdaniach można to wyjaśnić w ten sposób: monolit (ang. monolithic application) jest to system, który został stworzony w ramach jednej aplikacji. Z reguły systemy takie definiowane są jako systemy samowystarczalne i pozbawione modularności, realizujące wiele funkcji z różnych dziedzin biznesu - kolokwialnie mówiąc - wielki klocek odpowiedzialny za wszystko.

Architektura mikroserwisów jest zaś architekturą systemu rozproszonego, gdzie cały system składa się z wielu odseparowanych od siebie komponentów, a każdy z tych komponentów jest odpowiedzialny za pewną domenę funkcjonalności. Taki pojedynczy komponent nazywamy mikroserwisem (ang. microservice). To niewielkich rozmiarów aplikacje udostępniające specjalny zestaw usług.

Zalety mikroserwisów:

  • odporność na awarię i wpływ działania pojedynczego komponentu na dostępność innych usług,
  • do tworzenia oprogramowania systemu możemy zastosować różne technologie i różne sposoby komunikacji wewnątrz systemu - REST, kolejki itp.,
  • przez wzgląd na to, że pojedynczy mikroserwis powinien być niewielką aplikacją, programiści powinni mieć niski próg wejścia, aby wprowadzać zmiany. Wdrożenie nowej wersji oprogramowania zwykle będzie ograniczać się do zrobienia deploy’u konkretnego mikroserwisu.

Są oczywiście i wady, takie jak: utrudniona analiza logów, problem z transakcyjnością, a także fakt, że zwykle jeden zespół pracuje nad kilkoma (1-5) mikroserwisami, a pozostałe zespoły nad kolejnymi, co powoduje problemy z utrzymaniem tej samej jakości i jednolitych technik pisania kodu.

Mikroserwisy z perspektywy Java Developera

Sporo artykułów na temat mikroserwisów można znaleźć w portalu Bulldogjob. W jednym z nich

również czytamy, że dzięki nim:

“(...) nowy developer dołączający do zespołu skupiony na pojedynczym serwisie może szybciej rozpocząć prace implementacyjne - mniejsza baza kodu źródłowego, łatwiejszy do testowania. Dzięki temu, że każdy serwis może być ‘wydawany’ niezależnie od pozostałych, możemy sobie pozwolić na wydawanie kolejnych wersji z większą częstotliwością. Ponadto nie jesteśmy uwiązani jednym zestawem technologii – tworząc następny serwis możemy adoptować nowe technologie.”

Inny tekst potwierdza, że choć rozproszona architektura w oparciu o mikroserwisy to rozwiązanie bardziej skomplikowane niż monolit i wymagające większej ilości pracy i uwagi (zarówno na etapie projektowania, jak i wdrażania), zapewnia ona jednak wysoką skalowalność oraz odporność na awarie.

“Z pewnością jest to dobre rozwiązanie dla firm, które szybko potrzebują wdrażać nowe zmiany, skalować swój biznes i pozwolić na autonomiczny, równoległy rozwój wielu jego gałęzi. Jeżeli jednak istnieje potrzeba szybkiego i tańszego uruchomienia mniej skomplikowanego projektu, to monolit nadal jest opcją do rozważenia” .- czytamy

Przeczytaj również:

Mikroserwisy - oferty pracy dla programistów

Ofert pracy, w których można znaleźć wymagane doświadczenie związane z architekturą mikroserwisową, nie brakuje. Dotyczy to zarówno developerów z wieloletnim stażem i umiejętnościami na wysokim poziomie, midów/regularów, jak i juniorów.

Oto jedna z przykładowych ofert z Bulldogjoba dla juniora z minimum rocznym komercyjnym doświadczeniem w obszarze Java. Fragment opisu z oferty:

“W zależności od wymagań klienta biznesowego będziesz zaangażowany w rozwój architektury opartej o mikroserwisy i hostowanej w chmurze (np. AWS, GCP, Azure).”

Poza doświadczeniem wymagano:

  • Praktycznego doświadczenia w wykorzystaniu podstawowych funkcjonalności frameworka Spring (np. Spring Boot/Hibernate).
  • Płynnego posługiwania się językiem angielskim. Umiejętności pracy z platformą Docker.
  • Znajomości platformy Kubernetes.
  • Doświadczenia/znajomości rozwiązań chmurowych: AWS, Azure, GCP. Znajomości procesów CI/CD.

W innym ogłoszeniu, tym razem w portalu Just Join IT, od juniora wymaga się 1-2 lat doświadczenia jako Fullstack Developer zorientowany w obszarze Java, na drugim miejscu wśród wymagań wymieniono zaś właśnie znajomość architektury mikroserwisowej. Trzeba mieć też doświadczenie z AWS oraz znać Java Spring Boot i J2EE.