Blog

Mikroserwisy

Mikroserwis to nowe podejście do budowy aplikacji. Uważa się je za panaceum na wszystkie wady rozwiązań monolitycznych. Ale czy na pewno?

Mikroserwis to termin określający architekturę aplikacji i sposób ich pisania. W odróżnieniu od monolitycznych rozwiązań, której poszczególne części zawierają się w samej aplikacji, mikroserwisy dzielą aplikację na mniejsze niezależne od siebie części, często pisane w przy użyciu różnej technologii.

Można porównać to do domu, gdzie „monolit” jest tradycyjnym podejściem do budowy a mikroserwis do budowy modułowej – „kontenerowej”. W tradycyjnym budownictwie zmiana jednego elementu, w większości wypadków ogranicza lub wyłącza z funkcjonowania cały dom. W budowie modułowej, np.: szpitale polowe, gdy jest potrzeba dodania lub wymiana jakiegoś elementu, dostarczane są one w całości, podłączone w miejsce starego lub powiększają całość budowli. W takim podejściu „szpital” może funkcjonować nawet w czasie dodawania lub wymiany modułu.

Historia

Pierwszym rozwiązaniem zbliżonym do mikroserwisów, była architektura zorientowana na usługi SOA ( Servcice Oriented Architecture). Rozbudowany system był dzielony na mniejsze współpracujące usługi połączone ESB (Enterprise Service Bus), która odpowiadała za komunikację. Niestety sama szyna przekształcała się w „monolit”, co mijało się z założeniami SOA.

Drugim ważnym terminem, który warto znać w nawiązaniu do mikorserwisów jest DDD (Domain Driven Design), która jest koncepcją tworzenia oprogramowania na podstawie prawidłowo odwzorowanych potrzeb biznesowych. W tym podejściu ważna jest komunikacja między zespołami produktowymi a biznesem. Podział na ekspertów domenowych, gdzie każdy ekspert odpowiada za domenę, którą się zajmuje oraz podejście iteracyjne do wytwarzania oprogramowania.

Za twórcę webserwiców uważa się Adriana Cockcrofta z Netflixa, który wyjaśnił koncepcję mikroserwisów w 2012. Oczywiście jest ona zaczerpnięta ze wspomnianego SOA ora DDD. Natomiast by mikroderwisy mogły zaistnieć, musiała pojawić się odpowiednia technologia, która wyeliminuje problem z ESB. Ta technologia przyszła w postaci „kontenerów”.

Co nam daje zastosowanie mikroserwisów?

  • Dzięki temu, że każdy moduł jest oddzielnym bytem, łatwiej jest zrozumieć jego zastosowanie, bez poznania całego systemu.
  • Można zastosować różne technologie, w zależności od potrzeby.
  • Awaria jednego modułu, nie wstrzymuje prac nad całą aplikacją.
  • Łatwo skalować i optymalizować takie rozwiązanie. Wystarczy skopiować dany moduł, bez potrzeby kopiowania całej aplikacji.

Wady mikroserwisów

  • Skomplikowane wdrożenie.
  • Wymaga zmian organizacyjnych.
  • Łatwe stworzenie aplikacji o zbyt dużej liczbie mikroserwisów.

Testy mikroserwisów

Testy mikroserwisów nie należą do najłatwiejszych. Możemy przetestować sam mikroserwis w oparciu o zaślepki lub całościowo w testach end to end. Testy integracji między modułami, są dość skomplikowane o czym możecie posłuchać więcej w podcaście: