Il cloud computing è alla base di molteplici tecnologie; in questa occasione abbiamo scelto di concentrarci su container e microservizi e chiesto l’autorevole opinione di Lanfranco Brasca, Direttore Solution Engineering (Prevendita tecnica) Cloud Technology, Oracle Italia.
Secondo Brasca, i data center di precedente generazione erano caratterizzati da un’infrastruttura hardware on-premise, caratterizzata da architetture applicative tradizionali organizzate monoliticamente, questo tipo di infrastruttura si sta rivelando sempre meno adatta a gestire i moderni workload.
Questa tendenza ha avuto un’improvvisa accelerazione a causa della pandemia, che ha forzato le aziende a espandere il loro perimetro IT aziendale per abbracciare una serie sempre più ampia di attività da remoto. Oggi applicazioni e servizi digitali sono utilizzati 24 ore su 24, via web o tramite smartphone, e richiedono quindi requisiti di disponibilità, scalabilità, affidabilità e prestazioni anche di fronte a picchi di richieste senza precedenti.
All’esigenza di scalabilità si affianca anche la necessità delle aziende di creare velocemente nuove applicazioni e servizi digitali, per rispondere con estrema velocità alle crescenti e mutevoli esigenze di business. Questo implica un cambio di paradigma nel modello di sviluppo delle applicazioni.
I container e i microservizi costituiscono la soluzione per le imprese per gestire l’IT in maniera agile, sfruttando l’innovazione del cloud e delle cosiddette architetture “cloud-native”.
Infatti i cloud di nuova generazione, come l’Oracle Cloud Infrastructure, sono “software-defined” in quanto basati su macchine virtuali, container e microservizi; le applicazioni realizzate utilizzando questi paradigmi possono essere spostate con estrema facilità tra differenti cloud pubblici ed ambienti IT privati, muovendo i workload dove conviene, in funzione delle esigenze di business.
Nelle architetture applicative tradizionali, monolitiche, i diversi livelli di un’applicazione: database, logica di business e interfaccia utente, vengono sviluppati e integrati strettamente tra loro in un solo blocco di codice.
Quando le dimensioni dell’applicazione e del codice aumentano, diventa complesso apportare modifiche alle singole componenti senza impatti sull’intera applicazione; è difficile inoltre fare rilasci e aggiornamenti frequenti, scalare la capacità e migliorarne l’affidabilità, in quanto – in considerazione dell’interdipendenza tra i moduli – il malfunzionamento di ogni singolo componente può causare instabilità su tutta l’applicazione.
Le applicazioni organizzate a microservizi vengono progettate sviluppando componenti indipendenti e disaccoppiati: seguono il modello “share-nothing” e vengono eseguiti come processi “state-less”, comunicano con le altre componenti utilizzando API (Application Programming Interface). Grazie a questo livello di isolamento l’impatto di un eventuale malfunzionamento rimane perimetrato alla singola componente, senza inficiare le funzionalità dell’intera applicazione.
Lo sviluppo e le modifiche sui singoli microservizi diventano quindi molto veloci e permettono di innescare i cicli di sviluppo moderno, che vanno sotto il nome di CI/CD (Continuous Integration/Continuous Deployment).
In genere, ogni microservizio viene eseguito in un contenitore (“container”) che fornisce un ambiente di runtime leggero, che contiene tutto ciò che serve (codice, dipendenze, librerie, file di configurazione) per il funzionamento di un determinato microservizio, rendendolo quindi indipendente dalla piattaforma hardware e software su cui viene eseguito. In accordo con la filosofia cloud-native, quando si costruisce un’applicazione composta da un insieme di microservizi la flessibilità aumenta se si incapsula ciascun microservizio in un container.
I container si possono connettere, per comunicare tra loro, e orchestrare tramite tecnologie come Kubernetes, un software di orchestrazione che nasce nel mondo Open Source, in grado di automatizzare il deployment e la scalabilità dei servizi “containerizzati” in funzione delle necessità.
Su questi temi l’infrastruttura Oracle Cloud abbraccia l’approccio del consorzio “Cloud Native Computing Foundation” (CNCF), in qualità di platinum member. Il CNCF è un’organizzazione che ha l’obiettivo di guidare l’adozione dei paradigmi di sviluppo cloud-native, promuovendo e sostenendo un ecosistema di progetti open source e indipendenti dai fornitori.
Su questo fronte Oracle Cloud fornisce un servizio gestito, scalabile e ad alta disponibilità di Container Engine per Kubernetes (OKE), che permette a sviluppatori e aziende di costruire, amministrare e distribuire applicazioni cloud-native containerizzate.
In generale possiamo dire che tutte le applicazioni che si prestano a scenari di picchi di accesso e utilizzo impredicibili possono trarre grandi benefici dai nuovi paradigmi di sviluppo a microservizi e containerizzazione.
Tra i tantissimi casi d’uso citiamo qui due applicazioni, recentemente realizzate sul cloud di Oracle.
MyPompei, la Mobile App per Visitare in sicurezza il Parco Archeologico di Pompei. A seguito del blocco nazionale nel marzo 2020 a causa del COVID-19, il Parco Archeologico di Pompei aveva bisogno di creare un’applicazione per tracciare i movimenti dei visitatori all’interno dei 44 chilometri quadrati del parco al fine di garantire il distanziamento fisico/sociale.
I turisti arrivando sul posto possono oggi acquisire i biglietti acquistati nell’app MyPompeii attraverso un QR Code e quindi selezionare uno degli itinerari disponibili da seguire.
I percorsi predefiniti sono pianificati lungo ampi spazi, garantendo la massima sicurezza per evitare i rischi di contagio e assicurando ai visitatori la possibilità di godere del patrimonio
L’applicazione guida il turista durante tutta la visita, avvisando di possibili affollamenti lungo il percorso scelto e dando la possibilità di adattare la propria visita rispetto al numero di persone presenti in un determinato momento.
Cern OpenLab raggiunge il 100% di UpTime su Oracle Cloud con Kubernetes e Autonomous Database. L’utilizzo di Kubernetes e dei container sta consentendo al CERN di migliorare la distribuzione e scalabilità delle applicazioni mission-critical esistenti basate su Java e DB Oracle, e di ridurre drasticamente le attività manuali di manutenzione e patching di sicurezza.
Inoltre, aver abbracciato questo approccio ha permesso al CERN di diminuire i tempi di sviluppo delle nuove applicazioni ed essere maggiormente in linea con le tempistiche e le necessità di scalabilità che vengono dall’ambito della Ricerca.