Usare gli inventari per gestire gli asset e impedire la duplicazione
Man mano che l'organizzazione cresce, è necessario tenere traccia della quantità di elementi necessari. Le organizzazioni spesso hanno duplicato le attività interne perché un team non conosce il progetto dell'altro. Man mano che le persone si spostano tra team, i nuovi utenti si uniscono all'azienda e altri lasciano, i progetti possono diventare orfani. Gli inventari consentono di risolvere questi problemi e sono una parte fondamentale della progettazione della piattaforma.
Un inventario è uno strumento o un sistema usato per tenere traccia, gestire e organizzare le risorse tecniche di un'organizzazione. Questi asset includono codice, API, contenitori, macchine virtuali (VM), autorizzazioni del team e altro ancora.
Non tenere traccia delle risorse porta alla prawl tecnica e allo spreco semplicemente perché non è possibile individuare facilmente ciò che esiste già. Perdere traccia di ciò che esiste già è una sfida comune.
È disponibile un tonno di contenitori o di istanze di [VM] in esecuzione. È possibile eliminare le macchine virtuali precedenti? Nessuno lo sa. Dobbiamo trovare un modo per pulire le vecchie cose e usare tag appropriati in modo che sappiamo chi è il proprietario o il team che può informarci su cosa possiamo fare e che cos'è il ciclo di vita. Non si sa se è possibile arrestare una determinata macchina virtuale perché non si è certi di cosa accadrà. - Martin, DevOps Engineer, Large Logistics Company
Tenere traccia degli asset
È necessario un inventario per tenere traccia di tutte le cose create o create nell'ecosistema che i clienti interni possono visualizzare in modo comprensibile.
Un inventario può migliorare la sicurezza, promuovere il riutilizzo e in genere semplificare l'individuazione. Sono disponibili diversi strumenti per tenere traccia di diversi tipi di asset. Ognuno di questi strumenti fornisce un inventario che consente di gestire, tenere traccia e pulire gli sprechi.
Gli strumenti di rilevamento disponibili includono:
- Gli ambienti di distribuzione di Azure consentono di tenere traccia di un'infrastruttura complessa creata tramite l'infrastruttura come codice (IaC) come ambiente astratto.
- Il Centro API di Azure consente agli sviluppatori di individuare e usare le API.
- I registri pacchetti come GitHub Packages o Azure Artifacts (o altri inventari di pacchetti e SDK approvati) migliorano la sicurezza della supply chain.
Quando si decide la visibilità degli inventari, prendere in considerazione l'approccio migliore per l'organizzazione. Alcune organizzazioni consentono a tutti gli sviluppatori di visualizzare gli asset software, ma solo alcuni possono modificarli (in modo simile a una cucina aperta). Altri, in particolare nei settori regolamentati, limitano l'accesso più strettamente, talvolta anche limitando la visibilità ai nomi dei progetti a causa della sensibilità.
Migliorare l'individuabilità, la governance e il riutilizzo
Avere uno o più sistemi di inventario che consentono di tenere traccia di ciò che è fondamentale per le procedure di progettazione della piattaforma ed evitare lo sprawl tecnico. Inizialmente la presenza di un set di elenchi di inventario flat potrebbe essere sufficiente. Tuttavia, è possibile migliorare ulteriormente l'individuabilità aggiungendo relazioni tra asset diversi tra più inventari. Indipendentemente dal livello di visibilità richiesto, la presenza di un punto di aggregazione centralizzato consente ai team di cercare e individuare rapidamente tutti gli asset disponibili. In questo modo si promuove il riutilizzo, si riduce la ridondanza e si stabilisce un approccio coerente alla governance.
Si consideri la relazione tra una definizione API e il codice dell'applicazione distribuita che implementa l'interfaccia . Questo codice viene archiviato in un repository e gestito da un team e fornisce la documentazione sull'uso. Vengono creati ambienti sandbox temporanei, di sviluppo, di test, di produzione e persino di ambiente sandbox. Negli scenari nativi del cloud gli ambienti potrebbero essere distribuiti in un cluster Kubernetes condiviso. Il team di sviluppo che compila l'API e tutti i consumer interni di esso devono essere in grado di ottenere informazioni su ognuno di questi elementi, ma il modo in cui le risorse sono correlate non è ovvio.
Per iniziare, è possibile usare qualcosa di semplice come una pagina wiki per tenere traccia del modo in cui ogni cosa si riferisce l'una all'altra. Ma la documentazione diventa rapidamente e può essere difficile sia da trovare che da analizzare. Idealmente, si dispone di un sistema con un grafico delle relazioni che consente alle interfacce utente di attraversare queste relazioni nell'inventario. Per migliorare realmente l'individuabilità, è necessario essere in grado di associare gli elementi archiviati in più tipi di inventario o grafici insieme. Potrebbe non essere necessario utilizzare direttamente gli inventari, ma è probabile che si voglia essere in grado di associarlo alle informazioni in un sistema di catalogo API.
Collegare inventari con grafici relazionali e cataloghi
Per usare l'analogia dell'archivio digitale, può anche essere utile associare gli elementi (modelli) nel catalogo al contenuto dell'inventario risultante. Ad esempio, se si rende conto che uno dei modelli crea una configurazione non sicura, sarà necessario trovare rapidamente tutte le risorse create con il modello per correggerle. Iniziare a destra i modelli di applicazione sono bundle di starter kit in questo catalogo che sono collegati ad altri tipi di elementi del catalogo (ad esempio i modelli IaC). Il rilevamento di queste associazioni consente di trovare in modo proattivo qualsiasi applicazione che faccia riferimento a un modello IaC non valido anche se non è ancora stato effettuato il provisioning dell'infrastruttura.
Una variante semplificata di questo grafico della piattaforma per sviluppatori di alto livello concettuale è disponibile in alcuni toolkit e prodotti oggi, anche se ciò che viene chiamato varia. Ad esempio, il toolkit del portale open source Backstage.io chiama questo catalogo software mentre altri prodotti usano termini diversi. Tuttavia, la maggior parte di questi prodotti e toolkit presuppone l'uso del set di funzionalità più ampio e richiede che il contenuto degli inventari venga duplicato all'interno di essi. Questa duplicazione indica che il contenuto del database del catalogo non è specifico dell'utente, può diventare obsoleto e non è controllato dai meccanismi di autorizzazione utente del sistema di origine effettivo. Tuttavia, questo potrebbe funzionare correttamente per l'organizzazione se si segue un approccio di cucina aperto.