Microservizi
Gli applicativi distribuiti con Kubernetes sono ottimamente strutturati in microservizi.
Perchè i Microservizi
Un tipico applicativo di e-commerce può avere:
- Front-end web
- Servizio di catalogo
- Carrello della spesa
- Servizio di autenticazione
- Servizio di logging
- Storaggio persistente
In una architettura a microservizi ogni funzione è in un suo contenitore separato - microservizio
Ciascun tipo di contenitore è replicato a seconda del carico
Ciascun microservizio è sviluppato indipendentemente dagli altri, con tecnologie varie
Diventano molto importanti le interfacce
Stili di Applicativi
Applicativo Monolitico
Applicativo a Microservizi
Un microservizio è uno stile architettonico per sviluppare un singolo applicativo come serie di piccoli servizi
- ciascuno come processo separato
- in comunicazione tra loro, spesso con API basate su
- HTTP: REST - Representational State Transfer
- RPC - Remote Procedure Calls.
- deploy indipendente anche su hardware diversi
La modularizzazione dei programmi è presente da lungo periodo, ma, attenzione alla differenza:
- librerie - moduli riutilizzabili linkati nello spazio di indirizzamento di un singolo processo monolitico
- servizi - componenti fuori dallo spazio di indirizzamento del processo client che li usa
I servizi sono:
- più lenti delle librerie
- mantenibili e sostituibili individualmente
- sviluppabili da team separati
I servizi dipendono da una precisa definizione delle Interfacce che, una volta progettate e implementate, sono difficilmente cambiabili.
Serie di qualità positive:
- componentizzazione
- vicinanza ai problemi business
- prodotti non progetti
- approccio bottom-up
- sevizi intelligenti e canali di comunicazione stupidi
- amministrazione decentralizzata
- gestione dati decentralizzata
- automazione di infrastruttura
- progettati per la tolleranza al fallimento
- design evolutivo
Architettare Microservizi
Stile di programmazione di applicativi distribuiti.
Non sono direttamente collegati a Docker ma la containerizzazione dei microservizi è un valore aggiunto.
Strutturazione in microservizi modulari da i vantaggi:
- indipendenza di ciascun modulo dagli altri moduli
- facile sostituibilità
- deploy indipendente
- uso di un protocollo di comunicazione agnostico come HTTP
- applicativi intelligenti e canali di comunicazione stupidi
- interscambio dati come messaggi
- ciascuno può essere realizzato con linguaggi di programmazione differente
- sono importanti le interfacce
- organizzati in modo vicino al dominio business affrontato
- favoriscono la scalabilità