La complessità ucciderà Kubernetes?

La complessità ucciderà Kubernetes?

Kubernetes non sarebbe il primo grande progetto open source a crollare sotto il suo stesso peso, ma gli esperti dicono che questa volta è diverso


La complessità ucciderà Kubernetes?

Kubernetes potrebbe essere l’attuale beniamino del pubblico open source, ma in passato anche altri sembravano non essere da meno prima di esso. Alla fine tanti progetti Open in passato rimasero senza benzina perché erano incredibilmente difficili da usare. Kubernetes , sebbene stia facendo passi da gigante , rimane “un picnic domenicale da gestire, piacevole ma complicato”, come affermato da molti . È un modo molto diplomatico per dire, che l’esperienza di Kubernetes “può essere una rottura di scatole”.

 

 

Kubernetes si sta dirigendo verso un’uscita da dietro le quinte?

Probabilmente no. Mentre tanti progetti Open sono diventati più complicati con l’età, Kubernetes continua a diventare più semplice. Sebbene K8s probabilmente non sarà mai “facile”, di per sé, la sua complessità differisce da quella di altre architetture complesse, aprendosi la strada per rimanere uno standard del settore per gli anni a venire.

La crescita casuale della complessità di altri prodotti è stata la loro stessa rovina.


Molti progetti Open in passato erano davvero complicati. Nel corso del tempo, tuttavia, hanno continuato ad evolversi e, sebbene tale evoluzione abbia portato ad opzioni più potenti, tali opzioni proliferarono in numero. Inoltre, non era facile farle lavorare insieme. Molti affermavano che non si comprendeva no più i limiti perimetrali dei prodotti, “Cosa fa effettivamente il prodotto X? Il prodotto Y è stato sostituito dal Prodotto Z che è stato sostituito da altre cose e così via. Ovviamente puoi collegarci molti dati, ma non è ancora molto maturo”.

Perché immaturo? Secondo noi non è una questione di immaturità. VMware coglie bene il problema: “La complessità di derivante dai processi e progetti Open Source deriva dal fatto che una tipica architettura complessa consiste fondamentalmente in dozzine di sistemi indipendenti e complicati che hanno cicli di vita e modelli di gestione diversi”. Tanti, troppi componenti Open; Flume, Chukwa, Hive, Pig, ZooKeeper e così via. Nomi intelligenti ma un incubo per far funzionare tutto insieme. Alla fine tutto diviene uno “stack complesso di soluzioni”,  e tutta questa complessità è ribaltata sull’utente che la deve gestire.

Forse la cosa più diversa da Kubernetes, tuttavia, è il modello utilizzato per estendere questi progetti. “Le comunità Open che ruota introno a questi fallimenti non ha pensato a come le persone  avrebbero esteso i prodotti e il risultato è stato un ecosistema di estensioni incompatibili”. Al contrario, “una cosa che Kubernetes fa perfettamente è strutturare il modo in cui viene esteso. Gli operator, CRI/CSI/CNI, assicurano che man mano che più fornitori si accumulano, lo facciano in modo sano, serio e compatibile”. In altre parole, a differenza di altri e delle loro estensioni incompatibili, “Kubernetes con dozzine di operator è ancora Kubernetes”.

Kubernetes, complessità su cui puoi fare affidamento


Tutto ciò abbiamo espresso nel paragrafo precedente non significa che Kubernetes sia semplice.  Su questa complessità abbiamo deciso di basare i nostri tools di semplificazione come HyScale. Uno dei creatori di Kubernetes, Joe Beda, ha dichiarato “Kubernetes è un sistema complesso“.
Questa complessità è in qualche modo necessaria, prosegue, perché ” K8s fa molto e porta nuove astrazioni e concetti”. Tutti hanno bisogno di tutte quelle astrazioni sempre e comunque? No. “Siamo sicuri che ci sono molte persone che usano Kubernetes e che potrebbero cavarsela con qualcosa di più semplice.”

