Microservizi - Implementazione di microservizi in AWS

Microservizi

Le API sono la porta che conduce ai microservizi, il che significa che le API fungono da punto di ingresso per la logica delle applicazioni dietro una serie di interfacce programmatiche, in genere un'API per servizi web RESTful. Tale API accetta ed elabora le chiamate dai client e può implementare funzionalità specifiche quali gestione del traffico, filtraggio delle richieste, routing, memorizzazione nella cache, autenticazione e autorizzazione.

Implementazione microservizi

AWS presenta componenti integrati che supportano lo sviluppo di microservizi. Due approcci molto usati prevedono l'utilizzo di AWS Lambda e container Docker con AWS Fargate.

Con AWS Lambda, è sufficiente caricare il codice e lasciare che Lambda si occupi di tutte le operazioni necessarie per avviare e dimensionare l'implementazione in modo da soddisfare la curva effettiva delle richieste con la massima disponibilità. Non è necessaria alcuna amministrazione dell'infrastruttura. Il servizio Lambda supporta diverse sintassi di programmazione e può essere attivato da altri servizi AWS oppure richiamato direttamente da qualsiasi applicazione web o per dispositivi mobili. Uno dei maggiori vantaggi di AWS Lambda è la possibilità di progredire in modo rapido: è possibile concentrarsi sulla logica di business dal momento che la sicurezza e il ridimensionamento sono gestiti da AWS. L'approccio prescrittivo di Lambda guida la piattaforma scalabile.

Un metodo utilizzato di frequente per la riduzione del carico operativo dell'implementazione è l'uso di container. Le tecnologie di container come Docker sono diventate sempre più popolari negli ultimi anni grazie a vantaggi come la portabilità, la produttività e l'efficienza. La curva di apprendimento dei container può essere ripida e richiede di prestare attenzione agli aspetti di sicurezza per le immagini Docker e il loro monitoraggio. Amazon Elastic Container Service (Amazon ECS) e Amazon Elastic Kubernetes Service (Amazon EKS) eliminano la necessità di installare, gestire e dimensionare la propria infrastruttura di gestione dei cluster. Grazie alle chiamate API, è possibile avviare e interrompere applicazioni basate su Docker, eseguire query sullo stato di un cluster e accedere a molte funzionalità comuni come gruppi di sicurezza, sistemi di bilanciamento del carico, volumi di Amazon Elastic Block Store (Amazon EBS) e ruoli AWS Identity and Access Management (IAM).

AWS Fargate è un motore di calcolo serverless per container che funziona con Amazon ECS e Amazon EKS. Con Fargate, non devi più preoccuparti di eseguire il provisioning di risorse di calcolo sufficienti per le tue applicazioni di container. Fargate è in grado di lanciare decine di migliaia di container e scalare per eseguire le applicazioni più critiche nella massima semplicità.

Amazon ECS supporta strategie e restrizioni di collocazione dei container per personalizzare le modalità di posizionamento e di arresto delle attività da parte di Amazon ECS. Una restrizione al posizionamento di un'attività è una regola presa in esame durante tale processo. È possibile associare degli attributi alle istanze di container, che sono essenzialmente delle coppie chiave-valore, e quindi utilizzare una regola di restrizione per posizionare l'attività in base ad essi. Utilizzando questo metodo, è possibile posizionare determinati microservizi in base al tipo o alla capacità delle istanze, ad esempio solo su istanze basate su GPU.

Amazon EKS esegue versioni aggiornate del software open source Kubernetes: è possibile quindi utilizzare tutti i plug-in e gli strumenti messi a disposizione della community di Kubernetes. Le applicazioni in esecuzione su Amazon EKS sono completamente compatibili con quelle in esecuzione in qualsiasi ambiente Kubernetes standard, sia che si tratti di data center in locale o di cloud pubblici. Amazon EKS integra IAM con Kubernetes, il che ti consente di registrare entità IAM con il sistema di autenticazione nativo in Kubernetes. Non è necessario impostare manualmente le credenziali per l'autenticazione con il piano di controllo Kubernetes. L'integrazione IAM consente di utilizzare questo servizio per autenticarsi direttamente sul piano di controllo stesso e fornire un accesso granulare preciso all'endpoint pubblico del piano di controllo Kubernetes.

Le immagini Docker usate in Amazon ECS e in Amazon EKS possono essere memorizzate in Amazon Elastic Container Registry (Amazon ECR.) Con Amazon ECR viene meno la necessità di operare e ricalibrare le risorse dell'infrastruttura necessarie per eseguire il registro del container.

Le pipeline di integrazione e distribuzione continua (CI/CD) rappresentano una best practice e una parte vitale di un'iniziativa DevOps che consente rapidi cambiamenti del software mantenendo stabilità e sicurezza del sistema. Tuttavia, questo tema non rientra nell'ambito di questo whitepaper. Per ulteriori informazioni, consultare il whitepaper Integrazione e distribuzione continua in AWS.

AWS PrivateLink è una tecnologia altamente disponibile e scalabile che permette di connettere privatamente il Virtual Private Cloud (VPC) a servizi AWS supportati, ospitati da altri account AWS (servizi di endpoint VPC), e servizi supportati dai partner di AWS Marketplace. Per comunicare con il servizio, non sono necessari un gateway Internet, un dispositivo NAT, un indirizzo IP pubblico, una connessione AWS Direct Connect o una connessione VPN. Il traffico tra VPC e il servizio non esce dalla rete Amazon.

I collegamenti privati sono un ottimo modo per aumentare l'isolamento e la sicurezza dell'architettura di microservizi. Un microservizio, ad esempio, potrebbe essere implementato in un VPC completamente separato, gestito da un bilanciatore del carico ed esposto ad altri microservizi attraverso un endpoint AWS PrivateLink. Con questa configurazione, utilizzando AWS PrivateLink, il traffico di rete da e verso il microservizio non attraversa mai la rete Internet pubblica. Un caso d'uso per tale isolamento include la conformità alle normative per i servizi che gestiscono dati sensibili come PCI, HIPPA e EU/US Privacy Shield. Inoltre, AWS PrivateLink consente di collegare microservizi tra diversi account e Amazon VPC, senza la necessità di regole firewall, definizioni di percorsi o tabelle di routing, semplificando così la gestione della rete. Utilizzando PrivateLink, i fornitori di software come servizio (SaaS) e gli ISV possono offrire le loro soluzioni basate su microservizi con isolamento operativo completo e accesso sicuro.