Uno degli obiettivi principali dell'ingegneria del software è risolvere i problemi e creare valore, ma questo obiettivo può perdersi nelle difficoltà quotidiane dello sviluppo moderno. Una piattaforma interna per sviluppatori (IDP) è progettata per alleggerire il carico di lavoro degli sviluppatori, in modo che possano concentrarsi sullo sviluppo del software. L'obiettivo principale di una piattaforma interna per sviluppatori non è solo quello di distribuire software più velocemente, ma anche di ridurre lo stress mentale degli sviluppatori creando modelli e automazione sicuri, efficienti e ben supportati, spesso chiamati "percorsi dorati", per la creazione e il deployment di applicazioni.
Una piattaforma interna per sviluppatori integra un insieme selezionato di tecnologie e strumenti, creati e gestiti da un team dedicato alla piattaforma. Questo stack spesso include soluzioni per l'orchestrazione dei container, strumenti di infrastruttura come codice (IaC) e pipeline CI/CD basate su progetti open source.
Una piattaforma interna per sviluppatori (IDP) dovrebbe essere considerata come un prodotto, con gli sviluppatori come utenti. È fondamentale affrontare i loro casi d'uso, raccogliere il loro feedback e perfezionare continuamente la piattaforma attraverso l'iterazione. L'IDP è lo strato che collega questi strumenti, semplificandone la complessità in modo che gli sviluppatori possano eseguire le attività attraverso un modello self-service semplice. L'obiettivo è rendere il modo giusto il modo semplice, consentendo agli sviluppatori di creare e distribuire con sicurezza e autonomia.
Il carico cognitivo si riferisce alla quantità totale di sforzo mentale utilizzato nella memoria di lavoro di una persona. È la larghezza di banda mentale di cui dispone uno sviluppatore. Quando questa larghezza di banda viene consumata da attività non di programmazione, la loro capacità di concentrarsi sulla risoluzione di problemi complessi diminuisce.
Gli sviluppatori spesso devono passare da decine di strumenti, dashboard e file di configurazione diversi solo per eseguire il deployment di una semplice modifica. Ogni cambio di contesto costringe il cervello a caricare un nuovo set di informazioni, il che è mentalmente faticoso. Questo continuo destreggiarsi tra strumenti e processi aumenta il carico cognitivo, che può portare al burnout, a più errori e a un'innovazione più lenta.
Il platform engineering è la disciplina che si occupa della progettazione, della creazione e della manutenzione di una piattaforma interna per sviluppatori. Pensa in questo modo: se l'IDP è il prodotto, il team di progettazione della piattaforma è il team di prodotto responsabile del suo ciclo di vita. I loro clienti sono gli sviluppatori dell'organizzazione.
Questo approccio significa che la piattaforma viene trattata come qualsiasi altro prodotto software. Il team di ingegneria della piattaforma è responsabile della comprensione delle esigenze degli sviluppatori, della definizione di una roadmap e della fornitura di un insieme di strumenti affidabili, sicuri e facili da usare.
Una domanda frequente riguarda la distinzione tra piattaforma e portale. Sebbene i termini siano talvolta usati in modo intercambiabile, rappresentano diversi livelli dell'esperienza dello sviluppatore. Pensa alla piattaforma interna per sviluppatori (IDP) come all'intero motore, che comprende tutti gli strumenti, i flussi di lavoro e l'infrastruttura che alimentano il ciclo di vita dello sviluppo.
Il portale interno per sviluppatori, invece, è la dashboard di questo motore. È la Graphic User Interface (GUI) che fornisce agli sviluppatori un unico luogo centralizzato per accedere alle funzionalità della piattaforma. Un portale per sviluppatori può aiutare gli sviluppatori a scoprire e utilizzare strumenti, visualizzare la documentazione, creare nuovi servizi e controllare lo stato delle loro build senza la necessità di comprendere il complesso meccanismo sottostante. Sebbene un IDP completo includa spesso un portale per sviluppatori per migliorare l'usabilità e la rilevabilità, la piattaforma stessa è l'insieme completo di tecnologie sottostanti e processi automatizzati.
Sebbene le esigenze di ogni azienda siano diverse, la maggior parte degli IDP è costituita da alcuni componenti principali che lavorano insieme. Questi componenti si concentrano sulla creazione di un percorso semplificato, sicuro ed efficiente dallo sviluppo alla produzione.
La developer experience è l'interfaccia centrale che astrae la complessità sottostante dell'infrastruttura. Spesso si tratta di un portale per sviluppatori o di un'interfaccia a riga di comando (CLI) che offre agli sviluppatori l'accesso self-service agli strumenti, alla documentazione e alle risorse di cui hanno bisogno. Ad esempio, i plug-in IDE come Cloud Code aiutano gli sviluppatori a scrivere ed eseguire il debug del codice direttamente all'interno dei loro strumenti familiari, mentre i portali creati con soluzioni come Backstage su Google Cloud forniscono una singola visualizzazione consolidata dell'intero ecosistema software.
I modelli di app, a volte chiamati percorsi ideali, forniscono agli sviluppatori una struttura predefinita e basata sulle best practice per le nuove applicazioni. Questi modelli possono includere codice boilerplate, pipeline CI/CD configurate, file di infrastruttura come codice e dashboard di monitoraggio. Risorse come l'App Design Center possono aiutare i team a creare e gestire un catalogo di questi modelli, garantendo che le best practice siano facilmente individuabili e riutilizzabili. Questo approccio accelera l'onboarding degli sviluppatori e crea coerenza tra tutti i servizi.
Questo componente integra la sicurezza direttamente nel flusso di lavoro di sviluppo. Automatizza l'applicazione di criteri di sicurezza, come Identity and Access Management (IAM), controllo degli accessi basato su ruoli (RBAC), criteri di rete, scansione delle vulnerabilità e hardening dell'infrastruttura. Incorporando la sicurezza nelle fondamenta della piattaforma, i team possono "anticipare la sicurezza" e affrontare i potenziali problemi nelle prime fasi del ciclo di vita dello sviluppo. In questo modo, la sicurezza non diventa un collo di bottiglia appena prima della produzione.
Una base incentrata sull'applicazione crea uno strato di astrazione standardizzato sull'infrastruttura sottostante. Fornisce un modello unificato per le principali preoccupazioni operative, offrendo un approccio unico a networking, sicurezza e osservabilità che funziona in tutti gli ambienti. Questa coerenza semplifica la gestione e riduce il carico cognitivo sugli sviluppatori, che non devono preoccuparsi dei dettagli unici di ogni destinazione di deployment, come una specifica configurazione del cluster Google Kubernetes Engine (GKE).
Una IDP gestisce i runtime dell'applicazione in cui viene eseguito il codice. Questi runtime possono essere piattaforme di orchestrazione di container come GKE, piattaforme serverless come Cloud Run o altri ambienti di computing. IDP automatizza il provisioning, la configurazione e la manutenzione di questi runtime. Ciò consente agli sviluppatori di eseguire il deployment delle proprie applicazioni in modo rapido e affidabile senza la necessità di competenze approfondite nei servizi di computing sottostanti.
La piattaforma di applicazioni cloud è l'insieme integrato di servizi cloud che funge da backbone per l'intero IDP. Riunisce calcolo, archiviazione, rete, API cloud, strumenti CI/CD e osservabilità in un sistema coeso. La creazione di un IDP su una base completa come Google Cloud può consentire ai team di sfruttare servizi gestiti potenti per accelerare lo sviluppo, migliorare l'affidabilità e garantire che la piattaforma possa scalare per soddisfare la domanda.
L'adozione di una piattaforma interna per sviluppatori può offrire vantaggi significativi alle organizzazioni di ingegneria.
Esperienza di sviluppo migliorata
Riducendo il carico cognitivo e fornendo flussi di lavoro self-service semplici, le IDP possono contribuire a migliorare l'esperienza degli sviluppatori.
Time to market più rapido
L'automazione e la standardizzazione possono contribuire ad accelerare il processo di creazione e deployment del software, consentendo ai team di fornire valore ai clienti più rapidamente.
Maggiore affidabilità e coerenza
Le IDP possono contribuire a imporre le best practice attraverso percorsi privilegiati e possono portare a deployment di applicazioni più coerenti e affidabili.
Sicurezza e conformità migliorate
Le policy di sicurezza possono essere integrati direttamente nei modelli della piattaforma e nei workflow automatizzati, garantendo che tutti i nuovi servizi soddisfino i requisiti di conformità fin dall'inizio.
Maggiore autonomia degli sviluppatori
La centralizzazione della gestione della piattaforma può aiutare a liberare gli sviluppatori in modo che possano concentrarsi sulle funzionalità e dar loro l'autonomia per gestire il ciclo di vita delle loro applicazioni.
Per vedere come funziona una piattaforma per sviluppatori interni nella pratica, esaminiamo un esempio comune di piattaforma per sviluppatori interni che utilizza Google Cloud. Immagina che uno sviluppatore debba avviare un nuovo microservizio che richiede un proprio database e una pipeline CI/CD.
Lo sviluppatore dovrebbe creare manualmente un Cloud Source Repository, scrivere un modulo Terraform per eseguire il provisioning di un database Cloud SQL, creare e configurare un file di deployment Google Kubernetes Engine (GKE) (YAML), configurare un nuovo trigger in Cloud Build e gestire le autorizzazioni IAM per tutto. Potrebbe richiedere giorni e coinvolgere più team.
La procedura è molto più semplice.
Richiesta dal portale: lo sviluppatore accede al portale per sviluppatori e trova un modello predefinito per un "microservizio Python con un database Cloud SQL".
Input semplici: compilano un breve modulo con il nome del servizio e il nome del team.
Inizia l'orchestrazione: lo sviluppatore fa clic su "Crea" e l'orchestratore della piattaforma prende il controllo.
Azioni automatizzate: dietro le quinte, l'orchestratore esegue una serie di attività automatizzate utilizzando le API Google Cloud:
Completamento: il processo viene completato in pochi minuti. Lo sviluppatore riceve una notifica con i link al nuovo repository, all'applicazione in esecuzione nell'ambiente di gestione temporanea GKE e alle credenziali del database, il tutto senza scrivere una sola riga di configurazione.
Per saperne di più sui concetti e sulle tecnologie che compongono una piattaforma per sviluppatori interni, consulta queste risorse aggiuntive:
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.