MODERN APPLICATION PLATFORM AND GOVERNANCE

Oggi diventa sempre più importante essere innovativi e reattivi per poter cogliere le sfide imposte dai cambiamenti del mercato e soddisfare i bisogni del cliente, anche in considerazione della prorompente trasformazione digitale che pervade la nostra realtà.

Organizzare architetture moderne per lo sviluppo e la governance delle applicazioni può aiutare le aziende ad essere più veloci e dinamiche: tecnologie cloud native, microservizi e container, API, insieme a best practice legate alle attività di sviluppo software come DevOps, DevSecOps e approcci quali la metodologia Agile possono contribuire a dare una migliore risposta alle esigenze di business poiché consentono lo sviluppo delle applicazioni in maniera efficiente e rapida.

Ma in cosa consistono queste tecnologie e quali sono le opportunità che offrono?

La definizione di cloud-native, data dalla CNCF — Cloud Native Computing Foundation (Fondazione Linux che sostiene questo ecosistema, e che vede quali membri attori di riferimento nel settore IT), è la seguente:  “Le tecnologie native del cloud consentono alle organizzazioni di creare ed eseguire applicazioni scalabili in ambienti dinamici e moderni, come cloud pubblici, privati e ibridi. Contenitori, servizi mesh, microservizi, e API dichiarative costituiscono un chiaro esempio di questo approccio. Queste tecniche offrono sistemi a regime di controllo libero che sono resilienti, gestibili e osservabili. Combinati con un’automazione affidabile, consentono ai tecnici di apportare frequentemente modifiche ad alto impatto e prevedibilità con il minimo sforzo.

La Cloud Native Computing Foundation cerca di guidare l’adozione di questo paradigma promuovendo e sostenendo un ecosistema di progetti open source e indipendenti dai fornitori. L’interesse cade nella volontà di democratizzati modelli all’avanguardia per rendere queste innovazioni accessibili a tutti”.

Fonte: https://github.com/cncf/toc/blob/master/DEFINITION.md

 

Infrastrutture basate sul cloud, unitamente alle componenti sotto descritte, utilizzate per lo sviluppo di applicazioni moderne, sono elementi che supportano l’implementazione di modelli di business software-driven.

Introduciamo quindi brevemente i concetti di: container, microservizi, servizi mesh, DevOps ed orchestratori.

Container

Parliamo di una tecnologia software che si occupa di “virtualizzare” l’esecuzione di processi (non di una intera macchina come nel caso di virtual machine) creando un involucro che contiene codice, librerie, runtime, impostazioni … tutto quello che serve al funzionamento dell’applicazione per creare un ambiente leggero più facilmente modificabile, che permette di gestire al meglio il carico delle risorse e di eliminare eventuali ridondanze.

La caratteristica dei container è perciò la capacità di isolare le componenti delle applicazioni che possono essere di conseguenza modificate e aggiornate separatamente, senza dover intervenire sull’intera soluzione software.

Inoltre, in questo modo, i team di lavoro all’interno delle organizzazioni possono maggiormente focalizzarsi sulle proprie attività in quanto la distinzione tra lo sviluppo delle applicazioni e l’ambiente sul quale sono eseguite permette da un lato agli sviluppatori di concentrarsi sulla realizzazione del software e dall’altro di lasciare la gestione e il deploy al reparto IT dedicato.

Innovatore nello sviluppo dei meccanismi container è Docker, della quale ci piace riportarne il claim: “We simplify the lives of developers who are making world-changing apps”.

Microservizi

Sono uno stile architetturale oggi molto diffuso per la creazione di applicazioni moderne che consiste in un set distribuito di piccoli servizi autonomi e indipendenti che interagiscono attraverso un’infrastruttura condivisa e, nell’insieme, formano l’applicazione.

L’approccio di sviluppo tramite microservizi implica che ogni funzionalità del software che si sta realizzando può essere modificata rapidamente senza influire sul resto dei file, contrariamente all’approccio tradizionale monolitico che vede l’esecuzione dell’applicazione in un unico “blocco”.

Questo permette di essere più reattivi e “leggeri” nel rispondere alle esigenze del mercato ma comporta anche un cambiamento culturale per i team di sviluppo software che si interfacciano con le strutture di operations/prodotto all’interno dell’azienda: a supporto di questo cambiamento intervengono le metodologie DevOps e Agile (che vediamo più avanti) che facilitano ulteriormente le interazioni tra team.

Servizi mesh

Lavorare con i microservizi, specialmente se parliamo di applicazioni molto grandi, può compromettere le esigenze di comunicazione tra gli stessi; l’architettura con servizi mesh affida a questi il compito di gestire la comunicazione sottraendolo agli sviluppatori o ai microservizi stessi.

Viene quindi definito (tramite istanze proxy che permettono di condividere flussi di comunicazione tra i vari microservizi), un livello di infrastruttura con funzionalità dedicate alla comunicazione e configurabile autonomamente.

DevOps (Development / Operations)

La contrazione delle due parole inglesi che compongono il nome di questa metodologia già ne identifica il significato: la collaborazione, all’interno delle aziende, tra i team dedicati allo sviluppo software e quelli rivolti alle operations del reparto IT.

Si tratta di un approccio e di una serie di pratiche e strumenti che mirano ad aumentare la condivisione e la collaborazione nella attività di rilascio software, al fine di accelerare il time-to-market e soddisfare più rapidamente le esigenze di business, andando a toccare anche cambiamenti culturali e organizzativi.

La coesione delle risorse lungo la catena di sviluppo delle applicazioni, procedure e test automatici, concetti quali Continuous Delivery e Continuous Integration (tecniche di sviluppo Agile) aiutano a migliorare la qualità del software, ad essere più veloci e affidabili, a incrementare la sicurezza di quanto realizzato (una estensione di DevOps è DevSecOps, che coinvolge anche i team esperti di sicurezza).

La nostra massima priorità è soddisfare il cliente rilasciando software di valore, fin da subito e in maniera continua”.

Orchestratori

Un ultimo accenno agli orchestratori: strumenti che automatizzano sistemi e applicazioni per favorire la gestione più semplice delle attività, come ad esempio Kubernetes (sistema open-source di orchestrazione e gestione di container inizialmente sviluppato da Google e ora mantenuto da Cloud Native Computing Foundation).

Oggi le organizzazioni hanno dunque a disposizione tecnologie e metodi per realizzare piattaforme di sviluppo software moderne, flessibili e agili, in modo da soddisfare le mutevoli necessità che il mercato impone.  

Metti al centro il tuo business grazie all’innovazione!

ISCRIVITI ALLA NEWSLETTER

Per rimanere aggiornato su tutte le novità, leggere gli ultimi articoli del blog e conoscere gli eventi in programma nelle prossime settimane, iscriviti subito alla newsletter.

Post Correlati