Mikroserwisy wyrastają jak grzyby po deszczu, i to deszczu, nomen omen, lecącym z chmury obliczeniowej. Popularność technologii chmurowych sprawia, że monolityczna struktura tworzenia aplikacji traci swoje pierwotne znaczenie na rzecz zwinnej architektury mikroserwisów. Z tego artykułu dowiesz się jak dzięki nim (a może z ich winy?) zmienia się podejście do UX.
Czym są mikroserwisy?
Zanim je właściwie przedstawimy, zobaczmy, w jaki sposób tworzono oprogramowanie przed nastaniem ery mikroserwisów. Były to rozwiązania monolityczne, nad którymi pracowały często wieloosobowe zespoły developerów. Poszczególne osoby odpowiadały za różne części oprogramowania, które były jednak ściśle powiązane. Sprawiało to, że w przypadku awarii jednego z komponentów, cały program przestawał poprawnie funkcjonować, przynajmniej do momentu wykrycia źródła problemu. Jeżeli aplikacja działała bez zarzutu, ale wymagała aktualizacji, to również wprowadzenie zmian w kodzie w jednej z jej części mogło sprawić, że całość stawała się chwilowo niedostępna. Mikroserwisy rozprawiły się z tymi ograniczeniami.
Droga od Service Oriented Architecture (SOA) do mikroserwisów
Zanim powstały mikroserwisy w formie, w jakiej znamy je dzisiaj, próbowano poradzić sobie z powyższymi problemami za pośrednictwem architektury zorientowanej na usługi, czyli SOA (Service Oriented Architecture). Poszczególne usługi musiały się ze sobą komunikować. Służyła do tego szyna integracyjna — ESB (Enterprise Service Bus). Niestety to rozwiązanie nie było zbyt wydolne, przynajmniej w początkowym okresie. Wraz z popularyzacją technologii konteneryzacji okazało się, że te wydzielone, ale współpracujące ze sobą zasobniki można z dużą skutecznością wykorzystywać w środowisku chmurowym. Kolejnym przełomem było wykorzystanie oprogramowania do konteneryzacji, np. Google Kubernetes Engine, które bez problemu mogło zarządzać większą ilością kontenerów.
Konteneryzacja gwałtownie zyskuje na popularności. Według niektórych przewidywań, ich rynek osiągnie wartość 12 miliardów dolarów do 2028 roku, przewyższając nawet rozwój samych maszyn wirtualnych. Kontenery stoją za popularyzacją architektury mikroserwisów, z którymi idą w parze.
Mikroserwisy to osobne części tej samej aplikacji, a nawet więcej, to styl tworzenia architektury aplikacji podzielonej na wiele modułów. W odróżnieniu jednak od monolitów zmiana jednego modułu nie zaburza pracy pozostałych. Kontenery pozwalają sprawnie zarządzać mikrousługami.
Zalety mikroserwisów
Podstawową zaletą mikroserwisów jest wspomniana wcześniej niezależność, która idzie w parze z wolnością wyboru oprogramowania i sprzętu. Mikroserwisy pomagają zespołom developerskim przestrzegać zasad projektowania SOLID, poprawiają skalowalność projektów, sprawiają, że wdrażanie nowych produktów na rynek jest dużo szybsze, a to pozwala oszczędzić sporo kosztów. Z mikrousługami związane są też szybsze cykle rozwojowe, a same izolowane usługi stają się łatwiejsze do debugowania oraz konserwacji. Na koniec tej litanii zalet warto dodać, że otwarcie na nowoczesne technologie, czyli właśnie konteneryzację i przetwarzanie w chmurze sprawia, że mikroserwisy cieszą się wciąż rosnącą popularnością.
Powody, dla których warto rozważyć mikroserwisy:
- Lepsza skalowalność,
- Skuteczna migracja i aktualizacja,
- Korzyści z działania zwinnego (agile),
- Szybsze wprowadzanie rozwiązań na rynek,
- Optymalizacja czasu wdrożenia i rozwoju,
- Większe bezpieczeństwo i niezawodność działania,
- Atrakcyjna forma dla programistów rozwijających produkt.
Jak się mają mikroserwisy do UX?
Od strony front-endu mikroserwisy spełniają kluczową funkcję wpływającą na UX. W spójny sposób łączą różne technologie, dostarczane przez wiele złożonych zespołów oraz pozwalają na łatwą skalowalność. Zalety, które przekonują kolejne zespoły developerów do przerzucania się na mikroserwisy to mniejsza liczba groźnych awarii.
Moment, w którym aplikacja rozrasta to się do sporych rozmiarów jest często punktem zwrotnym. Początkowy zamysł autorów na funkcje jakie ma ich rozwiązanie spełniać, miesza się z wrażeniami użytkowników. Spływający feedback, zarówno co do elementów wymagających poprawy, jak i brakujących funkcjonalności skłania twórców aplikacji do wprowadzania zmian. Jeżeli całość jest tworzona w oparciu o mikroserwisy, takie zmiany nie powodują uciążliwych dla użytkowników przerw w działaniu, czy braku spójności. Ponieważ każdy z nich działa osobno, możliwe jest zastosowanie innych, nowych rozwiązań programistycznych, które w przypadku monolitu mogą być trudne, lub niemożliwe do wprowadzenia.
Mikroserwisy a Google Cloud
Wspomnieliśmy na samym początku o chmurze obliczeniowej i na koniec warto do niej jeszcze raz wrócić, a to w kontekście wad mikroserwisów. Opisywanie ich tylko z perspektywy samych korzyści nie byłoby uczciwe. Do często wymienianych wad należą problemy z przesyłaniem wiadomości pomiędzy usługami — tu może szwankować kwestia wydajności związanej np. z opóźnieniami sieci, czy przetwarzaniem wiadomości.
Chmura obliczeniowa może być odpowiedzią na obawy, wynikające z opisanych powyżej wad, gdyż znika kwestia latencji. Aby dowiedzieć się więcej o zarządzaniu kontenerami w chmurze, testowaniu aplikacji, namierzaniu i rozwiązywaniu błędów oraz optymalizowaniu odwiedź stronę oficjalnego partnera Google Cloud - FOTC.
Jeżeli myślisz, że mikroserwisy mogą być rozwiązaniem twoich bolączek, albo już z nich korzystasz, jednak potrzebujesz bezpiecznego i sprawdzonego środowiska chmurowego, to koniecznie poproś o projekt Proof of Concept. Powodzenia! |