Blog

Platform Engineering: come semplificare lo sviluppo software moderno?

- -
Platform Engineering

Sviluppare un’applicazione moderna richiede molto più che scrivere codice.

Prima che un servizio arrivi all’utente, deve essere sviluppato, testato, configurato, distribuito nell’ambiente corretto, superare i controlli di sicurezza e infine essere monitorato. In questo processo entrano in gioco infrastruttura cloud, automazione, CI/CD, gestione degli accessi, monitoraggio e un numero sempre crescente di tecnologie.

Ognuna di queste risolve un problema specifico. Ma tutte insieme ne creano un altro: la complessità.

Man mano che l’infrastruttura diventa più avanzata, i team possono finire per dedicare sempre più tempo alla gestione delle modalità con cui il software viene sviluppato e distribuito, invece di concentrarsi sul prodotto stesso.

È proprio qui che entra in gioco il Platform Engineering.

Quando ogni team risolve lo stesso problema da zero

Immaginiamo diversi team che sviluppano applicazioni differenti all’interno della stessa organizzazione.

Ognuno ha bisogno di ambienti di sviluppo e test. Ognuno deve avere un processo per il rilascio di nuove versioni. Ognuno necessita inoltre di regole di sicurezza, monitoraggio, gestione degli accessi e configurazione dell’infrastruttura.

Se ogni team costruisce tutto questo in modo indipendente, l’organizzazione si ritrova non solo con molte applicazioni, ma anche con molti modi diversi di svilupparle e gestirle.

Un team crea il proprio metodo di deployment. Un altro ne costruisce uno diverso. Un problema già risolto una volta finisce così per essere affrontato nuovamente da più team.

Il Platform Engineering mira proprio a evitare questa ripetizione.

La complessità non scompare. Viene organizzata.

Invece di chiedere a ogni team di costruire autonomamente l’intero ambiente tecnico di cui ha bisogno, il Platform Engineering crea una base condivisa sulla quale i team possono lavorare.

Questo approccio può concretizzarsi attraverso una piattaforma interna di sviluppo, che riunisce strumenti, processi e automazioni utilizzati regolarmente all’interno dell’organizzazione.

Ad esempio, la creazione di un nuovo ambiente, il deployment di un’applicazione o l’attivazione del monitoraggio possono essere gestiti attraverso processi standardizzati e automatizzati.

Dietro le quinte continuano a esserci l’infrastruttura cloud, il CI/CD, le policy di sicurezza, la gestione degli accessi e le altre tecnologie.

La differenza è che gli sviluppatori non devono più configurare tutto da zero ogni volta che iniziano un nuovo progetto.

Un percorso definito per i problemi ricorrenti

Uno dei concetti del Platform Engineering è quello dei cosiddetti “golden paths”, ovvero percorsi consigliati per le attività che i team svolgono regolarmente.

Invece di chiedere a uno sviluppatore di prendere decine di decisioni tecniche per creare un nuovo servizio, la piattaforma può offrire un percorso già predisposto, in cui configurazione, sicurezza, monitoraggio e deployment sono stati definiti in anticipo.

Questo non significa che tutti i progetti debbano essere sviluppati esattamente nello stesso modo.

I progetti con esigenze specifiche devono mantenere la flessibilità necessaria. Ma per i problemi che sono già stati risolti, non c’è motivo che ogni team debba ripartire da zero.

La standardizzazione non deve limitare i team

Una piattaforma interna non crea valore semplicemente perché standardizza i processi.

Se introduce più passaggi, più requisiti e più ostacoli per gli sviluppatori, non fa altro che spostare la complessità da un punto all’altro.

Per questo motivo, il Platform Engineering considera la piattaforma stessa come un prodotto interno.

Il team che la sviluppa deve capire quali attività si ripetono, dove si perde tempo e quali parti dell’infrastruttura creano maggiori difficoltà. Questi processi possono quindi essere semplificati e messi a disposizione dei team in modo che possano utilizzarli autonomamente, senza dipendere continuamente dall’intervento di un altro gruppo.

L’obiettivo non è controllare ogni decisione tecnica. È standardizzare ciò che non ha bisogno di essere reinventato.

Il Platform Engineering non sostituisce il DevOps

Il Platform Engineering viene spesso citato insieme al DevOps, ma non ne rappresenta un sostituto.

Il DevOps ha introdotto un approccio più integrato alla collaborazione tra sviluppo e operations, con maggiore attenzione all’automazione, alla responsabilità condivisa e alla distribuzione continua del software.

Il Platform Engineering si basa su molti di questi principi. Con l’aumento del numero di team, applicazioni e tecnologie, alcune pratiche DevOps possono diventare servizi condivisi disponibili per l’intera organizzazione.

Invece di avere dieci team che sviluppano dieci varianti della stessa soluzione, una piattaforma comune può offrire una base standardizzata che ogni team può utilizzare e adattare alle proprie esigenze.

Come afferma Ermal Beqiri, fondatore di ALSoft:

“Quando infrastruttura, automazione e standard vengono organizzati all’interno di una piattaforma condivisa, gli sviluppatori possono concentrarsi maggiormente sul software che stanno costruendo.”

È questa l’idea alla base del Platform Engineering. Non un altro strumento da aggiungere a una lista di tecnologie già lunga, ma un modo per organizzarle meglio.

Lasciaci un messaggio Ti risponderemo entro 1 giorno lavorativo.