Mikroserwisy – ecosystem #2

Created with Sketch.

Mikroserwisy – ecosystem #2

Każdy byt na ziemi istnieje w jakimś ekosystemie, mniej lub bardziej złożonym. Każdy z elementów danego ekosystemu oddziaływuje na pozostałe jego składowe w sposób pośredni lub bezpośredni jednocześnie przy tym go tworząc. Jak poszukamy w google możemy znaleźć wiele definicji pojęcia ecosystem, do mnie jednak najbardziej przemawia ta z wikiedii

„dynamiczny układ ekologiczny, na który składa się zespół organizmów połączonych relacjami troficznymi wraz ze środowiskiem przezeń zajmowanym, w którym zachodzi przepływ energii i obieg materii” (wikipedia)

No tak, ale co to ma wspólnego z architekturą mikro usługową? A ma tyle, że każda mikro usługa potrzebuje do swojego istnienie esocystemu, który pozwoli jej istnieć, komunikować się z innymi usługami i realizować zadania, do których została stworzona. Taki mikro usługowy świat można podzielić na następujące warstwy:

  1. Warstwa sprzętowa – warstwa najbardziej podstawowa, czyli:
    • Fizyczne maszyny – serwery, urządzenia sieciowe, bazy danych , infrastruktura dla gromadzenia logów i metryk
    •  System operacyjny – system zainstalowany na maszynie
    • Zarządzanie konfiguracją maszyn – np puppet , ansible
    • Monitoring hosta – monitorowanie parametrów zużycia zasobów na serwerze (np pamięć, wątki, cpu)
    • Logowanie sprzętowe – zbieranie i agregacja logów serwera
  2. Warstwa komunikacji – zawiera wszystkie elementy odpowiedzialne za komunikację w naszym ekosystemie tj:
    • Sieć
    • DNS
    • Message broker, Event Bus asynchroniczna komunikacja oparta o zdarzenia np RabbitMQ, Kafka
    • APIkaże udostępniane przez usługi API np Rest Api, GraphQl czy Soap
    • Serwis Discovery i Service Registry – np Eureka, Consul, Zookeeper 
    • Load-balancing – np Haaproxy, F5 
  3. Warstwa infrastruktury aplikacyjnej – są to tak naprawdę wszystkie narzędzia, serwisy które pozwalają nam wdrażać, monitorować, utrzymywać usługi, m.in:
    • Monitoring aplikacyjny – miejsce gdzie możemy zweryfikować czy nasz serwis działa poprawnie
    • System alertów
    • Logi aplikacyjne  – kibna, splunk,
    • Narzędzia wdrożeniowe – wszystkie skrypty, usługi służące wdrożeniu usługi (CI/CD, skrypty releasowe)
    • Config service
    • Repozytoria z kodem
    • Testy – definicje testów automatycznych i manualnych
    • Biblioteki / Narzędzia wspomagające developement w naszym ekosystemie
    • Audyt* – narzędzia wspierające proces audytowy
  4. Warstwa mikro usług
    1. Aplikacje
    2. Dokumentacja
    3. Metryki

Stworzenie od podstaw całego kompletnego środowiska dla mikro usług brzmi jak bardzo dużo pracy, pieniędzy i wiedzy. I tak jest jeżeli chcemy stworzyć wszystko „sami”. Dużo rzeczy możemy dostać z „paczki” korzystając z gotowych rozwiązań claud’owych, takich jak publiczne chmury np. AWS czy Google Cloud Platform. Są bardzo atrakcyjną i dopracowaną formą już istniejących mikro usługowych ecosystem’ów, z których każdy może korzystać.