Architekt systemówProgramista Backend

Czym jest architektura mikroserwisów i jakie są jej zalety i wady?

Zdaj rozmowy kwalifikacyjne z asystentem AI Hintsage

Odpowiedź.

Architektura mikroserwisów — podejście do budowy systemów oprogramowania, w którym aplikacja składa się z małych, izolowanych serwisów, z których każdy odpowiada za określone zadanie biznesowe, jest rozwijany i wdrażany niezależnie od innych.

Zalety:

  • Skalowalność: każdy serwis można skalować oddzielnie.
  • Niezależność rozwoju: różne zespoły mogą szybko rozwijać oddzielne serwisy.
  • Odporność na awarie: awaria jednego serwisu nie prowadzi do awarii całego systemu.

Wady:

  • Złożoność zarządzania: wymaga konfiguracji interakcji, monitorowania, równoważenia obciążenia.
  • Złożoność wdrożenia: wiele serwisów trudno jest skoordynować.
  • Wzrost kosztów komunikacji: serwisy komunikują się przez sieć, co zwiększa opóźnienia i wymaga niezawodnej integracji.

Przykład makiety mikroserwisu w Pythonie (Flask):

from flask import Flask, jsonify app = Flask(__name__) @app.route('/user/<int:user_id>') def get_user(user_id): return jsonify({"user_id": user_id, "name": "Ivan"}) if __name__ == "__main__": app.run(port=5001)

Kluczowe cechy:

  • Każdy serwis to samodzielna aplikacja.
  • Łatwo wdrażać nowe technologie lub języki dla różnych serwisów.
  • Wymagana jest obsługa błędów interakcji sieciowych i zapewnienia spójności danych.

Pytania z pułapką.

Czy mikroserwisy mogą działać w jednej bazie danych?

Jest to dopuszczalne na etapie migracji z monolitu, ale sprzeczne z ideologią, ponieważ każdy serwis powinien przechowywać swoje dane osobno, aby zminimalizować zależności i zapewnić niezależność rozwoju.

Czy konieczne jest używanie Dockera w architekturze mikroserwisów?

Nie, Docker ułatwia wdrażanie i izolację, ale mikroserwisy można zrealizować także bez konteneryzacji, korzystając na przykład z maszyn wirtualnych lub nawet oddzielnych fizycznych serwerów.

Co się stanie, jeśli kontrakt API między serwisami zostanie złamany, ale w pipeline CI/CD wszystko jest zielone?

Złamanie kontraktu API doprowadzi do błędów interakcji między serwisami, które można wykryć tylko za pomocą testów integracyjnych. Zielony build w CI/CD nie gwarantuje, że różne wersje serwisów są ze sobą zgodne.