Suddividere un'applicazione monolitica in microservizi con AWS Copilot, Amazon ECS, Docker e AWS Fargate
TUTORIAL
Introduzione
Panoramica
In questo tutorial, distribuirai un'applicazione Node.js monolitica su un container Docker, quindi disaccoppierai l'applicazione in microservizi senza tempi di inattività. L'applicazione Node.js ospita una semplice scheda messaggi che contiene i thread e i messaggi scambiati tra gli utenti.
Perché è importante
Le architetture monolitiche tradizionali sono difficili da dimensionare. Quando il codice di base di un'applicazione cresce, diventa complesso aggiornarlo e mantenerlo. L'introduzione di nuove caratteristiche, lingue, framework e tecnologie diventa molto difficile, limitando così l'innovazione e le nuove idee.
All'interno di un'architettura di microservizi, ogni componente dell'applicazione viene eseguito come un servizio e comunica con altri servizi mediante un'API ben definita. I microservizi sono realizzati sulla base delle funzioni aziendali e ogni servizio esegue una sola funzione. I microservizi possono essere scritti usando framework e linguaggi di programmazione diversi. Inoltre, possono essere distribuiti in modo indipendente come un singolo servizio o un gruppo di servizi.
Obiettivi
Durante questo tutorial, ti mostreremo come eseguire una semplice applicazione monolitica in un container Docker, distribuire la stessa applicazione come microservizi e trasferire il traffico sui microservizi senza tempi di inattività. Al termine, potrai usare questo tutorial e il codice contenuto in esso come modello per creare e distribuire i tuoi microservizi containerizzati su AWS.
Architettura monolitica
L'intera applicazione Node.js è eseguita in un container come un singolo servizio e ogni container ha le stesse caratteristiche di tutti gli altri container. Se una caratteristica dell'applicazione sperimenta un picco nella richiesta, è necessario dimensionare l'intera architettura.
Architettura di microservizi
Ogni caratteristica dell'applicazione Node.js è eseguita come un servizio separato all'interno del suo container. I servizi possono essere dimensionati e aggiornati indipendentemente dagli altri.
Prerequisiti
- Un account AWS: se non ne sei ancora in possesso, segui il tutorial Configurazione dell'ambiente AWS per una panoramica rapida.
- Installare e configurare AWS CLI
- Installare e configurare AWS Copilot
- Installare e configurare Docker
- Un editor di testo. Per questa esercitazione utilizzeremo VS Code, ma è possibile utilizzare l'IDE preferito.
Esperienza AWS
Intermedio
Tempo minimo richiesto per il completamento
110 minuti
Costo richiesto per il completamento
Idoneo per il Piano gratuito
Richiede
- Un account AWS: se non ne sei ancora in possesso, segui il tutorial Configurazione dell'ambiente AWS per una panoramica rapida.
- Installare e configurare AWS CLI
- Installare e configurare AWS Copilot
- Installare e configurare Docker.
- Un editor di testo. Per questa esercitazione utilizzeremo VS Code, ma è possibile utilizzare l'IDE preferito.
Servizi utilizzati
Codice
Ultimo aggiornamento
Moduli
Questo tutorial è suddiviso nei seguenti moduli. Per passare al successivo, è necessario avere completato ciascun modulo.
- Configurazione (20 minuti): in questo modulo installerai e configurerai AWS CLI, installerai AWS Copilot e installerai Docker.
- Containerizzare e distribuire il monolite (30 minuti): in questo modulo si containerizzerai l'applicazione, utilizzerai AWS Copilot per istanziare un cluster gestito di istanze di calcolo EC2 e distribuirai la tua immagine come container in esecuzione sul cluster.
- Suddivisione del monolite (20 minuti): In questo modulo, suddividerai l’applicazione Node.js in numerosi servizi interconnessi e invierai l’immagine di ciascun servizio in un repository Amazon Elastic Container Registry (Amazon ECR).
- Distribuzione di microserivizi (30 minuti): In questo modulo, distribuirai l'applicazione node.js come un set di servizi interconnessi dietro a un Application Load Balancer (ALB). Poi utilizzerai ALB per spostare in modo ottimale il traffico dal monolite ai microservizi.
- Eliminazione (10 minuti): In questo modulo, terminerai le risorse che hai creato durante questo tutorial. Arresterai i servizi funzionanti su Amazon ECS, eliminerai l'ALB e lo stack AWS CloudFormation per terminare il cluster di Amanzon ECS, comprese tutte le istanze EC2 sottostanti.