Duned

Microservizi: la trasformazione digitale non può farne a meno

 

L’era digitale è caratterizzata da una crescente diffusione di servizi cui gli utenti accedono online, spesso via app mobile e in qualunque momento. Questi servizi e applicazioni digitali devono soddisfare requisiti come la disponibilitàl’affidabilità, la prestazione e la scalabilità.

Per esempio, una piattaforma di ticketing online o un sito di e-commerce permettono l’accesso contemporaneo a volumi di utenti anche elevati che generano andamenti fluttuanti delle richieste. Per la piattaforma di ticketing online, l’apertura della vendita dei biglietti per un evento molto atteso può comportare un picco di traffico, esattamente come, per l’e-commerce, il Black Friday o lo shopping di Natale.

Tutto questo si traduce in workload molto diversi da quelli dell’era dell’IT tradizionale. I picchi – verso l’alto ma anche verso il basso – sono difficili da amministrare con le risorse IT dei classici data center, perché non offrono la possibilità di scalare in maniera elastica o perché alcuni sistemi legacy non sono concepiti per supportare i workload con una disponibilità 24 ore su 24, 7 giorni su 7. I microservizi forniscono la risposta all’esigenza di gestire l’infrastruttura IT in maniera agile.

microservizi permettono lo sviluppo di applicazioni organizzate in servizi indipendenti di piccole dimensioni che comunicano tra loro tramite API (Application Programming Interface) ben definite. In questo modo, le applicazioni vengono sviluppate in modo più rapido e semplice, conferendo loro scalabilità e resilienza.

Nelle architetture tradizionali “monolitiche”, invece, i processi vengono eseguiti come un singolo servizio. Se un processo dell’applicazione sperimenta un picco nella richiesta, è necessario ridimensionare l’intera architettura anziché solo il processo interessato dal picco, con tempi, costi e complessità maggiori. Inoltre, la presenza di numerosi processi dipendenti tra loro aumenta l’impatto di un errore in un singolo processo, minacciando la disponibilità e la stabilità dell’intera applicazione. L’architettura basata su microservizi risolve queste difficoltà con efficacia.

 

I microservizi permettono di arrivare velocemente al mercato

 

Grazie a questa architettura ciascun servizio può essere aggiornatodistribuito e ridimensionato in modo indipendente per rispondere alla richiesta di funzioni specifiche di un’applicazione. La scalabilità che ne deriva permette alle aziende di essere più veloci nel time-to-market. Inoltre, i microservizi abilitano l’integrazione e la distribuzione continua, perché il deployment, le modifiche e gli aggiornamenti del codice si fanno per i singoli microservizi. I team lavorano in modo agile e autonomo e possono sperimentare nuove idee in modo più semplice, validando le migliori e scartando quelle meno convincenti, in un processo di innovazione continua che non compromette il funzionamento complessivo dell’applicazione e non grava sui costi.

In definitiva la gestione dei workload in architetture a microservizi è fondamentale per competere. Gli utenti sono online – spesso su mobile – ed è in questi ambienti che si svolge il business. Le aziende devono necessariamente puntare su velocitàprestazioni e Customer Experience, come hanno dimostrato i colossi nativi digitali e le pure-play del web.
Occorrono strumenti per creare agilmente nuove app e servizi digitali per rispondere al mercato in continua evoluzione, agendo in modo tempestivo per cogliere le opportunità e fronteggiare le minacce. In questo contesto i tempi lunghi dello sviluppo applicativo basato sulle infrastrutture tradizionali possono rappresentare uno svantaggio.

 

I container, l’orchestrazione di Kubernetes e l’ABC dell’implementazione

 

Un’applicazione organizzata in microservizi garantisce le prestazioni migliori se è installata su un container. I container sono ambienti software che contengono il codice applicativo e tutti i relativi componenti necessari al funzionamento di un microservizio. In questo modo, l’applicazione è spostabile ed eseguibile in qualsiasi infrastruttura, sia on premise che su cloud (privato, pubblico, ibrido), anche di provider diversi (multicloud).

