Jump to section

Cos'è l'ingegneria della piattaforma?

Copia URL

L'ingegneria della piattaforma è una disciplina attinente allo sviluppo software che ha lo scopo di migliorare la produttività, il ciclo di vita delle applicazioni e la velocità di rilascio.

Può essere considerata un approccio multidisciplinare all'ottimizzazione della produttività e della cultura del lavoro, che genera anche un impatto positivo sugli utili. Dal punto di vista aziendale, i programmi di ingegneria della piattaforma ottimizzano il time to market delle applicazioni, le operazioni e l'efficienza delle attività di sviluppo, distribuzione, gestione e manutenzione delle applicazioni. Dal punto di vista culturale, invece, hanno lo scopo di migliorare le interazioni tra i team tramite modalità più collaborative e di evitare situazioni di sovraccarico cognitivo, offrendo agli sviluppatori gli strumenti e il supporto necessari per dedicarsi alle attività più strategiche.

L'obiettivo ultimo dell'ingegneria della piattaforma è individuare le inefficienze che ancora ostacolano e rallentano il lavoro dei team di sviluppo e ridurle offrendo funzionalità e strumenti comuni e riutilizzabili per mezzo di un'Internal Developer Platform (IDP).

L'ingegneria della piattaforma può riferirsi tanto a un ruolo aziendale specifico, quanto a una disciplina o metodologia adottata da un intero team.

Promuovendo coerenza ed efficienza, offre alle aziende notevoli benefici poiché contribuisce a migliorare la cooperazione tra i team e a ridurre la curva di apprendimento per i nuovi membri.

L'obiettivo principale dell'ingegneria della piattaforma è ridurre il tempo dedicato alle attività amministrative che compromettono la produttività degli sviluppatori e generano ostacoli nel ciclo di vita delle applicazioni. A tale scopo, i team e i professionisti che si occupano di ingegneria della piattaforma sono responsabili della gestione dell'infrastruttura e della creazione di una serie di strumenti che supportino gli sviluppatori in un flusso di lavoro pensato appositamente per rispondere alle loro necessità, detto anche "golden path".

Ogni team di sviluppo ha le proprie esigenze, anche all'interno della stessa azienda, e ogni piattaforma ha le proprie caratteristiche. Gli ingegneri della piattaforma si occupano infatti di selezionare una gamma di strumenti e processi capaci di rispondere alle specifiche esigenze aziendali al fine di semplificare lo sviluppo software tramite l'introduzione di capacità self service e l'automazione dell'infrastruttura. Adattabilità è la parola chiave di questo approccio che non vincola gli sviluppatori a soluzioni specifiche, ma permette loro di utilizzare gli strumenti più confacenti alle esigenze dei singoli progetti. Allo stesso tempo, gli sviluppatori non hanno bisogno di apprendere nuove competenze e di occuparsi di attività superflue, il che permette loro di concentrarsi sulla scrittura del codice.

I team di ingegneria della piattaforma garantiscono anche l'applicazione di framework affidabili in materia di governance, così da poter controllare le risorse, la sicurezza e la conformità in tutti gli ambienti. Ciò costituisce un ulteriore vantaggio per le aziende, perché offre un approccio pratico al monitoraggio delle prestazioni, al tracciamento dei costi e all'identificazione di potenziali rischi e vulnerabilità. 

Origine e sviluppo dell'ingegneria della piattaforma

L'ingegneria della piattaforma nasce in risposta a un dibattito emergente in ambito tecnologico: gli sviluppatori non dovrebbero occuparsi dell'infrastruttura, in particolare nel caso degli ambienti ibridi e multicloud. 

Da sempre gli sviluppatori hanno la responsabilità di valutare e scegliere lo strumento più adeguato alle proprie esigenze, oppure di crearlo da zero. Mentre prima dello sviluppo tecnologico, questo tipo di aspettativa poteva essere sostenibile, con l'attuale ritmo di crescita delle aziende supportare gli utenti e ottenere scalabilità a livello dell'intera organizzazione in maniera efficiente è sempre più complesso.

