Cosa sono gli strumenti per l'ingegneria della piattaforma?
Gli strumenti per l'ingegneria della piattaforma aiutano gli sviluppatori (interni ed esterni) a migliorare la produttività tramite un approccio self service, che consente loro di accedere alle risorse di cui hanno bisogno quando necessario. Gli strumenti per l'ingegneria della piattaforma supportano funzionalità come integrazione e distribuzione continue o deployment continuo (CI/CD), Infrastructure as Code (IaC), containerizzazione, osservabilità, sicurezza, self service degli sviluppatori e molto altro.
Un team di ingegneria della piattaforma (o semplicemente team della piattaforma) si occupa di supportare un portale che permette agli sviluppatori di accedere alle risorse, alla documentazione e agli strumenti necessari per interagire con vari servizi e API. Inoltre, questi team possono occuparsi di una Internal Developer Platform (IDP), che funge da infrastruttura su cui gli sviluppatori creano, distribuiscono e gestiscono le applicazioni.
Sebbene siano collegate, le tecnologie dell'ingegneria della piattaforma sono diverse dagli strumenti per gli sviluppatori. Le tecnologie per l'ingegneria della piattaforma e la piattaforma stessa, la IDP, contribuiscono a stabilire processi uniformi che permettono agli sviluppatori di ottenere cicli più efficienti. Gli strumenti per gli sviluppatori, invece, aiutano chi li utilizza a ottimizzare l'esperienza sulla IDP e a portare a termine progetti specifici.
Di seguito analizziamo le finalità dell'ingegneria della piattaforma nonché i servizi e le tecnologie di cui si serve per raggiungerle.
A cosa serve l'ingegneria della piattaforma?
L'ingegneria della piattaforma è utile per gestire tutte le tecnologie attualmente esistenti nell'epoca cloud native. Gli ingegneri della piattaforma progettano e realizzano toolchain e flussi di lavoro per rendere disponibili le funzionalità self service per le aziende specializzate nella progettazione di software. I team di sviluppo possono ottenere subito le funzionalità necessarie, avendo la garanzia che le soluzioni fornite sono osservabili e compatibili con le tecnologie e le pratiche di sicurezza aziendali.
L'ingegneria della piattaforma è un approccio multidisciplinare che coniuga cultura lavorativa, operazioni aziendali, collaborazione tra team e molti altri vantaggi, sfruttando tutti questi elementi per rendere più efficiente lo sviluppo del software. Identifica inoltre le problematiche legate al carico cognitivo degli sviluppatori, puntando a risolverle.
In pratica, gli ingegneri della piattaforma raccolgono contenuti, strumenti, documenti, modelli e flussi di lavoro che siano flessibili e, al contempo, consentano di mantenere l'uniformità all'interno dell'organizzazione. Gli ingegneri della piattaforma offrono strumenti e funzionalità comuni e riutilizzabili per aiutare gli sviluppatori a lavorare in modo più efficace e a incrementare la loro produttività.
Cos'è una Internal Developer Platform (IDP)?
Una IDP è una piattaforma pensata per semplificare le attività degli sviluppatori che raccoglie un set standardizzato di strumenti e tecnologie accessibili in modalità self service. Consolida e semplifica gli elementi del processo di sviluppo, e in questo modo rende le attività dei team di sviluppo più gestibili ed efficienti, attraverso un approccio più collaborativo.
Realizzate in base ai principi dell'ingegneria della piattaforma, le IDP sono composte da API, strumenti, servizi, conoscenze e supporto self service, il tutto gestito come un efficiente prodotto interno. Sebbene i team di sviluppo siano i principali utenti delle IDP, gli ingegneri della piattaforma ne gestiscono la configurazione iniziale, la manutenzione e il supporto. In questo modo si garantisce che l'intera organizzazione utilizzi un insieme coerente di tecnologie e risorse, a prescindere da chi le ha realizzate. Disporre di una IDP può essere utile per implementare e conservare le best practice DevOps, che promuovono una collaborazione più efficiente tra il team di sviluppo e quello operativo.
A volte il portale interno per gli sviluppatori viene confuso con l'Internal Developer Platform. La differenza è che un portale per sviluppatori può fungere da front end per una Internal Developer Platform, che aggiunge una piattaforma applicativa per aumentare la scalabilità e la gamma delle funzionalità.
Uno dei progetti open source più noti relativi alle piattaforme per sviluppatori è Backstage, che è stato creato dagli ingegneri di Spotify e poi donato alla Cloud Native Computing Foundation (CNCF). Backstage è stato la base di Red Hat® Developer Hub. Red Hat Developer Hub offre un framework supportato sicuro per la creazione di piattaforme per sviluppatori, con integrazioni e supporto per i clienti enterprise.
Cosa sono gli strumenti CI/CD?
Gli strumenti CI/CD possono essere utili per automatizzare lo sviluppo, il deployment e i test. Alcuni strumenti gestiscono specificamente l'aspetto dell'integrazione (CI), alcuni gestiscono sviluppo e deployment (CD), altri sono specifici per i test continui o le funzioni correlate. Molti di questi strumenti possono essere integrati in una IDP in linea con un approccio da ingegneria della piattaforma.
Esistono diversi strumenti CI/CD open source molto noti, ne elenchiamo di seguito alcuni solo a scopo illustrativo.
- Argo CD è uno strumento dichiarativo di distribuzione continua per Kubernetes, compatibile con le pratiche GitOps. Può essere utilizzato come strumento autonomo o come parte del flusso di lavoro CI/CD per distribuire le risorse necessarie ai cluster.
- Red Hat OpenShift® GitOps è una soluzione realizzata a partire da Argo CD.
- Tekton è un framework di CI/CD per piattaforme Kubernetes che offre un'esperienza CI/CD cloud native standard con container.
- Red Hat OpenShift Pipelines è stato realizzato a partire dal framework Tekton.
- Jenkins è uno strumento di automazione in grado di gestire i processi CI e CD di qualunque dimensione.
- Spinnaker è una piattaforma CD pensata per gli ambienti multicloud.
- GoCD è un server CI/CD incentrato sulla modellazione e sulla visualizzazione.
- Concourse è uno strumento di automazione adatto ai processi continui.
- Screwdriver è una piattaforma di creazione progettata per la CD.
Per i team può essere utile prendere in considerazione il ricorso a strumenti CI/CD gestiti, disponibili presso una serie di fornitori diversi. Scegliere i giusti strumenti CI/CD consente ai team di automatizzare la creazione, la verifica e il deployment delle applicazioni su tutte le piattaforme.
Quali sono gli strumenti dell'Infrastructure as Code (IaC)?
L'IaC è un tipo di approccio alla gestione dell'infrastruttura. Consente agli amministratori di automatizzare la gestione e il provisioning dell'infrastruttura, inclusi server e macchine virtuali. Questo supporto self service e automatizzato dell'infrastruttura è in linea con gli obiettivi dall'ingegneria della piattaforma.
L'approccio IaC prevede l'utilizzo dei file di configurazione per definire le specifiche dell'infrastruttura, il che rende più semplice eseguire il provisioning degli ambienti in modo uniforme. L'IaC consente di modificare e distribuire le configurazioni in tutta l'organizzazione e previene l'introduzione di modifiche ad hoc e non documentate.
L'IaC si basa su strumenti di automazione del server e di gestione della configurazione, come Red Hat Ansible® Automation Platform, Terraform, Chef, Puppet e Salt.
Cosa sono gli strumenti per i container e Kubernetes?
Gli strumenti per i container sono essenziali per gli ingegneri della piattaforma.
I container consentono di raggruppare e isolare le applicazioni in moduli che includono l'intero ambiente di runtime e tutti i file necessari per l'esecuzione. Le applicazioni containerizzate vengono così eseguite in modo uniforme, in qualsiasi ambiente e infrastruttura. I container sono essenziali per lo sviluppo cloud native, un metodo che scompone le applicazioni in raccolte di microservizi piccoli, indipendenti e a basso accoppiamento.
Sono disponibili alcuni strumenti open source che agevolano la creazione e la distribuzione dei container, come Docker e Podman, che sono compatibili con gli standard Open Container Initiative (OCI).
Per gestire i container con modalità scalabili, i team operativi si servono delle piattaforme per l'orchestrazione dei container, come il progetto Kubernetes open source. L'orchestrazione dei container automatizza il deployment, la gestione, la scalabilità e il networking dei container nell'intero ciclo di vita.
Le piattaforme Kubernetes vengono fornite da diversi provider. Red Hat OpenShift è una piattaforma applicativa di livello enterprise realizzata a partire da una base Kubernetes. Gli ingegneri della piattaforma possono integrare Red Hat OpenShift con una IDP come Red Hat OpenShift Developer Hub per realizzare una piattaforma di sviluppo.
Cosa sono gli strumenti di osservabilità?
Il monitoraggio e l'osservabilità sono importanti per l'ingegneria della piattaforma, perché consentono di esaminare gli output, i log e le metriche delle prestazioni, e quindi di comprendere meglio la condizione di un sistema o di un'applicazione. Questa visibilità aiuta sviluppatori e amministratori a migliorare l'affidabilità, le prestazioni e la sicurezza di infrastrutture e applicazioni complesse.
La nozione di osservabilità amplia il concetto di monitoraggio perché include l'identificazione delle cause dei problemi e la formulazione di previsioni. Esistono svariati strumenti e tecnologie di osservabilità, che possono essere combinati dai team in un sistema adatto alle proprie esigenze.
Tra gli strumenti di osservabilità open source più utilizzati sono inclusi Grafana, Jaeger, OpenTelemetry e Prometheus. Red Hat OpenShift Observability è un insieme di strumenti di osservabilità pensato per essere compatibile con Red Hat OpenShift e gli standard OpenTelemetry.
Cosa sono gli strumenti di sicurezza per l'ingegneria della piattaforma?
Con l'aumento dei problemi legati alla sicurezza, lo sviluppo dei software si è indirizzato verso una strategia "shift left" per gestire la situazione in ogni fase del ciclo di vita dello sviluppo (SDLC). Le misure di sicurezza non vengono implementate a posteriori, con un ultimo controllo prima del deployment, ma all'inizio del progetto.
Gli ingegneri della piattaforma aiutano gli sviluppatori ad aderire alle procedure di sicurezza durante l'intero SDLC. Questi passaggi possono includere test e controlli automatizzati nella pipeline CI/CD, che protegge il codice, previene perdite di dati, applica le policy e garantisce il controllo qualità.
Altri strumenti di sicurezza per l'ingegneria della piattaforma contribuiscono a gestire i segreti (password, file di configurazione dei clienti, credenziali dei repository e così via) e la sicurezza delle API (chiavi API incluse).
Red Hat offre una serie di strumenti e servizi che supportano la sicurezza dei software.
Red Hat Trusted Software Supply Chain accorpa una serie di soluzioni che aiutano a ridurre le vulnerabilità e rafforzare le policy di sicurezza, inclusi Red Hat Trusted Profile Analyzer, Red Hat Trusted Application Pipeline e Red Hat Trusted Artifact Signer.
- Red Hat Trusted Profile Analyzer aiuta a gestire i Software Bills of Materials (SBOM), facendo riferimento al contempo alle CVE e agli avvisi di sicurezza da parte di fonti affidabili. Incorpora le tecnologie di tre progetti open source: Graph for Understanding Artifact Composition (GUAC), Trustification ed Exhort.
- Red Hat Trusted Application Pipeline convalida le attestazioni, la provenienza e le firme degli artefatti per bloccare le vulnerabilità all'inizio del processo di sviluppo.
- Red Hat Trusted Artifact Signer, basato sul progetto Sigstore, semplifica la verifica e la firma crittografica degli artefatti dei software, come i documenti, i file binari e le immagini container. Include anche alcune tecnologie dei progetti Cosign e Fulcio e supporta l'integrazione completa con altri sistemi di gestione fondamentali come Hashicorp Vault, Google/Azure e AWS KMS.
Per i deployment Kubernetes, Red Hat Advanced Cluster Security for Kubernetes protegge i carichi di lavoro containerizzati su tutte le piattaforme, consentendo ai team di identificare e gestire le vulnerabilità e adottare criteri di sicurezza.
Perché scegliere Red Hat per l'ingegneria della piattaforma
Gli ingegneri della piattaforma possono scegliere tra diverse soluzioni Red Hat in base ai propri obiettivi. I prodotti e i servizi Red Hat si integrano a vicenda per migliorare la produttività dei team, favorire l'approccio self service, accelerare l'onboarding e ridurre l'onere delle attività ripetitive.
Red Hat OpenShift è una piattaforma applicativa di livello enterprise che consente agli sviluppatori di usare gli strumenti che preferiscono per diversi tipi di applicazioni, in qualsiasi ambiente: on premise, nel cloud o all'edge.
Red Hat Developer Hub promuove l'efficienza e la collaborazione tramite il processo di sviluppo del software. Offre una piattaforma open e unificata e al tempo stesso mitiga le problematiche legate al carico cognitivo del team di sviluppo. Con Red Hat Developer Hub, le organizzazioni possono utilizzare le IDP per consolidare gli elementi dei processi di sviluppo e semplificare i flussi di lavoro per promuovere la collaborazione.
La Red Hat Trusted Software Supply Chain serve a integrare la sicurezza nei componenti, nei processi e nelle linee guida sin dalle prime fasi di realizzazione del software.
Soluzioni per le aziende: Red Hat Developer Hub
Una piattaforma open source pensata per le aziende e basata su Backstage, finalizzata alla creazione di portali per sviluppatori, in grado di consolidare gli elementi del processo di sviluppo.