I container si possono connettere per comunicare tra loro e anche orchestrare tramite tecnologie come Kubernetes, un software in grado di automatizzare il deployment e la scalabilità dei servizi containerizzati in funzione delle necessità. In poche parole, il numero di server in funzione si adatta in real-time in base al workload. Con Kubernetes è possibile eseguire qualsiasi tipo di applicazione in container utilizzando gli stessi strumenti in locale e nel cloud.

Un ulteriore passo in avanti per le imprese è rappresentato dalla Modern Application , una trasformazione verso applicazioni aziendali cloud-native . In questo percorso le applicazioni nate per i sistemi legacy vengono gradualmente integrate alle app cloud-native. In maniera incrementale i dipartimenti IT modernizzano app e carichi di lavoro e vanno verso una nuova architettura più agile, facendo leva sulle opportunità portate dai container, dall’architettura a microservizi e da Kubernetes.

In alternativa a soluzioni come Kubernetes oggi i programmatori di microservizi possono utilizzare i container serverless, come AWS Fargate. In questo modo le imprese possono concentrarsi sulla creazione di applicazioni senza dover gestire i server. Soluzioni di questo genere rendono ancora più veloce costruire e implementare le architetture di applicazioni, API e microservizi perché le imprese e i loro dipartimenti IT si concentrano sullo sviluppo delle applicazioni senza dover pensare alla gestione dei server.

AWS Fargate, in particolare, è un motore serverless compatibile sia con Amazon Elastic Container Service (ECS) che con Amazon Elastic Kubernetes Service (EKS), con cui si costruisce l’immagine virtualizzata del container. Si definiscono poi le risorse di memoria e di calcolo che sono necessarie e qui si fanno girare e si gestiscono le applicazioni, ciascuna in modo autonomo (isolation by design delle applicazioni). Le risorse di calcolo richieste si pagano solo quando vengono usate, senza costi anticipati. Le aziende ottengono da subito anche la scalabilità necessaria per migliorare la capacità del server, senza effettuare l’over-provisioning, per addestrare, testare e implementare i propri modelli di machine learning.

 

Microservizi e container: alcuni casi d’uso

 

 

Qualche anno fa una startup newyorkese ha lanciato un brillante modello di business: una piattaforma mobile dove l’utente trova sfiziose ricette da provare a casa. Sulla stessa piattaforma, mentrenaviga tra ingredienti e istruzioni, appaiono dei link collegati a negozi dove si possono acquistare materie prime, utensili da cucina e qualunque altra cosa legata al mondo e ai brand del food. La ricetta viene così associata a store online e fisici, anche di prossimità. Un modello di business del genere non sarebbe realizzabile senza l’architettura a microservizi.

Questa piattaforma mobile, infatti, è in grado di collegare tra loro contenuti, acquisti, mappe, localizzazione, pagamenti e tecnologia mobile e poggia necessariamente su una gestione flessibile dei workload: la soluzione deve essere in grado di elaborare miliardi di data point quasi in tempo reale e rispondere a uno, mille o centomila utenti garantendo le stesse prestazioni e senza generare costi insostenibili per il business. La containerizzazione con Kubernetes e i microservizi risolvono questi problemi perché permettono un’implementazione più veloce e leggera, facilitano la scalabilità e preservano la User Experience.

Un altro tipico esempio di implementazione di architetture a microservizi riguarda il retail omnichannel: la flessibilità del software è un fattore strategico per garantire la resilienza in momenti di crisi. Ma non solo, considerando che i Microservizi permettono la modifica, il riassemblaggio e il ridimensionamento delle funzionalità esistenti secondo le necessità, si possono sfruttare opportunità di mercato che richiedono una certa tempestività, garantendo costantemente una Customer Experience ottimale sui diversi canali. Un altro utilizzo dell’architettura a microservizi è per la gestione della logistica e delle consegne a domicilio, anche questi soggetti a significative fluttuazioni.