Ma per coloro che hanno bisogno di Kubernetes, non è necessariamente più complesso di altri sistemi con cui le persone hanno già familiarità. Potrebbe semplicemente essere un complesso “nuovo” rispetto ad un complesso “vecchio e confortevole”. Come ingegneri, tendiamo a scartare la complessità che costruiamo noi stessi rispetto alla complessità che dobbiamo imparare. Quando crei un sistema di distribuzione complesso con Jenkins, Bash, Puppet/Chef/Salt/Ansible, AWS, Terraform, ecc., ti ritroverai con un ecosistema unico di complessità con cui ti senti a tuo agio. È cresciuto organicamente, quindi non sembra complesso.

Ma portare nuove persone, coinvolgerle e includerle per evolvere ancora in un sistema sviluppato organicamente come questo è difficile. Potrebbero conoscere alcuni strumenti, ma il modo in cui li hai messi insieme è unico. Questo è un campo in cui Kubernetes aggiunge valore. Kubernetes fornisce una serie di astrazioni che risolvono una serie comune di problemi. Man mano che le persone sviluppano la comprensione e le capacità intorno a questi problemi, sono più produttive in più situazioni. C’è ancora una ripida curva di apprendimento ma quell’insieme di abilità ora è prezioso e trasportabile tra ambienti, progetti e lavori.

A differenza della complessità che risiede in un particolare sistema di distribuzione che potresti aver creato presso l’Azienda X (ed è unico per quella società), il tipo di complessità che padroneggi con Kubernetes può seguirti di azienda in azienda. In questo modo, diventa molto meno complesso di molti altri sistemi, poiché la conoscenza è portabile. In altre parole, “impara una volta, applica ovunque“.

Impara una volta, applica ovunque


L’apprendimento, a sua volta, è molto più semplice di quanto non sia mai stato in passato. Kubernetes, a differenza di altri, è un sistema più semplice con cui acquisire familiarità, in parte a causa di dove può essere eseguito.  Noi diciamo “Puoi eseguire Kubernetes localmente molto più facilmente (Docker Desktop, Kind, MicroK8s) rispetto ad altri esempi simili. La riduzione degli ostacoli per l’adozione di K8s rende più facile acquisire familiarità, il che combatte la complessità percepita “.

Aiuta anche, come ha sottolineato Chris Aniszczyk , dirigente della Cloud Native Computing Foundation, il fatto che mentre “i sistemi distribuiti sono intrinsecamente complessi, il vantaggio di Kubernetes è che tutti i principali provider cloud in tutto il mondo e tanti altri fornitori offrono una versione conforme/certificata e gestita (senza fork) che aiuta la maggior parte degli utenti con la complessità della gestione su larga scala”. Quindi, forse la domanda giusta allora è “Kubernetes è complesso tanto quanto il problema che cerca di risolvere?”. Per lui la risposta è no.

La stessa risposta vale per la domanda: “Kubernetes verrà soppiantato?” Kubernetes ha già superato quella fase, è uno strumento di orchestrazione complesso e non ideale per tutti i casi d’uso. Come tanti strumenti nel nostro skill set, ci vuole tempo anche per imparare, usare e capire. “Poche ore” non saranno sufficienti. ” È uno strumento complesso che risolve un problema complesso. Ma c’è “complessità intenzionale e complessità accidentale”.  Tanti altri hanno sofferto di quest’ultimo problema, mentre Kubernetes soffre solo di complessità intenzionale.

Per questi e altri motivi, dovremmo vedere Kubernetes continuare a prosperare come standard di settore per l’orchestrazione dei container.

OneClickApp e HyScale aggiungono uno strato di semplificazione che sfrutta i concetti esposti sopra. Ormai la popolarità che k8s ha acquisito e il fatto che tutti i principali provider cloud in tutto il mondo e tanti altri fornitori offrono una versione conforme/certificata e gestita (senza fork), ci permette di pensare che un tool di orchestrazione multi cloud sia un inevitabile elemento per avvicinare le organizzazioni che intendono istituire un processo di trasformazione digitale. La possibilità di scegliere con un click dove spostare i carichi di lavoro i test continui e i costi elestici, non deve essere ostacolata dal vincolo della complessità dei sistemi utilizzati, anzi K8s si sta sempre di più presentando come la commodity da utilizzare in tutte le occasioni e poi dimenticarsene.