{"id":6911,"date":"2024-04-12T11:46:35","date_gmt":"2024-04-12T09:46:35","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=6911"},"modified":"2024-04-12T11:51:40","modified_gmt":"2024-04-12T09:51:40","slug":"vpc-lattice-lennesima-service-mesh-o-un-game-changer","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/vpc-lattice-lennesima-service-mesh-o-un-game-changer\/","title":{"rendered":"VPC Lattice: l\u2019ennesima service mesh o un game changer?"},"content":{"rendered":"\n
\n\u201cVivi come se dovessi morire domani. Impara come se dovessi vivere per sempre.\u201d<\/em><\/p>\n \u2013 Mahatma Gandhi<\/em><\/cite><\/blockquote>\n\n\n\n
Mi piace imparare cose nuove e sono fortunato perch\u00e9 una parte significativa del mio lavoro comporta la valutazione di nuove tecnologie e l’approfondimento di come utilizzarle per risolvere problemi sia nuovi, che esistenti.<\/p>\n\n\n\n
Negli ultimi anni, abbiamo visto molte opzioni per collegare i nostri workload su AWS (Transit Gateway<\/a>, Load balancing, Shared VPCs<\/a>, PrivateLink<\/a>, Endpoint Services, VPC peering\u2026)\u00a0<\/p>\n\n\n\n
L\u2019anno scorso, poi, VPC Lattice \u00e8 stato rilasciato in General Availability, offrendoci una nuova strada da esplorare.\u00a0Vi starete chiedendo perch\u00e9 dovremmo imparare come utilizzare l’ennesimo servizio quando abbiamo gi\u00e0 cos\u00ec tante opzioni tra cui scegliere… beh, scopriamolo!\u00a0<\/p>\n\n\n\n
In questo articolo, capiremo perch\u00e9 avevamo davvero bisogno di aggiungere un\u2019altra freccia al nostro arco. Vedremo cosa offre questo servizio e come si differenzia dalle altre opzioni di connettivit\u00e0 che gi\u00e0 conosciamo, concludendo con uno use case di esempio.<\/p>\n\n\n\n
Senza ulteriori indugi, cominciamo!<\/p>\n\n\n\n
Dove si colloca VPC Lattice <\/h2>\n\n\n\n
Come abbiamo visto negli articoli precedenti, quello a microservizi \u00e8 un approccio architetturale che permette agli sviluppatori di costruire e distribuire software pi\u00f9 velocemente.\u00a0<\/p>\n\n\n\n
Tuttavia, questo approccio introduce delle sfide: le singole applicazioni sono suddivise in numerosi componenti singoli che possono utilizzare tecnologie differenti (come Lambda, EKS, ECS ed EC2) e che devono comunicare tra loro, anche se distribuiti in diversi account AWS.\u00a0<\/p>\n\n\n\n
Dobbiamo affrontare tematiche gi\u00e0 note, come il service discovery, il routing del traffico, l\u2019autorizzazione, la sicurezza, e l’osservabilit\u00e0. <\/p>\n\n\n\n
Ci sono scenari in cui una strategia per far comunicare microservizi in modo sicuro non \u00e8 facilmente realizzabile con approcci di rete \u201cclassici\u201d. <\/p>\n\n\n\n
Pensate ad esempio a come realizzare un meccanismo di autenticazione per permettere la comunicazione tra due microservizi in diversi account AWS, bloccando allo stesso tempo il traffico estraneo all’applicazione. <\/p>\n\n\n\n
VPC Lattice entra in gioco per permetterci di vincere questo tipo di sfide. <\/p>\n\n\n\n
Il suo scopo \u00e8 aiutare le organizzazioni a superare le sfide legate alla gestione sicura dei microservizi, consentendo ai team di sviluppo la definizione dei microservizi e garantendo al contempo agli amministratori la gestione dell\u2019infrastruttura, delle politiche di comunicazione e della governance.<\/p>\n\n\n\n
Componenti di VPC Lattice<\/h2>\n\n\n\n
Vediamo le componenti-chiave di questo servizio:<\/p>\n\n\n\n
\n
- Service<\/strong>: rappresenta un\u2019applicazione e le sue risorse di calcolo (come ad esempio, Lambda, pod EKS, istanze EC2), listener (porte e protocollo) e regole di routing per indirizzare il traffico (routing pesato, path based, ecc.). Il team pu\u00f2 gestire questi aspetti e definirli autonomamente. Un servizio pu\u00f2 essere condiviso con altri account AWS utilizzando AWS Resource Access Manager, anche al di fuori dell\u2019organizzazione.<\/li>\n\n\n\n
- Service Network<\/strong>, un nuovo concetto:\u00a0 si tratta di un raggruppamento logico di servizi, connessi fra loro. Anche la service network pu\u00f2 essere condivisa usando AWS Resource Access Manager, viene definita dagli amministratori di sistema.<\/li>\n\n\n\n
- Service Directory<\/strong>: si tratta dell’elenco delle reti di servizi che possono essere utilizzati e condivisi tramite AWS RAM.<\/li>\n\n\n\n
- Auth Policies<\/strong>: sono documenti IAM che definiscono l\u2019accesso alle risorse. Differiscono dalle policy IAM perch\u00e9 non sono associate a utenti, gruppi o ruoli, ma vengono utilizzate con servizi e reti di servizi. Possono consentire l\u2019accesso ad una risorsa non solo ad un utente\/ruolo IAM, ma anche ad altri servizi VPC Lattice. Per questo sono definite nuove condizioni specifiche, come ad esempio <\/li>\n<\/ul>\n\n\n\n
vpc-lattice-svcs:RequestMethod<\/pre>\n\n\n\nLa lista completa \u00e8 disponibile qui<\/a>.<\/p>\n\n\n\n
Configurazione di VPC Lattice<\/h2>\n\n\n\n
Vediamo ora quali passaggi sono necessari e i ruoli coinvolti nella configurazione di VPC Lattice:<\/p>\n\n\n\n
\n
- L\u2019amministratore definisce una Service Network<\/strong>.<\/li>\n\n\n\n
- L\u2019amministratore condivide la Service Network<\/strong> utilizzando AWS RAM<\/strong>.<\/li>\n\n\n\n
- Il proprietario del servizio definisce un VPC Lattice Service<\/strong> e le relative policy di autorizzazione.<\/li>\n\n\n\n
- Il proprietario del servizio associa il servizio alla Service Network<\/strong>.<\/li>\n\n\n\n
- L\u2019amministratore dell\u2019infrastruttura associa la Service Network<\/strong> alle VPC.<\/li>\n<\/ol>\n\n\n\n
Usando questo tipo di approccio le dipendenze fra il team di sviluppo ed il team di operations si riducono.<\/p>\n\n\n\n
Esempio Pratico di Utilizzo di VPC Lattice<\/h2>\n\n\n\n
Nel nostro esempio, faremo deploy dell\u2019infrastruttura e delle applicazioni di esempio disponibili su GitHub<\/a> per analizzare i componenti chiave implementati sulla Console AWS.<\/p>\n\n\n\n
Per effettuare il deploy della soluzione basta seguire le istruzioni contenute nel file ReadMe<\/em>. Per semplicit\u00e0 \u00e8 possibile usare un singolo account AWS con VPC multiple (come fatto da noi in questo articolo).<\/p>\n\n\n\n
L’infrastruttura risultante sar\u00e0 questa:<\/p>\n\n\n\n
<\/p>\n\n\n
\n