Allo stesso modo i microservizi supportano l’espansione internazionale delle imprese grazie alla semplificazione delle operazioni di implementazione dell’infrastruttura per operare in nuovi mercati. Il cloud, naturalmente, è alla base della portabilità e della scalabilità delle applicazioni, ma i vantaggi sono massimi se queste sono progettate in modo flessibile per ottimizzare le prestazioni, il time-to-market e i costi di manutenzione.

 

Cosa fa DuneD per i suoi clienti: un progetto concreto per la modernizzazione dell’IT che rende agile il business

 

 

I settori e gli ambiti di applicazione delle architetture a microservizi sono davvero numerosi. Tra i casi concreti in cui DuneD sta aiutando i suoi clienti a far leva sull’innovazione delle architetture IT e la modernizzazione delle applicazioni, c’è quello di un’azienda che opera a livello internazionale nell’edilizia e che ha scelto  AWS Modern Application DuneD per andare verso una gestione integrata delle funzionalità di preventivazione, pianificazione e consuntivazione dei cantieri e delle funzioni CRM e HR. Per questo nostro cliente stiamo sviluppando il sistema gestionale che gestisce le commesse e i relativi processi di lavorazione.

L’azienda in questione si è rivolta a DuneD e AWS con una precisa esigenza: sostenere la crescita del business, che sta avvenendo a ritmi eccezionalmente veloci, nell’unico modo oggi possibile, ovvero modernizzando i suoi sistemi tecnologici. Questi si presentavano, infatti, come non più rispondenti alle esigenze del business e alla crescita degli utilizzatori. Inoltre, non permettevano una rapida ed efficiente implementazione di nuove funzionalità. Per questo DuneD ha sviluppato un progetto articolato in più attività, che parte dall’adozione del cloud computing e per approdare all’architettura a microservizi.

La base è rappresentata dunque dall’utilizzo dei servizi di cloud computing AWS, con il risultato di dare al cliente un’architettura modernascalabile e sicura, con SLA uptime del 100%.
Una seconda attività prevista è la centralizzazione dell’autenticazione e dell’autorizzazione con AWS Cognito, che permette al cliente di adeguare le policy di sicurezza degli accessi e di disporre di un controllo centralizzato dei profili e dei domini di dati a cui accedono i vari utenti.

Segue quindi la creazione di microservizi specifici per ambiti funzionali tramite AWS Elastic Container Service (ECS) e Fargate, che hanno, tra grandi vantaggi, quello di permettere il riutilizzo di know-how “ad alta specificità tecnica” già presente.

Un aspetto chiave di questo progetto è la gestione dello sviluppo “a fasi”: definita la timeline di rilascio, l’approccio adottato da DuneD, in linea con le richieste del cliente, è di “ricoprire” porzioni di software esistenti con i microservizi e, una volta implementata la struttura, procedere con il “refactoring” delle diverse componenti secondo le priorità aziendali. Questa tecnica di ingegneria del software permette, infatti, di modificare la struttura interna di porzioni di codice senza modificarne il comportamento esterno ma aumentandone caratteristiche essenziali che danno al business grande agilità.

 


 

Spunti di riflessione…

 

  • Allied Market Research: le previsioni sul valore del mercato dell’architettura a microservizi.
  • Qui il link della Startup newyorkese di ricette & shopping.
  • A proposito del mercato dei microservizi sul cloud, qui lo studio di Markets and Markets.

 

Podcast interessanti…

 

  • Dalle architetture monolitiche all’agilità dei microservizi, il podcast di Sound Cloud con Sam Newman, autore del libro “Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith”
  • Devops on AWS Radio – Containers on AWS: il podcast di Stelligent con approfondimenti e best practice sui container AWS

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>