Mikroserwisy! Ej, a frontend?

Mikroserwisy

Od jakiegoś czasu zaczynając praktycznie każdy projekt programiści zastanawiają się od razu nad architekturą rozwiązania i jakie mikroserwisy powstaną. Nie mówię, że wszyscy, ani że to dobrze - po prostu to zaobserwowałem. Monolityczne rozwiązania stają się coraz rzadsze.

Dlaczego tak się dzieje? Myślę, że mamy doczynienia z pewnego rodzaju modą. Mikroserwisy są świetnym rozwiązaniem przy dużych systemach, ale wymuszają też specyficzny rodzaj pracy. Aplikacja nie wystarczy że działa, czy robi swoje, musi być też bezstanowa, działać na wielu instancjach. Toczą się również spory o rozmiar, bo rozmiar ma znaczenie jak głosi stare prawidło. A są też inne problemy - często się zdarza że zamiast architektury mikroserwisów wychodzi nam monolit ale na wielu maszynach - taki rozproszony.

Główne korzyści
  • Kiedy biznes przychodzi i pragnie wielkich zmian - łatwiej usunąć serwis i napisać go od nowa zamiast dostosowywać wielką aplikację do zmian
  • Nad małymi jednostkami kodu łatwiej zapanować, łatwiej wejść do projektu
  • Skalowanie horyzontalne
  • Funkcjonalności są wdrażane niezależnie
  • Mogą być dużo łatwiej wdrażane
  • Mogą nad nimi pracować różne zespoły, używając różnych technologii
  • Łatwe testowanie pojedyńczej funkcjonalności
Główne wady
  • Duża złożoność całości systemu
  • Komunikacja między zespołami jest trudna
  • Marnujemy dużo mocy na komunikację - zarówno międzyludzką, jak i międzyserwisową
  • Konieczność zaawansowanego systemu logowania, monitoringu, kolejkowania eventów itd.
  • Utrudnione testowanie systemowe - zarządzanie wersjami, ich kompatybilnością itd.
  • Dbanie przez programistów o bezstanowość, idempotentność
  • Bardziej skomplikowana infrastruktura sprzętowa/sieciowa

Dużo tych wad

Pomimo wielu wad, choć zalet też jest niemało - ludzkość idzie w tę stronę. Oczywiście ma to sens! Ma sens ale przy dużych projektach, gdzie złożoność na prawdę jest olbrzymia i jeden umysł nie byłby w stanie nad wszystkim zapanować. SRP na poziomie usługi jest w stanie znacznie zredukować ilość rzeczy do ogarnięcia na raz, a i kod jest prostszy.

No i backendowcy bardzo fajnie to sobie wymyślili. Logika rozproszona, SRP, skalowanie i w ogóle, różne teamy pracują nad różnymi rzeczami. Ekstra.

A wy frontendy gińcie!

Mikroserwisy, a frontend

No właśnie. Ktoś tu chyba zapomniał o frontendzie. Tu mamy wielkie rozproszone cudo, a dla frontu zróbmy warstwę agregacyjną i niech sobie z tym poradzą.

Pisałem gdzieś wyżej że jeden człowiek nie ogarnąłby całego systemu, dlatego mikroserwisy są takie fajne - a frontendy muszą! Oczywiście ktoś zaraz powie że nie na takim głębokim poziomie wtajemniczenia, ale jednak!

Nie zdarzyło się Wam nigdy, że zespół odpowiedzialny za frontend "źle" skorzystał z waszego API? W ogóle wiecie co się tam dzieje na tym frontendzie?


Pewnie demonizuję i akurat Wasze API świetnie jest wykorzystywane, świetnie się dogadujecie z tym hipsterskim teamem od CSSów i nigdy nie macie żadnych opóźnień z tego powodu. A może nie? Chętnie zapoznałbym się z waszymi doświadczeniami.
Close Menu