Cos’è Backstage?
Backstage è una piattaforma opensource per creare internal developer portal. È stata sviluppata da Spotify per offrire un’esperienza migliore nella gestione, evoluzione ed esplorazione del loro ecosistema software.
È stata rilasciata durante la Hack Week interna di Spotify nel marzo 2020 e successivamente donata alla Cloud Native Computing Foundation (CNCF).
Perché?
In Spotify hanno sempre creduto che la velocità e l’innovazione derivino dall’essere dotati di team di sviluppo autonomi. Tuttavia, la loro esperienza gli ha insegnato che più rapidamente si cresce, più l’ecosistema software tende a frammentarsi e diventare complesso. Per gestire questo caos e indirizzare le loro energie dove servono hanno costruito Backstage.
In sostanza, Backstage permette di:
- Avere velocità senza compromettere la sicurezza e l’affidabilità
- Scalare senza compromettere la qualità
- Gestire l’ecosistema software sempre più caotico di Spotify.
Cosa è?
- Backstage è un portale per sviluppatori che funge da unico frontend per l’intera infrastruttura, indipendentemente da come e dove i singoli componenti siano effettivamente in esecuzione o da chi li gestisca. Integra:
- Strumenti come CI/CD, monitoraggio Kubernetes, strumenti di sicurezza (Snyk), test (Lighthouse), ecc.
- Servizi/Applicazioni/Dati: fondamentalmente tutto il software e i dati che i team creano e gestiscono.
- Documenti relativi a componenti, API, librerie e anche tutorial, guide, organigrammi e diagrammi di sistema.
In breve Backstage aiuta voi e il vostro team nella gestione e manutenzione del software di cui siete proprietari. Fornisce una visione unificata di tutto il vostro software: servizi, librerie, siti web, modelli di machine learning. In questo modo potete scoprire tutto il software aziendale e chi ne è responsabile.
Backstage semplifica le seguenti operazioni:
- Creazione di nuovi ambienti di sviluppo in pochi secondi, in linea con le best practice.
- Gestione di tutto il software di cui siete proprietari o manutentori in un’unica posizione centralizzata.
- Navigazione delle risorse dell’intero ecosistema software, facilitando la collaborazione all’interno della vostra organizzazione.
Concetti e filosofia
Backstage è costituito da tre parti. Abbiamo suddiviso Backstage in questo modo perché abbiamo identificato tre gruppi di collaboratori che lavorano con Backstage in tre modi diversi:
- Core: Sono le funzionalità di base sviluppate dai principali sviluppatori nel progetto open source.
- App: È un’istanza di un’app Backstage che viene distribuita e personalizzata. L’app collega le funzionalità di base con i plugin aggiuntivi. L’app è creata e mantenuta dagli sviluppatori che l’hanno creata (di solito un team di produttività all’interno di un’azienda).
- Plugin: Sono funzionalità aggiuntive che rendono l’applicazione Backstage utile per l’azienda. I plugin possono essere specifici per un’azienda o open source e riutilizzabili.
Filosofia di base
Backstage è l’interfaccia
È un vero e proprio aggregatore. Senza dubbio, avrete molti strumenti di infrastruttura e desiderate esporre tutti questi strumenti attraverso la stessa interfaccia. Backstage non mira a reimplementarli.
Un buon esempio è CI/CD, in cui si desidera mostrare lo stato della build. Tuttavia, se si desidera risolvere i problemi della build, probabilmente è meglio avviare il sistema esterno. Reimplementare l’intero portale del sistema esterno probabilmente non è la soluzione ai vostri problemi.
Backstage raramente è la fonte della verità, ma aggrega informazioni da altri sistemi esterni. Questo lo rende molto più flessibile e facile da adottare. Invece di sostituire tutto ciò che è presente nella vostra infrastruttura, con Backstage aggiungete un elemento ulteriore, riunendo tutte le vostre fonti di verità in un’unica interfaccia.
Backstage abbraccia l’autonomia
In Spotify, hanno una forte cultura dell’autonomia. Fondamentalmente, ogni squadra è in grado di operare in modo indipendente e prendere le decisioni migliori per sé stessa. Fin dall’inizio, sapevano che non avrebbero potuto avere un grande team della piattaforma centrale che dettasse tutto dall’alto verso il basso e implementasse l’intera piattaforma per tutti. Questo è il motivo per cui Backstage è stato costruito su un meccanismo di plugin.
All’interno di Spotify, hanno un team di 4-6 persone che gestisce la distribuzione interna di Backstage. Poi, ci sono centinaia di plugin creati e gestiti da oltre 100 altri team che possiedono quel settore di competenza. Ad esempio, il plugin che mostra lo stato delle build correnti è fornito dal team che possiede i sistemi di build; oppure il plugin che mostra lo stato delle pipeline dei dati è di proprietà del team dati.
L’autonomia accelera lo sviluppo e mantiene gli esperti al centro del problema.
Backstage richiede una chiara proprietà
Per ogni software di un’azienda, riteniamo che dovrebbe esserci un unico team designato come punto di contatto. Questo team dovrebbe essere il proprietario dei metadati del software e avere la responsabilità di dichiarare le dipendenze del software.
Seguiamo il modello GitOps, che prevede di mettere la proprietà nelle mani dei team che possiedono il software. Invece di cercare di creare un unico luogo centrale di proprietà, assegniamo la proprietà ai team che sono responsabili dello sviluppo e del mantenimento del software. Questo approccio promuove la chiara responsabilità e la presa di decisioni efficaci da parte dei team che conoscono meglio il proprio software.
Cos’è Backstage Software Catalog?
Il Backstage Software Catalog è un sistema centralizzato che consente di gestire la proprietà e i metadati di tutto il software all’interno di un determinato ecosistema. Si basa sull’utilizzo di file yaml di metadati che vengono memorizzati insieme al codice e successivamente raccolti e visualizzati in Backstage.
Il Software Catalog può essere visto come un inventario completo per il monitoraggio di tutti i servizi, i siti web, le librerie, le pipeline di dati, i modelli di machine learning e qualsiasi altro tipo di software che viene utilizzato all’interno di un’azienda. Attraverso il Software Catalog è possibile trovare informazioni sui metadati relativi al software, come ad esempio il nome, il team di riferimento, lo stato di sviluppo (pronto per la produzione o in fase sperimentale) e molto altro.
Tuttavia, il Software Catalog non è semplicemente un inventario. Esso tiene traccia delle relazioni tra i vari software, creando un vero e proprio grafico delle interconnessioni tra i diversi componenti. Ad esempio, è possibile identificare quali servizi dipendono da un determinato database o da un argomento Kafka, quali librerie condividono e a quale sistema software più ampio appartengono.
I benefici del Software Catalog:
- Gestione centralizzata: Backstage consente di gestire tutti i servizi dell’azienda, indipendentemente dalla loro quantità, in un’unica posizione.
- Tracciabilità e responsabilità: è possibile individuare facilmente il software e i servizi di cui si è responsabili, nonché identificare chi è responsabile di una determinata tecnologia all’interno dell’azienda.
- Panoramica uniforme: ogni team può visualizzare tutti i servizi di cui è proprietario e le relative risorse, come implementazioni, pipeline di dati, stato delle richieste di pull, ecc.
- Plugin per i metadati: l’architettura dei plugin di Backstage consente di integrare i metadati del catalogo software con altre funzionalità di gestione, come il monitoraggio delle risorse e i test.
- Supporto per la scalabilità delle organizzazioni di ingegneria: il Software Catalog si adatta alle dimensioni dell’organizzazione, consentendo di tenere traccia di tutti i software presenti nell’ecosistema, che si tratti di una grande azienda o di una piccola realtà appena avviata.
La modellazione dell’ecosistema utilizzando il Software Catalog
L’unità fondamentale del catalogo è un’entità che rappresenta una parte dell’ecosistema software. Queste entità possono essere vari tipi di software o concetti più ampi, come sistemi, domini, utenti e gruppi. Pur avendo una struttura dati generale comune, ogni tipo di entità può avere uno schema, una semantica e relazioni diverse con le altre.
Nel Software Catalog di Backstage, il software viene spesso modellato in tre diverse entità:
- I componenti rappresentano singole parti di software.
- Le API definiscono i confini tra i diversi componenti.
- Le risorse rappresentano le infrastrutture fisiche o virtuali necessarie per il funzionamento di un componente.
Man mano che il Software Catalog si espande, potrebbe diventare difficile tenere traccia delle relazioni tra le diverse entità. La modellazione dell’ecosistema introduce ulteriori concetti per raggruppare queste entità:
- I sistemi sono un insieme di entità che collaborano per svolgere specifiche funzioni.
- I domini mettono in relazione le entità e i sistemi con una parte specifica del business.
Questo concetto di modellazione crea un livello di astrazione (i sistemi) che permette agli utenti di comprendere meglio il funzionamento dell’ecosistema software senza dover conoscere tutti i dettagli di implementazione. Quando si identifica un gruppo di sistemi che condividono determinate caratteristiche (come l’obiettivo aziendale), essi possono essere raggruppati all’interno di un dominio.
In sintesi, il Software Catalog comprende vari tipi di entità come domini, sistemi, componenti, API, risorse, utenti e gruppi. Esistono anche diversi tipi di software come servizi, siti web, librerie, OpenAPI, GraphQL, ecc. Le relazioni tra le entità possono essere definite attraverso concetti come “ownedBy” (di proprietà di), “providesApi” (fornisce API), “memberOf” (membro di), “dependencyOf” (dipendenza di), e così via.
È importante sottolineare che questo modello non è definitivo e può essere adattato ed esteso per soddisfare le specifiche esigenze della vostra organizzazione, così come le definizioni di risorse personalizzate in Kubernetes. Ad esempio, nell’installazione di Spotify, vengono anche modellate le applicazioni native e i modelli di machine learning.
Vi aspettiamo al prossimo workshop gratuito per parlarne dal vivo insieme a Francesco Corti
Clicca qui per registrarti!
Non perderti, ogni mese, gli approfondimenti sulle ultime novità in campo digital! Se vuoi sapere di più, visita la sezione “Blog“ sulla nostra pagina!