Platform Engineering Maturity Model

Introduzione

Il Platforms White Paper iniziale della CNCF sulla “Definizione delle Piattaforme” descrive cosa sono le Piattaforme Interne (Internal Platforms) per lo sviluppo cloud native e il valore che promettono di portare alle imprese. Per raggiungere quel valore, tuttavia, un’organizzazione deve riflettere su come perseguire deliberatamente i risultati e le pratiche di maggiore impatto e rilievo per il proprio contesto, tenendo presente che si vorrà affidare a una piattaforma interna che risponda appositamente ai propri bisogni - anche se quella piattaforma sarà magari solo documentazione su come utilizzare servizi di terze parti. Questo modello di maturità (Maturity Model) fornisce un quadro per favorire questa riflessione e per aiutare a identificare le opportunità di miglioramento in qualsiasi organizzazione.

Cosa è il Platform Engineering?

Ispirate alla cooperazione funzionale incrociata promessa dal DevOps, le piattaforme — e con esse la disciplina del Platform Engineering — sono emerse nelle imprese come una forma esplicita di articolare tale cooperazione. Le piattaforme curano e offrono la fruizione di funzionalità comuni, framework ed esperienze. Nel contesto di questo gruppo di lavoro e delle pubblicazioni correlate, l’attenzione è rivolta in particolare alle piattaforme che facilitano e accelerano il lavoro di utenti interni come i team di prodotto e di sviluppo applicativo.

Il Platform Engineering è la pratica di progettare e fornire tali piattaforme informatiche a sviluppatori e utenti interni, e comprende tutti gli aspetti delle piattaforme e le loro capacità — le loro persone, i processi, le policy e le tecnologie; così come i risultati aziendali desiderati che le guidano.

