Infrastruktura monolitu, a mikroserwisów - pytania

0

WItam. Mam sobie napisany backend jako monolith i chciałbym go wysawić na AWS na elasticbeanstalk. Musiałem tam postawić Load Balancer, bo się łatwiej stawia https wtedy.

Mam kilka pytań o infrastrukturę, ponieważ mam trochę problem ze zrozumieniem pewnych rzeczy.

  1. Czy powinienem korzystać z narzędzi AWSowych czy springowych czy jeszcze jakiś innych ? Wiem, że do logowania najlepiej użyć stacka ELK, a co z monitoringiem ? Co powinienem monitorować ? To co bym chciał to czas odpowiedzi poszczególnych endpointów oraz czas zapytań do bazy danych. Czy powinienem coś jeszcze ? EC2 pokazuje mi zużycie CPU, ale to mało.
    Czytałem, że Spring Boot ma jakieś wsparcie do monitoringu ? Albo, że jest coś takiego jak prometheus. Pewnie najlepiej to zintegrować z grafaną ?

  2. Czy potrzebuję API GATEWAY ? Z tego co rozumiem, to mimo, że mam monolit to powinienem postawić API GATEWAY chociażby po to, żeby móc postawić kilka instancji monolitu w razie dużego ruchu ? Czy API GATEWAY stawia się na aws jako element infrastruktury czy jak to wygląda? Bo słyszałem, jeszcze o czymś takim jak kong i nie bardzo rozumiem jak to działa.

  3. Czy mikroserwisy wymagają dużo więcej infrastruktury niż monolit ? Nie chciałbym robić overengeeneringu. Po prostu chcę to tak postawić jako monolith, żeby było skalowalne, monitorowane w stopniu wystarczającym na wcześnym etapie projektu, łatwo wdrażalne i po prostu zrobione dobrze.

1
  1. W zasadzie nic nie trzeba robić do standardowych metryk. Ustawiasz kilka properties z management.metrics.export.* i działa od kopa. Połączenie tego z grafaną to też kilka chwil, dodajesz datasource do którego wrzucasz metryki i wyklikujesz sobie panele
  2. Mikroserwisy zwykle stawia się na osobnych instancjach, więc z punktu widzenia liczby instancji na EC2 to będzie ich więcej.
0

@Shalom:
Jeszcze jedna sprawa .. od czego zależy wybór providera ? Chyba najpopularniejszy jest prometheus ?
Rozumiem, że muszę zaciągnąć actuatora i wybrać providera.

Tego providera muszę postawić na osobnym ec2 czy jak to powinno być zbudowane ? Jeszcze do tego grafanę muszę gdzieś postawić to jeszcze kolejne ec2 ? :O

1

od czego zależy wybór providera

Od tego co masz dostępne / na czym się znasz ;) Zauważ ze możesz np. użyć elasticsearcha jako backendu, jeśli używasz już ELK stack i masz już gdzieś elasticsearch (niemniej tak sobie się sprawdza :P).
Grafanę od biedy to możesz odpalić sobie nawet lokalnie, jeśli robisz to tylko dla siebie.

1
  1. Do metryk, jak zauważyłeś, popularnym stosem jest Prometheus + Grafana. I nie jest to trudne do postawienia, możliwe że wystarczy nawet gotowy Docker-Compose z neta. Jest sporo tutoriali. Co do logów, ELK jest spoko, ale obczaj czy nie wystarczyłoby ci spięcie EB z CloudWatch Logs, bo widzę że jest taka opcja (nie używałem EB nigdy).

  2. Raczej nie. Jeśli mowa o kilku instancjach, to mylisz to z load balancerem.

  3. Ogólnie zwykle tak. Ale czasami nie. Zależy :) Jeśli możesz mieć monolit, zostań przy tym. Keep it simple.

1 użytkowników online, w tym zalogowanych: 0, gości: 1