Blog | SparkFabrik

Cos'è il Platform Engineering e perché adottarlo in azienda?

Scritto da SparkFabrik Team | May 3, 2023 8:12:52 AM

Il termine “Platform Engineering” fa riferimento all’attività di progettazione e sviluppo di toolchain e processi di lavoro interni che permettono di rendere i dipendenti di un'organizzazione autosufficienti in tutte le attività software engineering. 

Il Platform Engineering è una pratica particolarmente efficace in tutti quei contesti dove si sta approcciando un modello di sviluppo Cloud Native focalizzato sul migliorare la Developer Experience (DevX).

Che cos'è il Platform Engineering?

Il Platform Engineering è una nuova disciplina emersa in risposta alla sempre crescente complessità dei sistemi progettati secondo i criteri delle Cloud Native architectures

Da un punto di vista metodologico, il Platform Engineering descrive come sia possibile sviluppare e mantenere una Internal Developer Platform (IDP), ovvero uno strumento aziendale interno che funge da strato di astrazione tra gli sviluppatori e i sistemi con cui questi sono soliti interfacciarsi. 

È circa dal 2022 che questa pratica sta prendendo piede, soprattutto nelle organizzazioni che cercano di compiere un ulteriore salto in avanti nel loro processo di trasformazione DevOps. Secondo Gartner, la wave del Platform Engineering coinvolgerà l’80% delle aziende IT entro il 2026, con la promessa di ottimizzare la developer experience, accelerare lo sviluppo dei prodotti e aumentare il valore dato agli utenti finali.

Come funziona il Platform Engineering?

I platform engineering teams non sono differenti da un normale team di prodotto nell’era DevOps. Le figure solitamente presenti sono una serie di SRE (Site Reliability Engineers), DevOps Engineers e Product Manager. Tutti insieme collaborano per selezionare e integrare suite di prodotti e tecnologie, definiscono approcci tecnologici e metodologici per risolvere una serie di problematiche che fanno parte del day by day dei developer e architect della propria azienda, creano workflow e logiche adatte alla propria organizzazione.

Come ogni team di prodotto, anche un Platform Engineering team e i suoi ingegneri conducono ricerche di mercato, sollecitano il feedback da parte dei propri utenti e si occupano di far adottare internamente l’Internal Developer Platform da loro realizzata, per massimizzare l’impatto e l’aumento di produttività all’interno di tutta l’organizzazione.

Quali sono i vantaggi del Platform Engineering per le aziende?

Un'azienda che mira ad adottare un modello di Platform Engineering, e dunque creare un team interno di Platform Engineers (o Platform Team), può misurare il successo di tale iniziativa tenendo sotto controllo una serie di fattori principali quali: efficienza e riduzione dei costi, scalabilità e flessibilità, affidabilità e sicurezza e una migliore Developer Experience complessiva.

Efficienza e riduzione dei costi

Un'organizzazione che non fa uso di DevOps e Platform Engineering ha un livello di automazione molto ridotto. Questo porta ad uno spreco di risorse (tempo, denaro e competenze) in attività a basso valore aggiunto. Alcuni esempi possono essere la predisposizione di ambienti per test, la preparazione dei dati e l’attivazione di nuovi servizi Cloud o di infrastruttura necessari al team di prodotto. 

Al contrario, una completa automazione e integrazione (test compresi), offrirà valore agli stakeholder aziendali, senza compromettere qualità o velocità. Di conseguenza, il lasso di tempo per trasferire nuove feature in produzione sarà più basso.

Scalabilità e flessibilità

Quando si pensa a scalabilità e flessibilità si pensa subito alla necessità di un’applicazione di sopportare picchi o carichi di lavoro importanti. Tuttavia, si tralascia il fatto che queste necessità può averle anche un team di prodotto nel suo naturale ciclo di vita. Ad esempio, con l’ingresso di nuovi membri del team, attraverso un onboarding efficace e veloce, oppure attraverso la possibilità di accomodare cambi di standard e procedure operative, in maniera quasi immediata. 

Tramite un team di platform engineer, queste tematiche possono essere efficacemente indirizzate, permettendo a nuovi membri del team di essere operativi da subito con ambienti di lavoro pre installati e virtualizzati. Oppure, mascherando le complessità dei processi operativi sottostanti o dei tool utilizzati, tramite interfacce ad-hoc più semplici ed intuitive. 

Affidabilità e sicurezza

