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: