7 Ottimi Strumenti per la tua Platform Engineering Toolchain
Questo articolo è stato pubblicato in origine su The New Stack.
Platform engineering, la pratica di costruire e gestire Internal Developer Platform, sta acquisendo popolarità molto rapidamente. La sua promessa? Integrarsi perfettamente con i metodi di sviluppo tradizionali e DevOps e ottimizzarli, colmando le loro lacune.
Tuttavia l’ascesa della platform engineering ha portato a un’esplosione di strumenti, ognuno dei quali sostiene di poter risolvere tutti i problemi dell’organizzazione. Purtroppo, solo pochi di essi sono all’altezza della situazione. Scopriamo sette strumenti di successo utilizzati nel campo della platform engineering.
Sette strumenti per Platform Engineer
Di seguito vi presentiamo alcuni degli strumenti che favoriscono l’adozione senza soluzione di continuità della platform engineering.
1. OPA e Rönd
Open Policy Agent (OPA) è un motore open source di policy di uso generale progettato per semplificare e unificare la gestione delle policy di sicurezza su diversi software e sistemi. OPA ti consente di definire e applicare policy in modo dichiarativo scrivendo codice, sfruttando la potenza espressiva del linguaggio di alto livello Rego.
Questo motore di policy supporta soluzioni come Rönd, un container Kubernetes leggero e open source sviluppato per proteggere le tue API con semplici policy di sicurezza.
Sfruttando OPA come motore di sicurezza per la convalida delle regole di autorizzazione e Rego per la stesura di policy di sicurezza, Rönd trascende il suo ruolo di meccanismo di autorizzazione. Questo strumento permette di realizzare soluzioni di tipo Role-Based Access Control (RBAC) o Attribute-Based Access Control (ABAC) fornendo i loro elementi fondamentali: ruoli, autorizzazioni e gruppi di utenti.
Colmando il divario tra la definizione e l’applicazione dei criteri, OPA e Rönd semplificano la gestione della sicurezza e migliorano la sicurezza generale delle applicazioni.
Tuttavia, rendere le applicazioni sicure va oltre la definizione di chi può accedere a cosa, ma comporta anche la salvaguardia delle chiavi e delle credenziali che sbloccano l’accesso. A tal proposito vi presentiamo Hashicorp Vault.
2. HashiCorp Vault
Negli ultimi decenni, attacchi informatici di varia portata hanno provocato ingenti danni e sono costati milioni alle grandi aziende. La moltitudine di violazioni in corso dimostra l’innegabile necessità di una solida sicurezza dei dati.
Le organizzazioni utilizzano tradizionalmente password, chiavi di crittografia e certificati per controllare l’accesso alle informazioni sensibili. Tuttavia, queste “credenziali” spesso non hanno una sede centrale e sono memorizzate in vari sistemi. Ciò rende difficile l’attività di tracciamento di chi ha accesso a cosa, lasciando spesso vulnerabili i dati sensibili.
È qui che entra in gioco Vault di HasciCorp. È un sistema di gestione di dati sensibili, o secret, e della crittografia basato sull’identità, progettato per semplificare l’archiviazione, la generazione, la crittografia e la trasmissione di secret in modo sicuro. Utilizzando l’autenticazione e l’autorizzazione, Vault aiuta a garantire che solo le persone autorizzate possano accedere alle informazioni a cui hanno il permesso di accedere.
Vault archivia e gestisce in modo sicuro vari secret tra cui password, chiavi di API, chiavi SSH, token RSA e codici OTP (one-time passcode), in una piattaforma centralizzata. Un’altra caratteristica fondamentale di Vault sono i secret dinamici, credenziali di breve durata e aggiornate automaticamente che riducono al minimo l’esposizione.
Vault supporta anche diversi metodi di autenticazione come token, Lightweight Directory Access Protocol (LDAP) e multifactor authentication (MFA), fornendo un quadro di sicurezza flessibile e adattabile. Le sue capacità di crittografia vanno oltre l’archiviazione, facilitando la crittografia dei dati in transito e a riposo.
Per quanto fondamentali, il controllo degli accessi e la gestione dei secret non sono attività sufficienti. Per stare davvero tranquilli, è fondamentale un monitoraggio continuo. Ciò significa ottenere informazioni in tempo reale sullo stato di salute e sulle prestazioni della vostra infrastruttura di sicurezza, consentendovi di identificare e risolvere potenziali problemi prima che diventino tali. Due strumenti molto conosciuti e utilizzati per attività di monitoraggio e visualizzazione sono Prometheus e Grafana.
3. Prometheus e Grafana
Prometheus è in grado di raccogliere dati real-time da diversi target come applicazioni, server e servizi cloud. Questi target espongono metriche cruciali attraverso il path dedicato /metrics, consentendo a Prometheus di valutare la salute e le prestazioni del sistema.
La raccolta dei dati è solo il primo passo. Grafana, una sorta di “esperto di visualizzazione”, trasforma le metriche complesse memorizzate da Prometheus in informazioni utili. Grafana consente ai team di creare dashboard interattive, trasformando i numeri grezzi in immagini facilmente comprensibili che rivelano trend e potenziali problemi.
Insieme, Grafana e Prometheus formano un team molto potente. Mentre Prometheus raccoglie e archivia metriche in tempo reale, Grafana le presenta in modo chiaro e perspicace. Questa collaborazione consente ai team di identificare rapidamente i problemi di performance, di tracciare le tendenze e di mantenere la salute ottimale del sistema e l’efficienza nell’utilizzo delle risorse. Questo ci porta al prossimo strumento di risparmio economico ed ecologico: kube-green.
4. kube-green
kube-green è un operatore open source progettato per ridurre l’impatto ambientale e i costi del cluster Kubernetes. Questo add-on di Kubernetes termina automaticamente le risorse inutilizzate, riducendo al minimo il consumo di energia e le emissioni di carbonio. Questo approccio “green” è in linea con i crescenti sforzi di sostenibilità dell’industria tecnologica. Sviluppato da Davide Bianchi di Mia-Platform, kube-green fa parte del panorama CNCF.
Oltre ai benefici ambientali, kube-green aiuta a risparmiare denaro. Molti cloud provider utilizzano il modello di pagamento pay-as-you-go, quindi terminando in modo intelligente le risorse inutilizzate, kube-green può ridurre in modo significativo le bollette del cloud. Gli utenti che hanno adottato kube-green hanno registrato risparmi dal 30% al 40%, consolidando la sua reputazione di potente ottimizzatore dell’uso delle risorse, del consumo energetico e delle risorse finanziarie.
kube-green è stato realizzato per lavorare perfettamente con Kubernetes, una delle più poplari piattaforme di orchestrazione di container. Ciò consente un’integrazione agevole con i workflow più diffusi e con le pipeline CI/CD, rendendo più facile sfruttarne i vantaggi senza interrompere il tuo setup corrente.
5. Provider Git
Se avete mai avuto a che fare con lo sviluppo di software, avrete quasi certamente incontrato git, il popolare sistema di controllo di versione distribuito, e i suoi numerosi provider. Queste piattaforme ospitano i tuoi repository git, consentendo ai team di collaborare e gestire efficacemente i progetti software.
Ma i git provider non offrono solo collaborazione e controllo di versione. Sono diventati strumenti indispensabili per le tematiche moderne di software engineering, vantando funzionalità che semplificano lo sviluppo e migliorano la qualità.
Ad esempio, GitHub sfrutta la sua soluzione CI/CD integrata, le GitHub Action per automatizzare la creazione, il test e il deploy del codice, garantendo la qualità e accelerando il processo di sviluppo. Analogamente, anche GitLab offre pipeline di CI/CD insieme al tracciamento dei problemi, alla gestione dei progetti e al controllo degli accessi, consentendo una gestione completa dei progetti all’interno della piattaforma.
Oltre a questi popolari strumenti, altri provider offrono punti di forza unici. Strettamente integrato con Jira, Bitbucket facilita la gestione dei progetti e il tracciamento dei problemi senza soluzione di continuità, soprattutto per i team dell’ecosistema Atlassian. GitKraken e SourceTree si concentrano su interfacce grafiche di facile utilizzo, rendendo il controllo di versione più accessibile agli sviluppatori meno avvezzi all’utilizzo della riga di comando.
I git provider semplificano l’intero processo di sviluppo e delivery. Consentono ai team di adottare pratiche agili, accelerare le delivery e mantenere un codice di alta qualità attraverso workflow efficienti e collaborativi. Ma quando si svolgono operazioni di deploy manuali delle modifiche al codice su un numero crescente di cluster Kubernetes, sorge una nuova sfida: mantenere i cluster consistenti tra loro. È qui che interviene Argo CD.
6. Argo CD
Argo CD è uno strumento open source dichiarativo di continuous delivery GitOps per Kubernetes. Semplifica l’automazione del deployment, dello scaling e dell’aggiornamento delle applicazioni all’interno dei cluster Kubernetes, utilizzando git come unico strumento di versionamento per le configurazioni delle applicazioni. Lo stato desiderato di un’applicazione è specificato in un repository git.
Argo CD utilizza questo repository per riconciliare lo stato effettivo dell’applicazione con lo stato desiderato dichiarato nel repository. Con Argo CD che assicura il deployment su Kubernetes in modo coerente e tempestivo, il prossimo strumento che vi presentiamo consente agli sviluppatori di sviluppare, con la garanzia di stabilità e automazione, utilizzando le cosiddette Internal Developer Platform.
7. Mia-Platform
Mia-Platform abilita le organizzazioni a realizzare e gestire le proprie Internal Developer Platform (IDP). Le IDP sono strumenti, servizi e processi che accelerano il processo di sviluppo astraendo astraendo il contesto e le complessità dell’infrastruttura sottostante. Questa astrazione riduce il carico cognitivo degli sviluppatori responsabili della realizzazione di un prodotto, migliorando in ultima analisi l’esperienza dello sviluppatore.
Mia-Platform promuove anche lo sviluppo “composable, fornendo un catalogo di componenti pronti all’uso, come Payment Integration Hub e Mia-Platform Fast Data. Il catalogo consente agli sviluppatori di assemblare applicazioni completamente funzionali in modo rapido e senza “reinventare la ruota”.
Considerazioni sulla Platform Engineering toolchain
Sebbene questi strumenti siano un ottimo punto di partenza per qualsiasi organizzazione che voglia adottare la platform engineering, non esiste catena di strumenti, una toolchain appunto, o una soluzione unica per tutti. Per prendere decisioni informate e selezionare strumenti in linea con i vostri requisiti e obiettivi, considerate alcuni fattori chiave per garantire un’integrazione perfetta e il massimo impatto:
- Sicurezza: La sicurezza è indispensabile in uno strumento di platform engineering, soprattutto quando gestisce dati sensibili. Alcune soluzioni di terze parti sono come “scatole nere”: non è possibile vedere le loro feature di sicurezza interne, quindi non si può sapere come funzionano. Per essere sicuri, ricercate e scegliete strumenti che diano priorità a una solida sicurezza per proteggere i vostri dati. Cercate catene di strumenti con funzionalità come la crittografia forte, la scansione delle vulnerabilità e i controlli di accesso sicuri.
- Compatibilità: Scegliete strumenti che si integrino perfettamente con il sistema e l’infrastruttura esistenti per evitare problemi. Strumenti incompatibili possono creare silos isolati e interrompere i workflow, con conseguenti ritardi nello sviluppo e nel deployment. Per migliorare la compatibilità, optate per strumenti ampiamente diffusi e con una comprovata esperienza di utilizzo in ambienti diversi.
- Vendor lock-in: Quando è possibile, adottare strumenti open source per evitare il vendor lock-in. In questo modo si riduce la dipendenza da fornitori specifici e si può personalizzare e adattare la piattaforma in base ai cambiamenti della logica aziendale e delle esigenze. Se dovete scegliere strumenti “closed-source” (con il codice sorgente non condiviso), evitate quelli che vi intrappolano in ecosistemi proprietari; mantenete più opzioni di fornitori per la ridondanza e la gestione del rischio.
- Scalabilità: Scegliere strumenti progettati per la scalabilità, in modo da gestire efficacemente i requisiti attuali e futuri, in base all’espansione della base di utenti e del volume di dati. Inoltre, assicuratevi che il modello di prezzo degli strumenti consenta l’ottimizzazione delle risorse, in modo che l’aumento dell’utilizzo non crei oneri finanziari imprevisti.
- Estensibilità: Un’altra caratteristica che favorisce una scalabilità efficiente è l’estensibilità. Scegliete strumenti che vi permettano di integrare senza problemi nuovi strumenti e servizi in base alle esigenze del vostro team.
Dove sta andando la Platform Engineering
La platform engineering è una svolta per il modo in cui le organizzazioni realizzano e distribuiscono il software. Non si tratta solo di velocità e sicurezza, ma di consentire agli sviluppatori di fare di più con meno.
Quello che una volta era un investimento strategico è diventato un cambiamento fondamentale nello sviluppo del software, aprendo la strada a un futuro di agilità e innovazione.
Il panorama della platform engineering è tutt’altro che statico. Se questi strumenti hanno aperto la strada a cambiamenti rivoluzionari, il futuro riserva possibilità ancora maggiori. Ci si può aspettare un approfondimento dell’automazione e dell’intelligenza grazie all’Intelligenza Artificiale, che consente alle piattaforme di apprendere e adattarsi autonomamente. Inoltre, si prospetta la democratizzazione della creazione di piattaforme tramite strumenti no-code, che consentiranno agli sviluppatori, a tutti i livelli di seniority, di contribuire all’evoluzione della piattaforma. Questo futuro promette maggiore efficienza, agilità e innovazione per lo sviluppo del software.
Sebbene il futuro della platform engineering sia ricco di potenzialità, è importante affrontarlo in modo pragmatico. Valutate attentamente le esigenze specifiche del vostro team e scegliete strumenti che le soddisfino direttamente. Adottando una mentalità flessibile e orientata alle soluzioni, potrete sfruttare con fiducia ciò che la platform engineering ha e avrà da offrirvi.