Ogni giorno vengono rilasciati nuovi strumenti o nuove funzionalità da sperimentare, e valutare e selezionare le soluzioni più adatte richiede tempo. L'apprendimento di nuove competenze per lo sviluppo di strumenti, la ricerca di nuove tecnologie, la richiesta di servizi relativi alle applicazioni e all'infrastruttura e l'analisi delle minacce alla sicurezza più recenti contribuiscono ad aumentare notevolmente il carico cognitivo degli sviluppatori, sottraendo tempo prezioso allo sviluppo dei prodotti offerti e al raggiungimento degli obiettivi aziendali. 

Nell'ottica dell'ingegneria della piattaforma, se gli sviluppatori sono i clienti, le Internal Developer Platform (IDP) sono il prodotto.

Configurata dai team di ingegneria della piattaforma, un'IDP consiste in un set standardizzato di tecnologie e strumenti self service interni essenziali agli sviluppatori per creare, distribuire e mantenere il codice durante l'intero ciclo di vita di un'applicazione. Le toolchain integrate nelle IDP rendono più vantaggioso e produttivo il flusso di lavoro degli sviluppatori, sono incentrate su fattori come la sicurezza e la scalabilità e, in ultima analisi, permettono alle aziende di creare un maggiore valore per i clienti.

Realizzare un'IDP funzionale significa individuare attivamente inefficienze e carenze nell'attività degli sviluppatori e selezionare gli strumenti e le tecnologie in grado di ridurle o sopperire a tali mancanze. Inizia da un approccio minimalista, incorporando solo gli strumenti che sai offriranno un vantaggio al tuo team di sviluppo. Quindi espandi le funzionalità in modo graduale, cosicché si evolvano insieme alle esigenze degli sviluppatori, anche in base al loro feedback. 

Come la metodologia DevOps, l'ingegneria della piattaforma ha l'obiettivo di favorire l'allineamento tra sviluppatori e team operativi aumentando l'automazione e la collaborazione. Se si confrontano le due pratiche, l'ingegneria della piattaforma può essere considerata un elemento utile ad affrontare le sfide legate all'estensione su larga scala dell'approccio DevOps all'interno dell'azienda.

Per definizione, le pratiche DevOps prevedono che gli sviluppatori cerchino, imparino a conoscere, distribuiscano e gestiscano il software in autonomia; ciò implica anche un livello più alto di conoscenza e controllo del software in fase di produzione. Tuttavia, questo non sempre ha un effetto positivo sul fatturato, anzi: le attività amministrative accrescono il lavoro degli sviluppatori e il carico cognitivo aumenta.

Un team potrebbe essere interessato a distribuire una funzione, ma non essere dotato delle competenze necessarie. Potrebbe disporre delle competenze necessarie, ma non avere la necessità di creare la funzione. Potrebbe avere sia le competenze sia l'esigenza, ma non la sicurezza e la garanzia di efficienza economica per realizzare l'iniziativa. Lo scenario si complica ulteriormente con il ritmo di crescita e di espansione dell'azienda.

L'adozione della metodologia DevOps e della distribuzione continua implica toolchain e pipeline più lunghe. In più, la necessità di integrare la sicurezza in ogni fase della creazione e della gestione di un'applicazione obbliga gli sviluppatori a conoscere in maniera approfondita anche gli aspetti più complessi delle applicazioni che creano.

Questo livello di autonomia offre vantaggi in termini di scelta, ma rischia anche di aumentare la responsabilità e il carico di lavoro mentale: un aspetto di cui non beneficia né l'azienda, né il singolo.

