Nel nostro ultimo articolo abbiamo parlato di IaaS, di cosa significa, quali sono I vantaggi di scegliere una soluzione di Infrastructure as a Service per rispondere alle proprie esigenze IT, senza approfondire approfondire il suo legame con applicazioni Cloud Native.
In questo articolo non è mia intenzione approfondire il mondo delle applicazioni Cloud Native nella sua completezza, ma mettere in evidenza le infrastrutte che possono esserci alla sua base.
Che cosa si intende per Cloud Native?
L'esperienza utente è la caratteristica principale della tecnologia cloud. Aziende di varie dimensioni stanno implementando servizi digitali per migliorare velocità, scalabilità e resilienza. Per gestire la complessità delle infrastrutture IT, è essenziale ottimizzare risorse e gestione tramite strategie, tecnologie e applicazioni Cloud Native.
Con Cloud Native si intende l’approccio allo sviluppo software che, attraverso risorse di cloud computing, crea ed esegue applicazioni scalabili in ambienti moderni e dinamici quali Cloud Pubblici, Privati o Ibridi.
Questo metodo, supportando il processo di sviluppo grazie ai microservizi, consente alle aziende di modificare rapidamente e frequentemente risorse, funzionalità e molto altro delle applicazioni stesse. Il tutto senza influire sull’erogazione del servizio, anzi, migliorandone l’efficienza e garantendo una disponibilità e resilienza del servizio stesso.
L'architettura di applicazioni Cloud Native
L’architettura delle applicazioni che utilizzano l’approccio Cloud Native, per sua natura, è differente rispetto all’architettura di applicazioni tradizionali. Infatti, se queste ultime seguono una struttura più monolitica, le applicazioni moderne seguono una serie di principi che abilitano la possibilità di ottimizzare scalabilità, flessibilità e resilienza nel cloud.
Le odierne applicazioni sono sempre in movimento, sia per le costanti modifiche tra diversi ambienti di elaborazione e sviluppo, sia, soprattutto, poiché dipendono anche dall’infrastruttura sottostante che può cambiare e aggiornarsi. Per rendere flessibile tali risorse vengono disaccoppiate le applicazioni dall’infrastruttura sottostante, attraverso stack e tecnologie quali container, microservizi e serverless.
In linea generale il paradigma cloud-native astrae l'infrastruttura sottostante, esponendola tramite API (Application Programming Interface). In questo modo si semplifica la scalabilità e lo spostamento delle applicazioni stesse, migliorando indirettamente anche la loro disponibilità e resilienza. L’infrastruttura, in questo contesto, è considerata immutabile e di breve durata piuttosto che permanente, ciò significa che se un server si interrompe, può essere istantaneamente distrutto e sostituito con uno nuovo.
Grazie a questo approccio, le applicazioni cloud native sono in grado di adattarsi meglio ai requisiti e ai flussi di business mutevoli, rimanendo stabili anche quando l’infrastruttura sottostante è in evoluzione o presenta difficoltà, migliorandone la robustezza e flessibilità complessive.
Per concretizzare questi concetti, nella figura di seguito vedi un potenziale full stack utile alla creazione ed esecuzione di un’applicazione cloud native. Ciò include:
- il metodo DevOps, cioè il processo di collaborazione adottabile per accelerare i processi di sviluppo ed esecuzione di una app;
- le tecnologie in grado di abilitare la containerizzazione e astrazione di risorse in una infrastruttura distribuita in cloud quali Docker e Kubernetes;
- e soprattutto, il livello inferiore che rappresenta la base di una strategia Cloud Native: la sua infrastruttura.
Andiamo ora ad approfondire proprio questo ultimo punto e quali opzioni sono disponibili proprio nel livello alla base di uno stack per applicazioni Cloud Native.
Quindi, quale IaaS è adatto per applicazioni Cloud Native?
Una volta capito da quali tecnologie può essere composto uno stack per applicazioni Cloud Native, ti chiederai probabilmente tra quali Infrastrutture Compute, cloud o on premise, puoi ospitare il tutto.
Nonostante le opzioni a tua disposizione siano diverse e varino chiaramente in base alle esigenze del tuo business, ecco una comparison tra ciò che puoi scegliere:
Hyper-Scaler: Public Cloud
Qui stiamo parlando dei Big nel settore Cloud Provider: Amazon Web Service, Azure, GCP. La scelta tra servizi, risorse infrastrutturali e software a disposizione nel loro “universo” è sicuramente vasta e completa per ogni esigenza. Ed è ovvio che tale scalabilità illimitata può garantire potenzialmente un'elevata resilienza e disponibilità per le tue applicazioni.
I limiti legati a soluzioni di questo tipo sono principalmente relativi all’interoperabilità tra servizi di diversi cloud provider e, molto spesso, alle loro azioni di lock-in. Non è infatti raro che, proprio per la vasta gamma di soluzioni nei rispettivi ecosistemi di servizi, risulti difficile integrarsi o scegliere altri provider con altrettante soluzioni efficienti.
Un ulteriore limite è legato alla sovranità del dato. Seppure siano in atto cambiamenti normativi e regolamentazioni in questo ambito, risulta oggi ancora nebuloso il trasferimento del dato stesso al di fuori dell’Unione Europea.
Private Cloud: VMware o On-premise
Se invece opti per un’infrastruttura privata, soprattutto in Cloud o e in parte anche l’opzione on-premise, ciò che sicuramente hai garantito sono risorse potenti e dedicate alle tue esigenze. Puoi in questo modo trarre i vantaggi e i punti di forza di un’infrastruttura dedicata, e non condivisa, e in completa libertà aumentare l’efficienza delle tue applicazioni. Chiaramente, soprattutto se la scelta ricade sull'on-premise, ciò che limita questa tipologia di infrastruttura è proprio la sua scalabilità, che rimane elevata ma non illimitata.
CloudFire: Openstack as a Service
A differenza delle proposte precedenti, l’infrastruttura disponibile con Openstack as a Service rappresenta una soluzione alternativa alle limitazioni di scalabilità di un’infrastruttura privata, all’interoperabilità di servizi tra più cloud provider e alla gestione della sovranità del dato degli hyper-scaler.
Innanzitutto, CloudFire con il servizio Openstack as a Service, con modalità simili a Scaleway e OVH, propone un servizio di Infrastructure as a Service basato su Openstack. Ciò permette all’utente di disporre di un pool di risorse dinamico e gestibile da un’interfaccia di risorse on demand. Inoltre, essendo un software opensource, Openstack non limita integrazioni con ulteriori soluzioni. Sono proprio i concetti di community e opensource che scorrono nelle vene di questa tecnologia che rendono la soluzione altamente integrabile con altre.
Lato sovranità del dato invece, grazie allo svincolo dai grandi Cloud Provider citati nel primo punto, con Public Cloud di CloudFire hai la garanzia che i tuoi dati siano in Italia e in Europa, garantendoti la totale libertà di limitarne il trasferimento al di fuori.
IaaS e Cloud Native: Una Scelta Ponderata
Scegliere la propria infrastruttura Cloud per un’applicazione Cloud Native, e non solo, può essere un’operazione critica e delicata. Lato tecnico, non tutte le infrastrutture con determinati componenti compute, network e storage sono adatti all’utilizzo di applicazioni Cloud Native. In secondo luogo, non bisogna sottovalutare il margine di scelta nelle integrazioni e interoperabilità con altri provider.
Accogliere il cambiamento di paradigma per accelerare i cicli di implementazione e sviluppo di applicazioni Cloud Native è ormai imperativo, e la domanda a cui occorre dare risposta sembra essere: sono pronto? Se la risposta è no o se vuoi confrontarti con chi ha già dovuto affrontare questa transizione, scrivici! 🥰
Abbiamo affrontato questi temi in modo più approfondito in questo Tech Talk Public Cloud: Iaas for Cloud Native Platform!