Il mondo dello sviluppo applicativo è radicalmente cambiato negli ultimi anni. Le applicazioni monolitiche sono state sostituite da servizi interconnessi attraverso API. Le applicazioni distribuite su più servizi sono spesso sviluppate su infrastrutture multi-cloud e gli sviluppatori e i DevOps hanno la possibilità di scegliere i migliori strumenti da implementare all’interno del proprio stack tecnologico. In molte aziende le figure C-Level si stanno rendendo conto che i team IT che hanno a che fare con lo sviluppo applicativo utilizzano una miriade di tool e soluzioni differenti per l’elaborazione e l’analisi dei dati, l’observability e il monitoraggio, la sicurezza e il networking, in particolare a livello applicativo.
Il Platform Engineering permette di dare un ordine a questa situazione, portando un vero e proprio cambiamento culturale all’interno dell’organizzazione.
Cos’è il Platform Engineering?
Ma andando a fondo di questo concetto, qual è il significato di Platform Engineering? Qual è l’obiettivo di questo approccio?
Il Platform Engineering si è diffuso con l’aumento della popolarità e dell’utilizzo sempre maggiore da parte delle aziende della metodologia DevOps. Tale approccio ha l’obiettivo di semplificare i processi coinvolti a mano a mano che aumentano le pratiche DevOps in uso dall’azienda, consentendo ai developer di concentrarsi sullo sviluppo applicativo, piuttosto che sui processi e i tool interni, al fine di offrire un servizio sempre migliore ai propri clienti.
Ma come poter fare questo? Per poter scalare l’utilizzo della metodologia DevOps e conservarne le relative conoscenze, è fondamentale ripensare alla struttura dei team DevOps: le pratiche DevOps devono essere pensate come prodotti e servizi di cui i team di sviluppo applicativo sono utilizzatori.
L'essenza dell’approccio Platform Engineering (o PlatformOps) è proprio questa: utilizzando questo metodo e creando un vero e proprio team dedicato (il Platform team), le aziende sono in grado di fornire una piattaforma self-service che consente ai propri sviluppatori di sviluppare codice in modo rapido, affidabile e sicuro. Allo stesso tempo tutto ciò assicura che le migliori pratiche, la governance e l'accesso alle più recenti tecnologie siano integrate.
Con l’utilizzo del Platform Engineering le aziende hanno la possibilità di scalare le capacità DevOps dei propri team di sviluppo e, cosa molto importante, riescono a creare e conservare al proprio interno una vera e propria cultura DevOps da poter mettere a disposizione delle proprie persone.
Attraverso questo approccio le aziende sono quindi in grado di soddisfare la domanda dei clienti in modo rapido e continuo e danno la possibilità ai team di sviluppo di sfruttare una gamma molto più ampia di pratiche e soluzioni includendo quelle che riguardano la security, la riduzione dei costi del cloud e il monitoraggio.
Una piattaforma è una base software composta da un insieme di tecnologie utilizzate da diversi team IT per eseguire varie pratiche. Ad esempio, i team di sviluppo applicativo Web si affidano a server Web, tool di sviluppo, front-end e sistemi di bilanciamento dei carichi di lavoro. I team marketing si affidano a prodotti Software as a Service come Hubspot, Shopify e Salesforce. Le operation si affidano a Kubernetes, controller di distribuzione delle applicazioni, soluzioni di virtualizzazione, Cloud Provider. Nell'era del cloud computing e delle applicazioni cloud native, i vari team necessitano di una piattaforma che fornisca non solo funzionalità di base come l’elaborazione, l’archiviazione e il networking, ma anche strumenti per la creazione e la distribuzione di applicazioni.
Il Platform team è responsabile della cura, manutenzione, connessione e protezione della piattaforma self-service che fornisce ai team DevOps ciò di cui hanno bisogno per svolgere il proprio lavoro. Inoltre, poiché le infrastrutture sono oggi sempre più basate sul Cloud, il Platform team è strettamente coinvolto nella fornitura di funzionalità di base come il networking e la security a livello aziendale.
Il Platform Engineering è un approccio che semplifica questa iperproliferazione di tool che oggi grava sulle aziende. Il Platform team collabora con gli utilizzatori di applicazioni e soluzioni IT all’interno dell'organizzazione, ne comprende le necessità e riduce le scelte ad un minor numero di possibilità, studiate su misura. Tale metodologia cerca di trovare un sano equilibrio tra possibilità di scelta e caos, cercando di garantire un approccio alla sicurezza di tipo “Shift-left” e una forte governance e affidabilità.
E’ importante che il Platform Team collabori costantemente con gli utenti della piattaforma, al fine di garantire loro una comprensione completa e profonda delle soluzioni prescelte e un’educazione su come ottenere il massimo da ciò che è disponibile sulla piattaforma.
I membri del Platform team di solito provengono dallo sviluppo applicativo o dalle funzioni DevOps, per questo sono in grado di comprendere a pieno le necessità di questi team; inoltre molto spesso i team di piattaforma sviluppano codice, quindi sono loro stessi in primis utilizzatori di ciò che curano.
Riportando la visione dell’autrice del seguente articolo, i team di sviluppo devono quindi avere abbastanza libertà e flessibilità per svolgere il proprio lavoro, ma allo stesso tempo il Platform team (o PlatformOps team) deve garantire che la security, i costi infrastrutturali e la compliance (responsabilità del Team di IT Operation) non sfuggano al loro controllo. Più grande è l'organizzazione, più difficile è trovare questo equilibrio.
Platform Engineering per la gestione delle risorse su qualsiasi infrastruttura
Al giorno d’oggi, in cui la logica multi-cloud è fondamentale per un’organizzazione moderna, realizzare le automazioni necessarie per poter creare e gestire risorse applicative ed infrastrutturali è un compito fondamentale ma allo stesso complesso per qualsiasi Platform Team.
Da un lato, è necessario garantire adeguati livelli di servizio e di astrazione verso i propri utenti; dall’altro, poter spostare i propri workload su differenti cloud provider, consente di ottimizzare i costi e fornire un servizio migliore.
Proprio in quest’ottica è stata creata la soluzione Krateo PlatformOps, piattaforma open source interamente gestita da Kiratech per semplificare la creazione e gestione di risorse su qualunque infrastruttura e in modalità self-service da un singolo pannello di controllo, aggregando le informazioni importanti per l’utente ed uniformando workflow altrimenti frammentati e poco focalizzati.
Krateo è una soluzione flessibile e consente di creare qualsiasi tipo di risorsa da un'unica interfaccia: dai cluster Kubernetes, alle applicazioni, a database, microservizi in qualsiasi linguaggio, modelli di machine learning, siti web e tanto altro.
Krateo PlatformOps:
- sfrutta le logiche di control plane di Kubernetes e le applica al resto del mondo infrastrutturale e applicativo, applicando il paradigma del GitOps su tutte le risorse che la compongono.
- in contesti enterprise, permette di separare i ruoli dei diversi team, snellendo i processi e velocizzando le operazioni.
- è una piattaforma secure by design, costantemente controllata da strumenti di policy e zero trust networking enforcement, quindi attraverso un approccio shift-left.
- è monitored by design, permette quindi la raccolta di metriche infrastrutturali, applicative e di processo, e la conseguente estrazione di valore dai processi nell’ottica del continuous feedback e di miglioramento continuo.
Sei interessato e vuoi approfondire maggiori dettagli su Krateo PlatformOps?
Fonti:
https://6point6ltd.medium.com/why-you-should-care-about-platform-ops-ee3d953df43f
https://www.nginx.com/blog/why-every-company-needs-platform-ops/#What-Is-Platform-Ops
https://www.linkedin.com/pulse/what-platformops-maya-ber-lerner/
Pictures:
<a href='https://it.freepik.com/vettori/infografica'>Infografica vettore creata da jcomp - it.freepik.com</a>