I contenitori stanno mangiando il mondo. Se negli ultimi anni hai creato e distribuito un'applicazione in produzione, è probabile che tu abbia distribuito il codice in container. Potresti aver creato e distribuito singoli container (Docker, Linux LXC, ecc.) direttamente all'inizio, ma sei passato rapidamente a una tecnologia di orchestrazione di container come Kubernetes (K8s) o Swarm quando era necessario coordinare distribuzioni multinodo e alta disponibilità (HA). In questo mondo guidato dai container, come sarà il futuro dello stack di applicazioni? Iniziamo con ciò di cui abbiamo bisogno da questo stack di applicazioni "futuro".
Di cosa abbiamo bisogno da questo stack di applicazioni future?
-
Indipendente dal cloud
Vogliamo essere indipendenti dal cloud con la possibilità di eseguire il deployment su qualsiasi cloud di nostra scelta. Idealmente, possiamo anche combinare vari provider in un'unica distribuzione.
-
In sede
Dobbiamo essere in grado di eseguire il nostro stack di applicazioni on-premise con il nostro hardware personalizzato, cloud privato e data center gestiti internamente.
-
Agnostico rispetto alla lingua
Va quasi per dire, ma lo aggiungo per completezza. Il futuro open stack deve supportare tutti i più diffusi linguaggi di programmazione.
Lo stack di applicazioni future
Il futuro stack di applicazioni sarà composto da una triade di tecnologie:K8s, Platform-as-a-Service (PaaS) e Database-as-a-Service (DBaaS) :
K8
Kubernetes è una piattaforma open source portatile ed estensibile per la gestione di carichi di lavoro e servizi containerizzati e puoi distribuire le tue applicazioni direttamente nei container K8s. Per i clienti con applicazioni esistenti, ha perfettamente senso creare pacchetti e distribuire le applicazioni esistenti direttamente su K8.
Il futuro dello stack di applicazioni:K8s, PaaS e DBaaSClick To Tweet
Tutti i fornitori di cloud pubblico forniscono un forte supporto nativo per K8s e puoi anche eseguire il tuo cluster K8s on-premise. Docker ora è anche salito sul carro del K8, quindi hai piena flessibilità. Non c'è dubbio che K8s sia il re della collina oggi. Tra qualche anno, potrebbe essere superato da un'altra soluzione, ma la tecnologia di orchestrazione dei container è destinata a restare.
Soluzioni PaaS
Se stai creando una nuova applicazione da zero, le soluzioni Platform-as-a-Service come Cloud Foundry e OpenShift offrono vantaggi convincenti che puoi sfruttare per accelerare lo sviluppo delle tue applicazioni ciclo vitale. Un PaaS è d'obbligo? Assolutamente no, ma penso che valga la pena considerare se stai creando una nuova applicazione.
In alcuni casi, le soluzioni PaaS potrebbero essere eseguite su K8 o sedersi accanto ad esso – dal punto di vista dell'applicazione, non importa. Se la tua organizzazione IT sta implementando la soluzione PaaS, potrebbe piacere se viene eseguita solo sui cluster K8 esistenti. Le soluzioni PaaS sopra citate sono disponibili anche su tutti i cloud pubblici. Quindi, ancora una volta, hai tutta la flessibilità di cui hai bisogno dalla tua piattaforma.
Soluzioni DBaaS
L'esecuzione e la gestione di un sistema di database di produzione non è per i deboli di cuore. Se pensi che installerai il tuo database di produzione su tre container e funzionerà per sempre felici e contenti, hai un'altra cosa in arrivo. Utilizzando una soluzione Database-as-a-Service, gestiranno tutti gli aspetti operativi della gestione del tuo database in modo che tu sia preparato per qualsiasi imprevisto.
Il tuo DBaaS può essere eseguito o meno su K8. Forse alcune parti del DBaaS funzionano su K8, ma è probabile che non lo faccia. Perché?
- Al di fuori dei popolari cloud pubblici, non esiste un'ottima soluzione per lo storage/volumi fino alla qualità EC2 Elastic Block Storage (EBS). Fornitori come PortWorx e OpenEBS ci stanno lavorando, ma non è ancora arrivato. Senza una buona soluzione di archiviazione, è praticamente impossibile inserire i dati nei tuoi contenitori.
- Se stai eseguendo un server di database di produzione di grandi dimensioni con diversi TB, non ha senso eseguirlo in container:avrai macchine dedicate di grandi dimensioni con SSD fantasiosi .
- Troppo dinamismo:sì, puoi avere troppo di una cosa buona. A volte, quando le cose falliscono, vuoi che rimangano fallite in modo da poter dare un'occhiata e vedere cosa sta succedendo. Gli StatefulSet in Kubernetes sono un ottimo passo nella giusta direzione per risolvere questo problema.
In ScaleGrid, la nostra visione è quella di fornire la parte DBaaS di questo futuro stack di applicazioni. Oggi siamo multi-cloud e possiamo anche essere eseguiti on-premise o nel tuo data center privato. Inoltre, la nostra piattaforma è un sistema poliglotta che supporta più database, inclusi MongoDB®, Redis™*, MySQL e PostgreSQL.
Per semplicità, ho escluso alcune altre parti degli stack dell'applicazione come l'archiviazione degli oggetti, l'archiviazione del file system, ecc. In linea di principio, mi aspetto questi componenti saranno simili al componente DBaaS. Questo post sul blog è stato ispirato da un meetup PostgreSQL della Silicon Valley a cui ho partecipato alcune settimane fa e un ringraziamento a Dave Nielsen (@davenielsen) di RedisLabs per aver iniziato la discussione su questo argomento.