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

Appmono

Applicativo a Microservizi

Appmicro

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à

Microcont