Smells Architetturali Flashcards
Cosa sono smells architetturali?
Decisioni che hanno impatto negativo sul ciclo di vita del sistema
Tipologie errori di design
Ogni microservizio deployabile in modo indipendente
horizontal scalability
Fallimenti non isolati
Decentralizzazione
Errori di deployablitiy
multiple services
in one container :
- Soluzione: Dividi ogni service in un container apposito
Errori di horizontal scalability
- Puntamento a microservizio specifico
Soluzioni:
1) Service discovery 55 %
2) Message router come load balancer 31%
3) Message broker come message queue 14 % - Non utilizzo di API gateway (vengono richiamati dall’esterno direttamente services)
Soluzione: aggiungi Api Gateway
Errori di isolamento degli errori
- wobbly service interaction (errori da parte di microservizi richiamati innescano errore anche nel chiamante)
Soluzioni:
add Message broker 16 %
add Circut breaker 42 %
add Timeouts 22 %
Bulkhead, se avviene errore, abbiamo pool di servizi che interviene 20%
Errori di decentralizzazione
-Persistenza dei dati shared
Soluzioni:
Dividi db 50 %
Add data manager 41%
Merge services 9 %
-Single layer teams
Soluzione: Dividere i teams in modo uniforme per service
Quali errori possiamo evitare tramite il deployment?
Deployment con Docker compose ci permette di evitare problemi di endpoint servizi interaction, poichè si comporta con service discovery.
Deployment con Kubernetes ci permette di evitare la stessa tipologia di problema, poichè crea un message router tra i vari microservizi.
Quale programma può essere utilizzato per trovare smells e fixarli?
uFreshner/microFreshner
Differenza load balancer, message queue e api gateway?
Load balancer ha come scopo quello di prendere request e inviarle al backend, bilanciandole appunto.
Message queue invece prende messaggio ed in maniera asincrona elabora.
Api gateway prende request e le indirizza al microservizio apposito, restituendo poi responses.