Per avere un contesto completo, si raccomanda di leggere il white paper della CNCF sulla Definizione delle Piattaforme ( https://tag-app-delivery.cncf.io/whitepapers/platforms/).

Come utilizzare questo modello

Con l’aumento dell’importanza del Platform Engineering negli ultimi anni, sono emersi alcuni schemi ricorrenti. Organizzando questi schemi e le nostre osservazioni in un modello progressivo di maturità, miriamo ad orientare i team di piattaforma verso le sfide che potrebbero affrontare e le opportunità da perseguire. Ogni aspetto è descritto da un continuum di caratteristiche dei diversi team e delle organizzazioni ad ogni livello all’interno dell’aspetto. Ci aspettiamo che i lettori si ritrovino nel modello e identifichino opportunità nei livelli adiacenti.

Da notare che ogni livello aggiuntivo di maturità è accompagnato da maggiori requisiti di finanziamento e tempo delle persone. Pertanto, raggiungere il livello più alto non dovrebbe essere un obiettivo di per sé. Ogni livello descrive qualità che dovrebbero apparire in quella fase. I lettori devono considerare se la loro organizzazione e il loro contesto attuale beneficerebbero di queste qualità, dato l’investimento richiesto.

Tenete presente che ogni aspetto del Maturity Model è destinato ad essere valutato ed evoluto indipendentemente. Tuttavia, come in qualsiasi sistema socio-tecnico questi aspetti sono complessi e interrelati. Così, potreste scoprire che per migliorare in un aspetto dovete raggiungere un livello minimo anche in un altro aspetto.

È inoltre importante riconoscere che le implementazioni delle piattaforme variano da organizzazione a organizzazione. Assicuratevi di valutare lo stato attuale della trasformazione Cloud Native del vostro gruppo. Una risorsa fenomenale da sfruttare per questa valutazione è il Cloud Native Maturity Model (Modello di Maturità Cloud Native).

Infine, questo modello incoraggia le organizzazioni a maturare la loro disciplina di Platform Engineering e le piattaforme risultanti attraverso una pianificazione intenzionale. Tale pianificazione e disciplina sono di per sé un requisito per lo sviluppo di piattaforme mature e per l’evoluzione continua.

In generale, tenete presente che mappare la vostra organizzazione in un modello ne cattura lo stato attuale per abilitare l’iterazione progressiva e il miglioramento. Martin Fowler scrive: “Il vero risultato di una valutazione del modello di maturità non è il livello in cui vi trovate ma l’elenco delle cose su cui lavorare per migliorare. Il vostro livello attuale è semplicemente un pezzo di lavoro intermedio per determinare quell’elenco di competenze da acquisire successivamente.” In tale ottica, cercate di ritrovarvi nel modello, per poi identificare opportunità nei livelli adiacenti.

Contesto dietro a questo lavoro

È importante comprendere il contesto in cui un documento è stato scritto. Le seguenti sezioni delineano sommariamente il contesto dietro al modello, così come alcune aspettative per i lettori.

Pubblico di riferimento

Ogni lettore porta con sé un contesto unico e trarrà insegnamenti unici da questo modello. Di seguito sono elencate alcune persone che abbiamo in mente, assieme alle loro possibili motivazioni per interagire con questo modello:

  • CTO, VP e direttori della tecnologia: Leader che cercano di tracciare una strada verso la trasformazione digitale e una maggiore produttività degli sviluppatori.
  • Responsabili dell’ingegneria: Gruppi e individui che cercano di potenziare gli ingegneri per fornire valore con meno oneri e maggiore efficienza.
  • Enterprise architects: Individui che si orientano nel paesaggio tecnologico moderno e disegnano una prospettiva orientata al valore e alla soluzione dei problemi tecnologici.
  • Platform Engineers e Product Manager di piattaforma: Team e persone che cercano di costruire la migliore esperienza possibile per i costruttori di piattaforme e gli utenti di piattaforme.
  • Fornitori e responsabili di progetto: Organizzazioni e ingegneri che desiderano progettare strumenti per consentire agli utenti di avere successo con piattaforme e funzionalità.
  • Sviluppatori di applicazioni e prodotti: Utenti di piattaforma che cercano di comprendere più dettagliatamente cosa possono aspettarsi da una piattaforma interna.

Comprensione dei livelli

Questo modello non è inteso per classificare un’organizzazione o un team di piattaforma come interamente “Livello 1” o “Livello 4”. Ogni aspetto dovrebbe essere considerato indipendentemente dagli altri; le caratteristiche di ciascun livello rappresentano un continuum all’interno di quell’aspetto ma non sono necessariamente accoppiate ad altri aspetti allo stesso livello. Ancora di più, molte organizzazioni vedranno caratteristiche di più di un livello applicabili ai loro team e al loro lavoro. Questo perché nessun livello è intrinsecamente buono o cattivo, solo contestuale agli obiettivi del team.

Le etichette per ciascun livello hanno lo scopo di riflettere l’impatto del Platform Engineering nella vostra organizzazione. Riconoscendo la vostra organizzazione a un dato livello, guadagnerete intuizioni sulle opportunità che seguono ai livelli successivi. I livelli con numerazione più bassa comprendono soluzioni più tattiche, mentre quelli con numerazione più alta sono più strategici.

Questo produce un potenziale processo per lo sviluppo e la maturazione della piattaforma che è simile allo sviluppo di altri prodotti digitali: occorre prima riconoscere un problema e la necessità di una nuova soluzione, poi sviluppare prodotti minimamente validi (MVP) come soluzioni ipotizzate, terzo iterare per risolvere al meglio il problema e assicurarsi che si adatti ai vostri clienti e infine scalare e ottimizzare il prodotto per risolvere il problema per molti team e utenti.

Simile al Modello di Maturità Cloud Native CNCF, questo modello evidenzia che i risultati aziendali di successo possono essere raggiunti solo bilanciando persone, processi e policy insieme alla tecnologia. In particolare, questo modello introduce aspetti che spesso non sono completamente di competenza di un singolo team interno, ma richiedono piuttosto la cooperazione attraverso il dipartimento di ingegneria e molto spesso l’organizzazione più ampia.

Ma non sembra adattarsi

Questo è perfettamente normale! Tutte le organizzazioni e gruppi hanno dinamiche e parametri specifici.

Tenete presente che l’obiettivo di questo documento non è prescrivere una formula rigida, ma piuttosto un quadro che potete applicare alle vostre circostanze. Non ogni singola parola potrebbe essere rilevante per voi, ma speriamo che il contenuto vi ispiri a riflettere sul vostro, specifico, viaggio nella piattaforma, prendendo ciò che ha senso e lasciando il resto.

L’obiettivo di questo modello è fornire uno strumento per aiutare e guidare i praticanti dell’ingegneria delle piattaforme, gli stakeholder e altre parti interessate. La progettazione e l’implementazione delle piattaforme non è una scienza esatta, ma dipende piuttosto dalle esigenze di progetto di ogniorganizzazione in quel particolare momento e luogo.

Tabla del modelo

Aspect
ProvisionalOperativoEscalableOptimizable
InvestimentoCome vengono allocati il personale e i fondi alle capacità della piattaforma?Volontario o TemporaneoTeam DedicatoCome ProdottoEcosistema Abilitato
AdozionePerché e come gli utenti scoprono e utilizzano le piattaforme interne e le funzionalità della piattaforma?ErraticaSpinta EstrinsecaTrazione IntrinsecaPartecipativa
InterfacceCome gli utenti interagiscono e consumano le funzionalità della piattaforma?Processi PersonalizzatiStrumentazione StandardSoluzioni Self-ServiceServizi Integrati
OperativitàCome vengono pianificate, priorizzate, sviluppate e mantenute le piattaforme e le loro funzionalità?Su RichiestaTracciato CentralmenteAbilitato CentralmenteServizi Gestiti
MisurazioneQual è il processo per raccogliere e incorporare feedback e apprendimenti?Ad hocRaccolta coerenteInsightsQuantitativa e Qualitativa

Modello in Dettaglio



Conclusioni

Le piattaforme e i loro manutentori forniscono una base per lo sviluppo agile di prodotti digitali. Offrono una raccolta coerente di capacità e funzionalità che abilitano lo sviluppo e il rilascio efficienti del software. Questo modello di maturità fornisce una mappa per il vostro viaggio nel Platform Engineering.

Nota di traduzione: Per una migliore comprensione del contesto e al fine di evitare ambiguità, occasionalmente alcuni termini specifici — come platform engineering, developer advocate, build, smoke test, … — sono stati mantenuti in lingua originale. Si consiglia di fare riferimento al Glossario Cloud Native della CNCF, al Platforms WG Glossary di questo gruppo di lavoro e alla restante letteratura in materia per ogni dubbio e approfondimento.