Frank Greco

Marzo 2017

L’azienda Software Defined Tra microservice, architetture e agilità di business

Nelle aziende dinamiche, i requisiti di business e i risultati attesi si ampliano a un ritmo sempre più accelerato. L’agilità di business è più importante che mai, e pone nuove sfide alle strategie IT tradizionali

 

Le esperienze fin qui compiute con il cloud computing, in particolare nell’ambito Platform as a Service (PaaS), hanno mostrato il potenziale del software come strumento per generare entrate, oltre che per fornire infrastrutture di business on-demand e ridurre i costi. E più queste esperienze maturano, più le aziende riconoscono l’importanza e la flessibilità di un’ampia gamma di servizi piccoli e funzionalmente vincolati, che portano notevoli vantaggi e mostrano come operano o dovrebbero operare le imprese efficienti.

Trasformare una grande azienda verso questo modello è una sfida per i team IT: come è consueto per l’IT aziendale, il cambiamento è più di una costante, in quanto è continuo e incessante.

Nel corso degli ultimi anni, vi sono stati cambiamenti significativi nell’IT aziendale, con l’emergere di tecniche e strumenti molto potenti che affrontano il bisogno di flessibilità. Le aziende stanno evolvendo oltre il semplice cloud computing, che è essenzialmente un data center software-defined, andando verso architetture di servizi sofisticate, che stanno effettivamente trasformando tali aziende in imprese software-defined.

 

Nuovi strumenti tecnologiciIn questo nuovo ambiente, le capacità tecniche e le risorse a disposizione del CIO e dei team IT sono progredite rapidamente. Consideriamo anche come il termine “High Performance Computing” (HPC) è cambiato nel corso degli ultimi 3-5 anni: HPC tradizionalmente evocava immagini di supercomputer mostruosi nelle dimensioni, con centinaia o migliaia di macchine che collaborano su reti estremamente veloci e a bassa latenza, sistemi di elaborazione parallela complessi, database estremamente grandi, analisi sofisticate e linguaggi di programmazione oscuri. In genere questi strumenti si sono visti solo nelle conferenze esclusive relative ai mercati dei capitali, nei laboratori di ricerca molecolare, nelle analisi crittografiche governative o in altri casi molto “esotici” di utilizzo. I costi esorbitanti di gestione di tali sistemi erano in genere accessibili solo dall’elite finanziaria o da istituzioni che godevano di robuste donazioni. Ma ora questi sistemi estremamente potenti sono definiti dal software, e possono essere realizzati e messi in opera in pochi minuti utilizzando cloud provider esterni. Si tratta di una nuova era nel settore IT, dettata da una generazione di strumenti potenti a elevate prestazioni e altamente scalabili che ora sono di rigore, e che, soprattutto, sono software-defined.

 

Architettura basata sui microservizi Per adattarsi e reagire a questo ambiente, anche l’approccio IT alla services architecture si è evoluto. Le applicazioni sono ora composte da una raccolta crescente di servizi più piccoli, raggiungibile tramite un grande insieme di API e librerie. E per gestire queste applicazioni, nuovi modelli di progettazione del software, che utilizzano micro servizi utilizzabili in modo indipendente, si sono dimostrati di successo in molti casi d’uso. Un’architettura microservice è uno stile architetturale in cui si crea un’applicazione con una raccolta di piccoli servizi funzionalmente vincolati, che possono essere implementati separatamente e comunicano con altri servizi che utilizzano meccanismi leggeri e operano su diversi linguaggi. Potrebbero utilizzare REST/HTTP o procedure remote di collegamenti sincroni o di richiesta-risposta. Oppure, possono utilizzare AMQP o MQTT per la comunicazione di tipo messaggistica asincrona.