Ponendo l'accento sull'empatia e sul percorso dell'utente, l'ingegneria della piattaforma sfrutta la metodologia DevOps trovando modi più efficaci per automatizzare la distribuzione delle applicazioni, migliorare la collaborazione e la comunicazione, ridurre gli errori, ottimizzare la sicurezza e la conformità, aumentare l'efficienza e, soprattutto, reindirizzare le potenzialità degli sviluppatori laddove necessario. 

Sia l'ingegneria della piattaforma sia la site reliability engineering riguardano la creazione e la manutenzione dei sistemi. La differenza tra i due approcci risiede nell'obiettivo di ciascuna pratica. La SRE è orientata ai team dedicati alle operazioni IT e consente loro di utilizzare il software come strumento di gestione dei sistemi, risoluzione dei problemi e automazione delle attività operative.

L'ingegneria della piattaforma, invece, è incentrata sui team di sviluppo e permette loro di creare piattaforme per gestire i sistemi, risolvere i problemi e automatizzare le attività di sviluppo. 

Red Hat® OpenShift® è la soluzione ideale per i team di ingegneria della piattaforma perché offre una gamma completa di funzionalità e capacità, tra cui: BuildPipelinesGitOpsServerlessService Mesh.

La combinazione di OpenShift e Red Hat Developer Hub offre ai team di ingegneria della piattaforma i modelli di progetto, la documentazione e i flussi di lavoro necessari per realizzare e gestire efficacemente una Internal Developer Platform (IDP) che sia specifica per gli obiettivi e le esigenze aziendali.

Con Red Hat Developer Hub, gli sviluppatori possono collegarsi a una dashboard unificata dove accedere a un'ampia gamma di strumenti, software, modelli, documentazione e altre risorse accuratamente selezionate che permettono di ottenere cicli di sviluppo software più efficienti. Inoltre, raccogliendo su un'unica piattaforma tutte le informazioni e le risorse necessarie, Developer Hub riduce anche i tempi di onboarding per gli sviluppatori che vogliono prendere parte a progetti esistenti.

L'approccio open source e innovativo alla base della piattaforma assicura flessibilità prevenendo il rischio del vendor lock in, mentre la reputazione di Red Hat garantisce stabilità, supporto e affidabilità. Inoltre, la possibilità di integrare agevolmente nuovi strumenti e servizi tramite plugin e l'elevata scalabilità rendono Developer Hub una soluzione adatta alle esigenze di sviluppo attuali e future.

Grazie a soluzioni e tecnologie quali OpenShift, Red Hat Developer Hub, Trusted Software Supply ChainAdvanced Cluster Security (ACS)Advanced Cluster Management (ACM)Ansible, gli ingegneri della piattaforma possono progettare e realizzare toolchain e flussi di lavoro integrati per semplificare e ottimizzare l'esperienza di sviluppo. 

Keep reading

ARTICOLO

Cos'è la metodologia DevSecOps?

Per sfruttare tutta l'agilità e la reattività di un approccio DevOps, occorre tenere conto anche di un altro elemento cruciale dell'intero ciclo di vita delle tue applicazioni: la sicurezza IT.

ARTICOLO

Cosa si intende con CI/CD?

Il metodo CI/CD introduce l'automazione costante e il monitoraggio continuo in tutto il ciclo di vita delle applicazioni, dalle fasi di integrazione e test a quelle di distribuzione e deployment.

ARTICOLO

Il ruolo di un ingegnere DevOps

Un ingegnere DevOps possiede competenze ed esperienze specifiche che promuovono collaborazione, innovazione e trasformazione all'interno di un'azienda.  

Scopri di più su DevOps

Prodotti

Un incontro conoscitivo approfondito con gli esperti di Red Hat in cui apprendere una metodologia agile e identificare gli strumenti open source più adatti a risolvere i problemi della tua azienda.

Collabora con il nostro team di consulenti strategici in grado di analizzare l'azienda nel suo insieme e valutare le sfide da affrontare, per aiutarti a superarle con soluzioni complete e convenienti.

Risorse