Standardizzare lo sviluppo del software e prodotti tramite un team di Platform Engineering permette di governare anche i framework, librerie e linee guida con cui viene sviluppato il software. In questo modo è possibile filtrare librerie di codice instabili o insicure, oppure evitare di tralasciare importanti aspetti di progettazione quali il logging, la telemetria e la gestione delle credenziali: tutte funzionalità chiave per diagnosticare il funzionamento dell’applicativo e ridurre la superficie d’attacco. 

Migliore DevX

Tramite il Platform Engineering si da maggior potere agli sviluppatori sull’infrastruttura e sulle capability tecnologiche di cui hanno bisogno. Ogni sviluppatore può accedere con facilità a risorse e materiale realizzato e condiviso all’interno dell’organizzazione (sia esso documentale oppure codice), dandogli così la possibilità di focalizzarsi sui loro task e non sulla comprensione e burocrazia del contesto organizzativo in cui operano.

Platform engineering vs devops

Li abbiamo citati entrambi, ma qual è esattamente la differenza tra DevOps e Platform Engineering? Si tratta di approcci diversi per migliorare la produttività e l'efficienza dei team di sviluppo e operazioni. Mentre DevOps si concentra sulla collaborazione tra squadre e sulla riduzione del tempo di software delivery, Platform Engineering punta a creare infrastrutture flessibili e scalabili per supportare lo sviluppo di applicazioni e servizi.

Entrambi gli approcci hanno i loro vantaggi e le loro sfide, e la scelta tra DevOps e Platform Engineering dipenderà dalle esigenze specifiche di un'organizzazione e dai suoi obiettivi a lungo termine.

Progetti più grandi e complessi potrebbero beneficiare maggiormente di un approccio Platform Engineering per la sua maggiore flessibilità e scalabilità, mentre per progetti più piccoli o meno complessi, un approccio DevOps potrebbe essere sufficiente. 

Inoltre, la cultura organizzativa e gli obiettivi di business sono altri due elementi da valutare nella scelta: se l'organizzazione ha già una forte cultura di collaborazione e comunicazione tra le squadre, DevOps potrebbe essere la scelta migliore, mentre se l'obiettivo principale è creare infrastrutture flessibili e scalabili per supportare la crescita futura, Platform Engineering potrebbe essere l'approccio più adatto. 

Infine, le tecnologie e le competenze esistenti all'interno dell'organizzazione sono un altro fattore da considerare: se i team hanno esperienza con containerizzazione, orchestrazione e cloud computing, adottare un approccio Platform Engineering potrebbe essere più agevole, mentre se sono più abituati a lavorare con strumenti e processi tradizionali, DevOps potrebbe essere il percorso più naturale.

Platform Engineering: alcuni esempi di successo

Un esempio di successo di Platform Engineering che ha portato alla realizzazione di una Internal Developer Platform è il progetto di SparkFabrik per il Centro Medico Santagostino. Il Centro Medico Santagostino è una società italiana che gestisce una rete di ambulatori offrendo un'ampia gamma di servizi specialistici di alta qualità a un prezzo accessibile. 

La sfida in questione prevedeva, a fronte di uno stack tecnologico già ben definito, di arrivare a standardizzare e organizzare il modo in cui i servizi digitali interni andavano ad operare. Questa sfida aveva due aspetti fondamentali. 

  1. Il primo è stato quello di creare una Internal Developer Platform per centralizzare servizi e documentazione, gestire l'intero ciclo di vita dei servizi e semplificare il lavoro degli sviluppatori. 
  2. Il secondo è stato quello di creare una serie di servizi di interconnessione per semplificare la comunicazione dei principali prodotti interni e permettere di supportare efficacemente il business.

Con una soluzione basata su stack tecnologico AWS e Backstage, il progetto di SparkFabrik ha permesso, a seguito del live della piattaforma, di velocizzare lo sviluppo di nuovi servizi e funzionalità, in soli tre mesi di operatività in ambiente di Produzione.

Conclusioni

Il Platform Engineering può rappresentare un asso nella manica per le organizzazioni. Attraverso il Platform Engineering, le aziende possono aumentare l'efficienza dei processi di sviluppo, rilascio ed evoluzione del software, senza sacrificare la qualità, sicurezza ed efficienza di quest’ultimo. 

Predisponendo team dedicati, il cui scopo è automatizzare e incrementare la produttività dei team interni, consente di ridurre il tempo con cui è possibile portare valore ai propri utenti con nuove funzionalità e migliorie. 

Il Platform Engineering è lo step successivo di una journey DevOps: va ad aumentare l’agilità e l’affidabilità degli sviluppatori all’interno dell’organizzazione e la semplicità con cui questi possono adottare pratiche di sviluppo Cloud Native.