Parliamo spesso di “digital transformation”, nei nostri talk e con i nostri clienti. Raccontarla è difficile, perché non è solo l’uso di una serie di strumenti, ma un approccio metodologico ed organizzativo.
In questa serie di articoli andremo a delinearne i confini, e chiariremo perché è importante e soprattutto perché lo è adesso.
Cominciamo con una premessa: oggi ogni azienda è anche un’azienda software. Il software è onnipresente, accompagna le nostre attività quotidiane e costituisce il canale preferenziale con cui gli utenti interagiscono con le aziende. È il terreno su cui ci misuriamo per rimanere rilevanti sul mercato. Amazon, Uber, Airbnb, Netflix, pur essendo presenti in settori ben diversi fra loro, sono soprattutto e principalmente aziende che producono software.
“Business digitale” è spesso associato ad aziende come quelle citate che hanno introdotto innovazione e tecnologia e che son riuscite a rompere tradizioni ed equilibri consolidati, tracciando nuovi business model, nuovi paradigmi ed imponendosi come leader nel settore di riferimento. Ma quello che accade oggi è che ogni business deve seguire questo percorso per rimanere rilevante e le applicazioni sono il fulcro di una strategia aziendale che mette il digitale al centro di ogni processo.
Machine learning, blockchain, chatbot, wearable e Internet of Things sono alcune delle buzzwords che caratterizzano la discussione attuale sul business digitale, ma tali strumenti non sono che elementi racchiusi in una cornice molto più ampia. Queste tecnologie si sviluppano e vivono in un contesto di cultura aziendale votata all’agilità organizzativa, dove il business risponde alla velocità di mutamento della domanda con un modello rapido e flessibile di sviluppo e rilascio dei prodotti.
Quindi cos’è il Cloud Native e come si inserisce in questo scenario?
Il Cloud Native è prima di tutto un approccio metodologico (ouna serie di approcci, come vedremo in seguito) che si propone di dare una risposta alla domanda “Come posso far si che il mio business reagisca in tempi rapidi alle richieste mutevoli del mercato?”.
Formalmente la definizione di Cloud Native, data dalla CNCF — Cloud Native Computing Foundation, è la seguente:
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
Il concetto di Cloud Native non indica quindi solo la capacità di una applicazione di essere eseguita su un cloud privato o pubblico. È anche un approccio metodologico, che nasce dalla sempre maggiore dipendenza delle aziende dal software e dalla necessità di renderlo disponibile ed adattarlo velocemente per rispondere in maniera più efficace ai cambiamenti del mercato. Un approccio che si traduce nella pratica in una serie di cambiamenti culturali e best practices che consentono agli sviluppatori di costruire, mantenere e scalare applicazioni moderne in modo rapido e sicuro.
L’evoluzione verso una metodologia di sviluppo e rilascio di una applicazione Cloud Native è un processo multidimensionale che va a toccare cultura aziendale, processi, architetture e tecnologia. È una trasformazione che non deve essere per forza istantanea, soprattutto considerando business già consolidati che non hanno la possibilità materiale di attuare cambiamenti radicali, ma può e deve essere vista come un graduale cambiamento.
Fra applicazioni Cloud Native e tecnologie come containers, container orchestrators, microservices , API dichiarative e metodi Agile vi è una stretta correlazione, perché sono strumenti funzionali ai mutamenti necessari in infrastrutture, architetture, tecnologie e processi aziendali.
Le quattro aree in cui l’approccio cloud native va ad intervenire
Vediamo quindi quali sono questi mutamenti.
PROCESSI
Evolvere verso cultura e pratiche DevOps è il primo passo nella strada che porta allo sviluppo di applicazioni Cloud Native. Continuous Integration / Delivery (CI / CD ) e aderenza a metodi Agile sono risposte al bisogno di rapidità di adattamento al mercato e corrispondono al primo sostanziale cambiamento di cultura e organizzazione aziendale. Lo spostamento del focus da longevità e stabilità di prodotto alla velocità di rilascio necessita quindi che l’azienda sia strutturata per cicli di rilascio brevi e continui, portando all’organizzazione dello sviluppo a team multidisciplinari e collaborativi.
ARCHITETTURA
L’introduzione di team DevOps multidisciplinari apre le porte ai Microservices. I microservices sono uno stile architetturale che affronta lo sviluppo di una singola app come una suite di servizi modulari ed indipendenti, che possono essere facilmente e costantemente sviluppati, mantenuti e scalati singolarmente senza compromettere la stabilità dell’intera applicazione. I vantaggi di questo stile architetturale sono evidenti (ne parleremo profusamente nei prossimi articoli) e possiamo citare:
- indipendenza dei team di sviluppo
- isolamento e resilienza dei singoli componenti/servizi
- scalabilità e automazione del lifecycle (CI/CD)
INFRASTRUTTURA
Il passo forse più importante in questo cammino è costituito dall’introduzione dei container e dalla loro orchestrazione. I container si sposano perfettamente con una architettura basata su microservices garantendo portabilità tra i vari ambienti ed infrastrutture, assicurando che le applicazioni siano isolate e sicure. Sono la risposta al bisogno di scalabilità orizzontale delle applicazioni moderne, fornendo uno strumento che mette a disposizione istanze sacrificabili dello stesso componente che possono essere dispiegate o rimosse velocemente in base alla effettiva istantanea richiesta.
COMUNICAZIONE
L’utilizzo di servizi modulari ed autocontenuti consente di basare tutta la comunicazione fra i vari componenti dell’applicazione su API leggere e agnostiche dal punto di vista tecnologico. Questo costituisce un ulteriore passo verso la riduzione della complessità del deployment e permette un ulteriore livello di indipendenza degli sviluppatori, che possono scegliere la tecnologia giusta per il lavoro che devono svolgere senza preoccuparsi della sua integrazione con il resto dell’applicazione.
Nei prossimi articoli ci avventureremo nei dettagli, approfondendo gli aspetti teorici e facendo delle dimostrazioni di come mettere in pratica questi principi usando gli strumenti open-source che abbiamo a disposizione.
Porteremo avanti il discorso su metodologie e best practices, raccontando perché la twelve-factor rappresenta una delle metodologie più solide e credibili.
- Post precedente
- Vedi tutti i post
- Post successivo