L’esecuzione di un gran numero di microservice sarebbe inefficiente e costoso se ciascuno fosse in esecuzione in una macchina virtuale (VM) completamente “provisioned”. Per risolvere questo problema, i microservice sono tipicamente distribuiti utilizzando i “container”, che rappresentano una modalità più efficiente di virtualizzazione fornita all’interno di un sistema operativo. La nozione di container non è nuova e ha le sue origini molti anni fa nel sistema operativo Unix; è stata poi perfezionata per soddisfare le esigenze di isolamento delle risorse di microservice. Un tipo molto popolare di container è Docker: per gestire un gran numero di container che possono implementare, scalare ed essere resilienti automaticamente in produzione, ci sono piattaforme container-centric, come Kubernetes e Apache Mesos che forniscono alle aziende un’infrastruttura basata su container.

 

L’agilità dei microserviziMolte aziende si sono spostate o si stanno spostando verso architetture microservice e container per fornire l’agilità necessaria al business. Questo tipo di architetture comporta progettare i sistemi come collezioni di servizi, implementabili in modo indipendente per una migliore agilità e la reattività di business, con vantaggi sostanziali rispetto a un approccio tradizionale.

Tuttavia, come è già successo per molti aspetti dell’IT, bisogna fare alcune considerazioni sul fatto che le aziende siano in grado di cambiare il loro approccio alla progettazione e alle loro implementazioni.

Per esempio, come si fa a gestire decine, centinaia o persino migliaia di microservice? È il tipo di orchestrazione di Kubernetes o Mesos la soluzione per la gestione dei microservice? Come è possibile monitorare e gestire questo tipo di architettura soprattutto quando i microservice falliscono? E in cosa consiste esattamente il “fallimento”, visto che in genere i microservice hanno vita breve e forse non sono neppure in esecuzione tutto il tempo, ma vengono ancora considerati “sani”? Come si fa a progettare un grande archivio dati microservice con Spark o Apache Flint? E, con l’azienda che diventa Software Defined, quali tecniche e tecnologie possono aiutare a garantire l’affidabilità funzionale in tutta l’impresa?

 

Più utenti, più app, meno tempoQuesta fase evolutiva del software dei microservice nell’azienda di oggi coincide con un’altra tendenza chiara: la crescente domanda degli utenti per app affidabili e facili da installare, oltre che per funzionalità di rete intelligente. Gli utenti rappresentano sempre di più una sfida per i reparti IT nel fornire applicazioni altamente funzionali e immediatamente disponibili e, soprattutto, in tempi di tipo on-demand. Non solo: oggi, sono disponibili nuove tecniche lato client, come le Progressive Web Apps (PWA), per sfruttare moderni approcci web e fornire le prestazioni delle applicazioni native e facilità di implementazione. Molte grandi aziende innovative come AliExpress, Priceline, Flipkart, Konga e altre utilizzano le PWA per consentire ai dispositivi mobili di accedere in modo sicuro ai loro microservice interni. Si tratta di tecniche che permettono a queste applicazioni di evitare procedure di installazione complesse, di essere installate nella schermata home, di partire rapidamente e di adattarsi intelligentemente alle diverse condizioni della rete. Con questa nuova generazione di risorse di computing e di rete, oltre che di modelli di sviluppo e di implementazione di microservice potenti, on-demand e ad alte prestazioni, si è oggi in grado di raggiungere un elevato grado di agilità di business, che è l’obiettivo principale delle aziende.

 

Un piano strategicoIl software è una strategia centrale di business per le aziende. Le lezioni apprese di recente utilizzando un data center Software Defined con microservice e container, vengono ora applicate a livello di intera azienda. La business intelligence, la governance, la sicurezza adattiva, il mobile, la ridondanza, la scalabilità e anche il coinvolgimento dei clienti, sono tutti aspetti software-driven, cioè guidati dal software, che aumentano notevolmente la capacità e la rapidità delle aziende di adattarsi alle mutevoli condizioni di mercato. Questo ambiente imprevedibile richiede un rapido adattamento al cambiamento e una reazione immediata agli eventi di business. Un’agilità di business efficace è diventata un elemento di differenziazione fondamentale. La Software Defined Enterprise costituisce quindi un approccio importante per l’agilità che interessa tutti gli aspetti di ogni organizzazione.