Ecco perché Container, Kubernetes e microservizi non sono sempre la soluzione adatta ad ogni esigenza, il caso di Istio

Si fa un gran parlare, e certamente noi di MMUL contribuiamo, di come l’universo dei microservizi stia conquistando (o abbia già conquistato) l’ambito delle applicazioni web e non solo. Certamente c’è tanto di vero, ma allo stesso tempo è bene sottolineare come questo tipo di approccio non sia la panacea di tutti i mali.

Insomma, utilizzare Kubernetes non è sempre indicato a prescindere.

Lo racconta con molta chiarezza Christian Posta, che è CTO di solo.io un’azienda che, manco a dirlo, si occupa principalmente di offrire soluzioni in ambito Kubernetes e microservizi.

In questo suo articolo Posta mette le cose in chiaro da subito:

Microservices is not THE “utopian application architecture”.

I microservizi non sono un’utopistica architettura di applicazioni

Indicando principalmente nell’aumento della complessità, tanto di implementazione quanto soprattutto di analisi delle problematiche, lo scoglio principale che dovrebbe far riflettere chiunque pensi che i Microservizi sono qui per risolvere ogni tipo di problema.

Il caso citato nello specifico è quello di Istio, una piattaforma per il monitoraggio dei servizi composta da numerose componenti (in apparenza indipendenti) che necessitano di comunicare l’una con l’altra. La scelta iniziale per questo progetto è stata quella dei microservizi, per tutte le ragioni di scalabilità, ottimizzazione e sicurezza ben note a chi conosce il tema. Solo che alla lunga la gestione del progetto ha pesantemente risentito di questa scelta, tanto che è stato riportato ad una gestione monolitica, principalmente per tre motivi.

  1. La modalità con cui gli utenti finali fruiscono del servizio è poco vicina a come questo viene sviluppato. Chi scarica il prodotto non ha sensibilità su questo aspetto, e sicuramente è più predisposto ad usare un unico contenitore piuttosto che tante frammentarie componenti.
  2. La gestione delle release è fisiologicamente complicata: come si può avere percezione di quale componente è compatibile con le altre?
  3. Il livello di separazione tra le varie componenti è veramente minimo, tanto che non è realisticamente possibile separarle l’una dall’altra (ad esempio a livello di scaling).

Al di là delle riflessioni totalmente condivisibili che potrebbero essere applicate a progetti simili per attitudine, vedi ad esempio OpenStack, la sostanza è che, in questo specifico caso, l’approccio monolitico è sicuramente il più vincente, tanto che che il sottotitolo della documentazione di design di Istiod recita:

“Complexity is the root of all evil or: How I Learned to Stop Worrying and Love the Monolith”.

La complessità è la base di tutti i mali o: Come ho imparato a non preoccuparmi ed amare il Monolitico

E, non fosse altro per la citazione del dottor Stranamore, non possiamo che essere in pieno accordo.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

3 risposte a “Ecco perché Container, Kubernetes e microservizi non sono sempre la soluzione adatta ad ogni esigenza, il caso di Istio”

  1. Avatar bonobo
    bonobo

    Super d’accordo, ma qua mancano le basi per un architettura a microservizi (rest?).
    1) front ci sarà sempre un solo punto di ingresso, (api gateway). È ciò che ci sta dietro che comunica su microservizi.
    2)il problema compatibilità non si pone, hai swagger/etc per una definizione della documentazione.
    3) il versioning: mi sembra più un problema di git che altro. Poi certo, un architettura a microservizi suppone di avere n persone che collaborano, diversamente ha poco senso. In ogni caso si fa uso si librerie.

    Detto ciò, microservice kubernetes.
    In ambito di linguaggi non compilati, il vantaggio dei microservizi è limitato. kb invece porta vantaggi interessanti.

    L’incognita reale è la gestione delle stateless app, che fanno lievitare tutto..

  2. Avatar Raoul Scarazzini
    Raoul Scarazzini

    Ma infatti credo sia proprio per questo che il caso in questione viene usato per evidenziare i tema: non è che l’approccio a microservizi sia utile sempre e comunque.
    Poi sulla differenza tra microservice e Kubernetes c’è da discutere: certo come concetti non sono equiparabili, ma principalmente perché k8s ingloba la gestione dei primi. Pertanto se dici microservizi magari non dici Kubernetes, ma se dici Kubernetes in un modo o nell’altro sono microservizi quelli che vuoi orchestrare.

  3. Avatar bonobo
    bonobo

    Tutta roba che si fa senza kb. Un utilizzo che ha avuto crescita è quello dello horizontal scaling, Che richiedono dei pod statefull con read/write many, cosi che si possano auto istanziare nuovi pod per le applicazioni in automatico (secondo la metrica decisa). Non serve avere microservizi per questo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *