I microservizi e le app a 12 fattori sono sulla bocca di tutti, ma le opinioni sull’infrastruttura necessaria per supportarli sono molto diverse. Per il successo di un progetto, è importante comprendere il quadro generale. Una domanda fondamentale è: un’azienda deve creare il proprio stack Kubernetes o utilizzare una piattaforma gestita? Markus Eisele, Developer Strategist EMEA di Red Hat, mostra le differenze.
Oggi i progetti di sviluppo iniziano spesso con Kubernetes come piattaforma di base per l’esecuzione e l’orchestrazione dei servizi. Tuttavia, le funzionalità integrate sono raramente sufficienti per un progetto. Se un’azienda sta pensando di sviluppare un’applicazione Kubernetes-native, deve anche considerare tutti i requisiti necessari.
Le applicazioni moderne hanno bisogno di molto di più che container e orchestrazione. Ad esempio, sono sviluppate con un approccio API-first e utilizzano discovery e invocazione di servizi. Le applicazioni possono scalare e fornire informazioni sufficienti ai team SRE (Site Reliability Engineering) per garantire un funzionamento regolare. Idealmente, queste caratteristiche dovrebbero essere integrate nel processo di sviluppo utilizzando una gestione delle modifiche e delle versioni che segua un modello moderno di CI/CD (continuous integration/continuous delivery).
Legati al termine “Kubernetes” si trovano in realtà altri componenti che svolgono un ruolo importante per il successo di un progetto. Tra questi, la conformità, il networking, il disaster recovery o la gestione delle modifiche, solo per citarne alcuni.
In linea di principio, gli architetti possono scegliere se mettere insieme uno stack Kubernetes in modo indipendente o utilizzare una piattaforma gestita come Red Hat OpenShift. Nel prendere la loro decisione, devono soprattutto:
- Guardare oltre la piattaforma Kubernetes e trattare i requisiti del progetto come requisiti della piattaforma.
- Definire e valutare la matrice di supporto e responsabilità per il proprio progetto e i componenti necessari.
In considerazione dei diversi compiti relativi alle funzioni della piattaforma, all’architettura, a Kubernetes o alla sicurezza, la variante fai-da-te è raramente la scelta migliore. È più facile selezionare una piattaforma adatta. Ciò si evince dai requisiti concreti che una piattaforma Kubernetes gestita dovrebbe soddisfare che includono:
Centralizzazione delle informazioni
Per uno sviluppo fluido, è opportuno raccogliere le informazioni rilevanti in un luogo centrale. Quarkus ne è un esempio. Il framework contiene un’interfaccia utente per sviluppatori con integrazioni per il runtime, la messaggistica e il controllo dei protocolli. I plug-in dell’ambiente di sviluppo integrato di Red Hat supportano inoltre gli sviluppatori nel debugging e nel deployment locale e remoto, con l’integrazione con CI e CD su Red Hat OpenShift.
Opzioni Self-Service
Se da un lato i processi fissi aiutano a controllare il consumo di risorse e la definizione del budget, dall’altro possono rallentare i progetti di sviluppo con approvazioni e tempi di attesa inutili. Un approccio self-service come Red Hat OpenShift offre agli sviluppatori la libertà di creare le proprie risorse in base alle esigenze, nel rispetto di standard predefiniti.
“Develop once, deploy everywhere”
Quando si sceglie una piattaforma, bisogna fare attenzione a non cadere nel vendor lock-in. L’uso di un numero definito di tecnologie e runtime può essere efficiente dal punto di vista della governance, ma limita la flessibilità. Dopo tutto, i requisiti, sia dal punto di vista tecnico che commerciale, cambiano continuamente e rapidamente. Di conseguenza, è più importante che mai disporre di un elevato grado di flessibilità per poter fornire applicazioni on-premise o all’edge, ad esempio.
Scrittura YAML facilitata
Le impostazioni predefinite sono utili per evitare errori, ma rallentano lo sviluppo. Gli sviluppatori devono essere liberi di utilizzare strumenti a riga di comando, utility altamente integrate o IDE di sviluppo specializzati. Red Hat OpenShift lo fa fornendo configurazioni predefinite sicure, in modo che gli sviluppatori passino meno tempo a scrivere configurazioni e più tempo a scrivere codice. Quarkus fornisce anche codice ottimizzato per l’80% dei casi d’uso più comuni.
Sicurezza integrata
La gestione della sicurezza è un processo continuo. Quando le applicazioni vengono distribuite o aggiornate, controlli di sicurezza dinamici sono fondamentali. Con Red Hat OpenShift, gli architetti possono applicare i controlli di sicurezza alla catena di fornitura del software. In questo modo è più facile gestire le applicazioni senza incidere sulla produttività degli sviluppatori.
Questi pochi esempi mostrano in cosa consista la versione gestita di Kubernetes. Un utilizzo efficace richiede qualcosa di più dell’implementazione dell’orchestrazione sottostante. Se un’azienda presta attenzione a tutti i requisiti pertinenti, soprattutto per quanto riguarda le moderne soluzioni cloud-native, può evitare molti errori e avere successo. In una parola, con un motto come “Gestisci il tuo business, non Kubernetes”, la strada è quella giusta.