Non importa quale sia il provider cloud utilizzato se il carico di lavoro è progettato per essere portabile. Quando si progetta con la portabilità e la standardizzazione in mente, è necessario iniziare a identificare i punti di lock-in del fornitore o i punti in cui un fornitore di cloud può potenzialmente impedire il passaggio a un altro fornitore.
Ad esempio, progettare intorno a elementi come Kubernetes non è sempre sufficiente. Pensate ad altri sistemi con cui il cluster Kubernetes potrebbe interagire o con cui dovrebbe interagire. Valutate questi requisiti e progettate la vostra architettura utilizzando soluzioni open source e primitive dell'infrastruttura cloud di base, che potete trovare presso qualsiasi provider cloud.
Concentrarsi su API standard per garantire la compatibilità tra l'applicazione e altri sistemi. Iniziate con le API RESTful per i componenti che utilizzano la comunicazione sincrona (richiesta/risposta). La loro popolarità deriva dall'uso di HTTP, il protocollo più comune e ampiamente supportato. Mentre altri protocolli si sono succeduti e continueranno a farlo, ad esempio per lo streaming video, quelli che sono rimasti sono basati su HTTP.
I progetti modulari con microservizi o container suddividono l'applicazione in componenti più piccoli e gestibili, facilitando l'aggiunta o la rimozione di funzionalità secondo le necessità e rendendo l'applicazione più flessibile e scalabile. L'approccio cloud-native si distingue perché fornisce un processo efficiente per l'aggiornamento e la sostituzione di questi componenti senza influenzare l'intero carico di lavoro.
Una volta che si dispone di un'architettura portatile, come si fa a evitare che sia così opprimente dal punto di vista della gestione? L'automazione semplifica e snellisce la distribuzione e la gestione dell'applicazione. Utilizzate pipeline di integrazione continua/dispiegamento continuo (CI/CD) e strumenti di infrastructure-as-code (IaC).
Un approccio dichiarativo alla distribuzione consente di codificare ogni parte del carico di lavoro: l'applicazione, il software, le configurazioni di sistema e tutto ciò su cui viene eseguito negli ambienti di sviluppo, staging e produzione. Di conseguenza, è possibile eseguire rapidamente lo spin up su un nuovo cloud, il failover o il burst su un altro cloud provider. Con un ambiente completamente codificato che è anche versionato, avete tutto documentato per quanto riguarda esattamente la configurazione di ogni cosa e avete una cronologia trasparente di tutte le modifiche e di tutti coloro che le hanno apportate.
E, naturalmente, dobbiamo ricordare la sicurezza. Seguire questo percorso di portabilità consente di sviluppare un approccio più standard alla sicurezza, eliminando la pericolosa mentalità del "metti e dimentica". L'ho visto spesso. Si distribuisce un carico di lavoro in un cloud privato virtuale (VPC) e si presume che sia sicuro.
Nell'ambito dello stesso approccio "Everything-as-Code", implementiamo un'architettura portatile e standardizzata; anche gli aspetti della vostra sicurezza possono essere standardizzati e codificati. Oltre alle pratiche DevSecOps che automatizzano i cicli di feedback, i test di vulnerabilità e così via, si pensi alle politiche di controllo degli accessi e ai modelli di configurazione rinforzati: questi possono essere indipendenti dalla piattaforma sottostante e quindi possono proteggere le risorse con coerenza in tutti gli ambienti. Questo approccio alla sicurezza può essere immensamente potente, soprattutto quando si può prendere un'applicazione e scaricarla su qualsiasi cloud provider. La possibilità di prelevare il carico di lavoro e spostarlo è una solida strategia difensiva per il disaster recovery.
Vantaggi di un'architettura portatile
Un'architettura cloud portatile offre flessibilità, ottimizzazione dei costi, resilienza, scalabilità e migliori pratiche di distribuzione. Permette di scegliere le soluzioni cloud migliori per le proprie esigenze, di evitare il vendor lock-in e di adattarsi rapidamente all'evoluzione dei requisiti o delle condizioni di mercato. È inoltre possibile:
- Aumento della disponibilità: Un'architettura portatile garantisce che le applicazioni possano essere facilmente distribuite su più piattaforme cloud, riducendo il rischio di downtime dovuto a problemi specifici della piattaforma.
- Migliorare l'agilità: Un'architettura cloud-native consente agli sviluppatori di iterare e distribuire rapidamente nuove caratteristiche e funzionalità, riducendo il time-to-market e migliorando la competitività.
- Migliorare la sicurezza: Un'architettura portatile consente di proteggere in modo più coerente le applicazioni e i componenti dell'infrastruttura, con funzioni di sicurezza come la crittografia e la gestione delle identità integrate nell'architettura anziché affidarsi alle caratteristiche della piattaforma.
- Aumentare la resilienza: Un'architettura portatile garantisce che le applicazioni possano sopravvivere a guasti hardware e software senza interruzioni o perdite di dati.
- Gestione più semplice: Un'architettura portatile consente di gestire le applicazioni in modo più efficiente, con strumenti di monitoraggio, automazione e orchestrazione che funzionano su più piattaforme cloud.
- Aumentare l'innovazione: Un'architettura portatile consente alle organizzazioni di utilizzare tecnologie nuove ed emergenti, come l'intelligenza artificiale e l'apprendimento automatico, per creare applicazioni e servizi innovativi.
Commenti