Domande generali
D: Cos’è AWS App Mesh?
R: AWS App Mesh consente di monitorare, controllare ed effettuare il debug delle comunicazioni tra servizi più facilmente. App Mesh utilizza Envoy, un proxy-mesh di servizi open source distribuito insieme a tutti i container di microservizi. App Mesh si integra con i servizi AWS per il monitoraggio e il tracing, ed è compatibile con molti tra i più comuni strumenti prodotti da terze parti. App Mesh può essere utilizzato con container di microservizi gestiti da Amazon ECS, Amazon EKS, AWS Fargate, Kubernetes eseguiti su AWS e servizi in esecuzione su Amazon EC2.
D: Qual è il vantaggio di utilizzare App Mesh?
R: App Mesh rende più semplice visualizzare, proteggere e controllare le comunicazioni tra i servizi senza dover ricorrere alla scrittura di un nuovo codice o all’esecuzione di un’ulteriore infrastruttura AWS. Tramite App Mesh puoi standardizzare le modalità di comunicazione dei servizi, implementare regole di comunicazione tra i servizi e acquisire parametri, log e tabelle di traccia direttamente nei servizi AWS e negli strumenti di terze parti che preferisci.
D: Come funziona App Mesh?
R: App Mesh configura e gestisce un mesh di servizi per i tuoi servizi. A tal fine è necessario eseguire il proxy Envoy open source insieme a ogni altro servizio, consentendo ad App Mesh di configurare il proxy per gestire tutte le comunicazioni in ingresso e in uscita da ciascun container. App Mesh raccoglie parametri, tra cui tassi di errore e connessioni al secondo, che possono essere esportati su Amazon CloudWatch tramite uno statsd collector. Tramite le API di App Mesh puoi instradare il traffico sulla base del percorso o delle dimensioni a specifiche versioni dei servizi.
D: Cos’è un mesh di servizi?
R: Un mesh di servizi è un nuovo livello di software che gestisce tutte le comunicazioni tra i servizi. Aggiunge nuove funzionalità di collegamento e gestione delle connessioni tra servizi ed è indipendente dai singoli codici, caratteristica che gli consente di operare attraverso i confini di rete e con diversi sistemi di gestione dei servizi.
Integrazioni
D: Come funziona App Mesh in rapporto ad Amazon Elastic Container Services (ECS) e AWS Fargate?
R: App Mesh fornisce nuove capacità di comunicazione, osservazione e gestione alle applicazioni gestite da Amazon ECS e AWS Fargate. È sufficiente aggiungere l'immagine del proxy Envoy alla definizione delle attività. App Mesh gestisce la configurazione di Envoy per fornire capacità di mesh di servizi. App Mesh esporta parametri, log e tabelle di traccia agli endpoint specificati nella configurazione di bootstrap del proxy Envoy prevista. App Mesh fornisce un’API per configurare percorsi di traffico e altri controlli tra i microservizi abilitati al mesh.
D: Come funziona App Mesh in rapporto ad Amazon Elastic Container Service for Kubernetes (EKS)?
R: Utilizza il controller open source di AWS App Mesh e un controller di ammissione webhook. Tali controller connettono i servizi Kubernetes ad App Mesh e assicurano che il proxy Envoy venga irradiato nei pod. App Mesh esporta parametri, log e tabelle di traccia agli endpoint specificati nella configurazione di bootstrap del proxy Envoy prevista. App Mesh fornisce un’API per configurare percorsi di traffico e altri controlli tra i microservizi abilitati al mesh.
D: Come funziona App Mesh in rapporto ai servizi in esecuzione su Amazon EC2?
R: Esegue il proxy Envoy come un container o procede all’elaborazione dell'istanza EC2. Utilizza il container init del proxy fornito da AWS o esegue il tuo script per reindirizzare il traffico di rete sull’istanza attraverso il proxy. App Mesh gestisce la configurazione di Envoy per fornire capacità di mesh di servizi. App Mesh esporta parametri, log e tabelle di traccia agli endpoint specificati nella configurazione di bootstrap del proxy Envoy prevista. App Mesh fornisce un’API per configurare percorsi di traffico e altri controlli tra i microservizi abilitati al mesh.
D: Perché dovrei scegliere App Mesh rispetto agli Elastic Load Balancer di AWS?
R: Consigliamo di utilizzare AWS Elastic Load Balancing per gestire interamente il traffico internet e il traffico dei clienti non ancora fidelizzati. Per i servizi interni collegati ad altri servizi all’interno di una regione AWS, App Mesh garantisce una migliore flessibilità, coerenza e un grado più elevato di controllo e monitoraggio delle comunicazioni tra i servizi.
Monitoraggio, registrazione di log e tracing
D: Che tipo di capacità di monitoraggio posso sfruttare grazie ad App Mesh?
R: Grazie ad App Mesh puoi ottenere parametri e log coerenti per ogni salto tra i servizi. Tali log e parametri includono metadati come nomi di servizi e identificatori di richieste. Con questi puoi aggregare, filtrare e visualizzare dashboard grafiche di comunicazioni inter-servizi utilizzando strumenti come Amazon CloudWatch. Le dashboard comuni potrebbero includere tassi di errore e codici di errore tra un servizio e i servizi dipendenti. App Mesh raccoglie automaticamente tabelle di traccia da ciascun servizio e semplifica la visualizzazione di una mappa dei servizi con tutti i dettagli relativi a tutte le chiamate API dei servizi. Tali capacità rendono più semplice effettuare il debug e identificare la causa principale dei problemi di comunicazione tra i microservizi.
D: Posso utilizzare strumenti non AWS per eseguire il monitoraggio, la registrazione o il tracing con App Mesh? Sì.
R: Sì. App Mesh supporta tutti gli strumenti prodotti da terze parti compatibili con Envoy. Sono compresi Splunk, Prometheus, Jaeger, Flagger e Grafana, nonché soluzioni di open-tracing come Zipkin e LightStep.
Controllo del traffico
D: In che modo App Mesh consente di controllare il traffico?
D: App Mesh offre una sere di controlli dal lato-client per il routing del traffico. App Mesh fornisce API per reindirizzare il traffico tra le applicazioni sulla base dei nomi e delle versioni dei servizi. Tali capacità semplificano la distribuzione di nuove versioni dei microservizi.
Autenticazione da servizio a servizio
D: In che modo App Mesh supporta l'identità delle applicazioni?
Mutual TLS (mTLS) fornisce un modo per applicare l'identità delle applicazioni a livello di trasporto e consentire o rifiutare le connessioni client in base al certificato che presentano. AWS App Mesh supporta l'applicazione dell'identità delle applicazioni client con certificati X.509, denominati mutual transport layer security o mTLS. Per configurare mTLS, devi impostare il client in modo che fornisca un certificato al servizio server durante l'inizializzazione della richiesta, come parte della negoziazione della sessione TLS. Questo certificato viene utilizzato dal server per identificare e autenticare il client, verificando che il certificato sia valido e sia stato emesso da un'autorità di certificazione (CA) attendibile e identificando il client tramite il nome alternativo del soggetto (SAN) sul certificato.
D: Perché devo utilizzare mTLS con AWS App Mesh?
I microservizi hanno anche esigenze di sicurezza particolari, tra cui la crittografia del traffico end-to-end e il controllo dell'accesso ai servizi flessibile, che possono essere soddisfatte con un mesh dei servizi. L'implementazione di mTLS con AWS App Mesh consente alle applicazioni client di verificare i server e fornisce la crittografia del traffico, inoltre mutual TLS offre l'autenticazione peer che viene utilizzata per l'autenticazione da servizio a servizio. Aggiunge un livello di sicurezza su TLS in modo da consentire ai servizi di verificare il client che effettua la connessione. La suddivisione di un'applicazione monolitica in microservizi e la loro esecuzione in un mesh di servizi comporta vari vantaggi, tra cui una visibilità migliore e un instradamento del traffico intelligente.