Quali sono gli strumenti di ingegneria della piattaforma?
Gli strumenti di ingegneria della piattaforma aiutano i team di sviluppo interni ed esterni a incrementare la propria produttività facilitando l'accesso alle risorse di cui hanno bisogno, dove serve, tramite un approccio self service. Questi strumenti supportano funzionalità come l'integrazione continua e la distribuzione o il deployment continui (CI/CD), Infrastructure as Code (IaC), containerizzazione, osservabilità, sicurezza, self service per gli sviluppatori e altro ancora.
Un team di ingegneria della piattaforma (anche chiamato semplicemente team della piattaforma) è responsabile del supporto del portale degli sviluppatori, che fornisce l'accesso self service alle risorse, alla documentazione e agli strumenti necessari agli sviluppatori per interagire con vari servizi e API. Inoltre, il team può gestire una Internal Developer Platform (IDP), che funge da infrastruttura alla base per la creazione, il deployment e la gestione delle applicazioni.
Sebbene siano correlate, le tecnologie di ingegneria della piattaforma sono diverse dagli strumenti per sviluppatori. Le tecnologie di ingegneria della piattaforma e la stessa piattaforma IDP aiutano a definire processi coerenti che consentono agli sviluppatori di svolgere il proprio lavoro in modo efficiente. A partire da questa base, gli strumenti per sviluppatori garantiscono una migliore esperienza con la piattaforma IDP e aiutano gli sviluppatori a realizzare progetti specifici.
Di seguito approfondiremo gli obiettivi dell'ingegneria della piattaforma e i tipi di tecnologie e servizi disponibili a supporto.
Qual è l'obiettivo dell'ingegneria della piattaforma?
L'ingegneria della piattaforma è utile per gestire l'enorme quantità di tecnologie esistenti nell'era del cloud native. Gli ingegneri della piattaforma progettano e realizzano toolchain e flussi di lavoro per rendere disponibili le funzionalità self service di cui si servono le organizzazioni di ingegneria del software. I team di sviluppo possono ottenere le funzionalità di cui hanno bisogno in pochi minuti, con la certezza che le soluzioni fornite sono supportate internamente, osservabili e conformi alle procedure di sicurezza della propria organizzazione.
Questo approccio multidisciplinare coniuga cultura del lavoro, operazioni aziendali, collaborazione tra i team e molto altro, al servizio di uno sviluppo software più efficiente. Riconosce inoltre il carico cognitivo che grava sugli sviluppatori di software e cerca di identificare e alleviare le problematiche da loro percepite.
Come funziona nella pratica? Gli ingegneri della piattaforma raccolgono contenuti, strumenti, documentazione, modelli e flussi di lavoro che siano in grado di offrire flessibilità e garantire coerenza all'interno dell'organizzazione. Quindi forniscono strumenti e funzionalità comuni e riutilizzabili per aiutare a lavorare in modo efficiente e per promuovere la produttività degli sviluppatori.
L'evoluzione dell'ingegneria della piattaforma nell'era dell'IA
Cos'è una piattaforma di sviluppo interna (IDP)?
Una piattaforma di sviluppo interna (IDP) è una piattaforma pensata per semplificare la creazione e il deployment del codice che raccoglie un set standardizzato di strumenti e tecnologie accessibili in modalità self service. Consolida e semplifica gli elementi del processo di sviluppo, rendendo il lavoro quotidiano dei team di sviluppo più gestibile, efficiente e 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. Benché siano i team di sviluppo gli utenti principali di una IDP, sono gli ingegneri della piattaforma a occuparsi della configurazione iniziale, della manutenzione e del 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. Dotarsi di una IDP può essere un modo per adottare e mantenere le best practice DevOps , che promuovono una collaborazione più efficiente tra i team operativi e di sviluppo.
A volte il portale interno per gli sviluppatori viene confuso con l'IDP. La differenza è che un portale per sviluppatori può fungere da front end per una IDP, che aggiunge una piattaforma applicativa per aumentare la scalabilità e la gamma delle funzionalità.
Uno dei progetti open source più noti relativi alle piattaforme di sviluppo è Backstage, 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, perché compatibili con un approccio di ingegneria della piattaforma.
Esistono numerosi strumenti CI/CD open source molto noti; l'elenco seguente non è quindi da considerarsi esaustivo.
- Argo CD è uno strumento dichiarativo di distribuzione continua per Kubernetes, in linea con le procedure 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 è un prodotto realizzato 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 processi CI e CD di qualunque dimensione.
- Spinnaker è una piattaforma CD progettata 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 sviluppo 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, i test e il deployment delle applicazioni su tutte le piattaforme.
Quali sono gli strumenti dell'Infrastructure as Code (IaC)?
L'IaC è un approccio alla gestione dell'infrastruttura che 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 dell'ingegneria della piattaforma.
L'approccio IaC prevede l'utilizzo dei file di configurazione per definire le specifiche dell'infrastruttura, favorendo il provisioning uniforme degli ambienti. L'IaC consente di modificare e distribuire le configurazioni in tutta l'organizzazione e impedisce l'applicazione di modifiche ad hoc e non documentate.
L'IaC si basa su strumenti di automazione dei server e di gestione della configurazione. Red Hat Ansible® Automation Platform, Terraform, Chef, Puppet e Salt sono alcuni degli strumenti più diffusi per l'automazione dell'IT, in linea con l'approccio IaC.
Cosa sono gli strumenti per i container e Kubernetes?
Gli strumenti per i container sono una dotazione essenziale per un ingegnere della piattaforma.
I container consentono di raggruppare e isolare le applicazioni insieme al relativo ambiente di runtime, ovvero tutti i file necessari per l'esecuzione. Le applicazioni containerizzate vengono così eseguite in modo uniforme anche se distribuite su diversi ambienti e infrastrutture. I container sono essenziali per lo sviluppo cloud native, un metodo che scompone le applicazioni di grandi dimensioni in raccolte di microservizi di piccole dimensioni, indipendenti e a basso accoppiamento.
Sono disponibili numerosi strumenti open source che semplificano l'utilizzo dei container. Per la creazione e la distribuzione dei container, gli sviluppatori possono utilizzare strumenti come Docker e Podman, entrambi compatibili con gli standard Open Container Initiative (OCI) .
Per gestire i container in modo scalabile, i team operativi si affidano alle piattaforme di 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 lungo tutto il ciclo di vita.
Le piattaforme Kubernetes vengono fornite da diversi provider. Red Hat OpenShift è una piattaforma applicativa di livello enterprise basata su Kubernetes. Gli ingegneri della piattaforma possono integrare Red Hat OpenShift con una IDP come Red Hat OpenShift Developer Hub per fornire una piattaforma di sviluppo.
Cosa sono gli strumenti di osservabilità?
Il monitoraggio e l'osservabilità sono importanti per l'ingegneria della piattaforma, perché consentono ai team di esaminare gli output, i registri e le metriche delle prestazioni e quindi di comprendere meglio le condizioni 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 previsione delle soluzioni. Esistono molteplici strumenti e tecnologie di osservabilità, che possono essere configurati dai team per creare i sistemi di osservabilità più adatti alle loro esigenze.
Tra gli strumenti open source più utilizzati per l'osservabilità ci sono Grafana, Jaeger, OpenTelemetry e Prometheus. Red Hat OpenShift Observability è un insieme di strumenti di osservabilità compatibile con Red Hat OpenShift e gli standard OpenTelemetry.
Quali sono gli strumenti di sicurezza per l'ingegneria della piattaforma?
Con l'aumento dei problemi legati alla sicurezza, lo sviluppo software si è orientato verso la strategia "shift left" per gestire la sicurezza in ogni fase del ciclo di vita dello sviluppo del software (SDLC). Invece di essere applicate come ultimo controllo prima del deployment, le misure di sicurezza sono integrate dall'inizio del progetto.
Gli ingegneri della piattaforma aiutano gli sviluppatori a rispettare le procedure di sicurezza durante l'intero SDLC. Questi passaggi possono includere controlli e test automatizzati nella pipeline CI/CD, che proteggono il codice, prevengono le perdite di dati, applicano la conformità alle policy e garantiscono il controllo qualità.
Altri strumenti di sicurezza per l'ingegneria della piattaforma supportano la gestione dei segreti (password, file di configurazione dei client, credenziali del 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 del software.
Red Hat Trusted Software Supply Chain unifica una serie di soluzioni che aiutano a ridurre le vulnerabilità e ad applicare i criteri di sicurezza, tra cui Red Hat Trusted Profile Analyzer, Red Hat Advanced Developer Suite e Red Hat Trusted Artifact Signer.
- Red Hat Trusted Profile Analyzer aiuta a gestire i Software Bills of Materials (SBOM), facendo al contempo riferimento alle CVE e agli avvisi di sicurezza provenienti da fonti attendibili. Integra la tecnologia dei progetti open source Graph for Understanding Artifact Composition (GUAC), Trustification ed Exhort.
- Basato sul progetto open source Sigstore, Red Hat Trusted Artifact Signer semplifica la verifica e la firma crittografica degli artefatti dei software, come i documenti, i file binari e le immagini container. Incorpora inoltre le tecnologie dei progetti Cosign e Fulcio e supporta l'integrazione completa con altri importanti sistemi di gestione, tra cui Hashicorp Vault, Google/Azure e AWS KMS.
- Red Hat Advanced Developer Suite offre il monitoraggio end to end della provenienza degli artefatti software.
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 numerose soluzioni Red Hat in base ai propri obiettivi. I prodotti e i servizi Red Hat interagiscono tra loro per migliorare la produttività dei team, favorire l'approccio self service, velocizzare l'onboarding e ridurre le attività ripetitive.
Red Hat OpenShift, è una piattaforma applicativa di livello enterprise che consente agli sviluppatori di utilizzare gli strumenti che preferiscono per applicazioni cloud native, tradizionali e modernizzate ovunque siano distribuite: on premise, nel cloud o all'edge.
Red Hat Developer Hub promuove l'efficienza e la collaborazione durante tutto il processo di sviluppo del software. Offre una piattaforma unificata e open source e al contempo riduce le problematiche legate al carico cognitivo del team di sviluppo. Con Red Hat Developer Hub, le organizzazioni hanno a disposizione una piattaforma IDP dove consolidare gli elementi dei processi di sviluppo e semplificare i flussi di lavoro per promuovere la collaborazione.
L'affidabile 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.