{"id":1549,"date":"2020-07-23T16:07:19","date_gmt":"2020-07-23T14:07:19","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=1549"},"modified":"2021-03-29T16:17:14","modified_gmt":"2021-03-29T14:17:14","slug":"convertiamo-unapplicazione-docker-compose-in-aws-fargate-sfruttando-la-cli-ecs","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/convertiamo-unapplicazione-docker-compose-in-aws-fargate-sfruttando-la-cli-ecs\/","title":{"rendered":"Convertiamo un’applicazione docker-compose in AWS Fargate sfruttando la CLI ECS"},"content":{"rendered":"
Al giorno d’oggi, molto spesso capita di affidarsi a <\/span>Docker<\/b> per generare e gestire le infrastrutture delle applicazioni al fine di eseguire test in un ambiente locale. Molte volte, infatti, gli sviluppatori ricorrono a docker-compose per creare l’infrastruttura contenente la loro applicazione, il loro web server e i loro database in diversi container Docker.<\/span><\/p>\n
In questo articolo, vedremo insieme come rilasciare un’intera applicazione pensata su <\/span>docker-compose<\/b> all’interno dell’ambiente AWS utilizzando il servizio <\/span>AWS ECS Fargate<\/b>. Prima di iniziare a mettere le mani in pasta, capiamo insieme cos’\u00e8 AWS ECS Fargate.<\/span><\/p>\n
Definizioni: Amazon ECS e AWS Fargate in pillole<\/span><\/h2>\n
Amazon ECS \u00e8 il servizio che permette di eseguire e gestire <\/span>cluster di container Docker<\/b>. \u00c8 totalmente gestito da Amazon Web Services e facilmente scalabile in base al traffico.<\/span><\/p>\n
Le configurazioni con cui \u00e8 possibile utilizzare Amazon ECS sono due:<\/span><\/p>\n
\n
Istanze EC2 che contengono i container: con questa configurazione, le EC2 e la loro alta affidabilit\u00e0, sono totalmente in capo all\u2019utilizzatore del servizio.<\/span><\/li>\n
Modalit\u00e0 Fargate<\/strong>: in maniera totalmente automatica, gestisce i container fornendo le giuste risorse computazionali.<\/span><\/li>\n<\/ul>\n
Conosciamo ora i tre attori principali:<\/span><\/p>\n\n
Cluster<\/b>: il raggruppamento logico delle risorse ECS.<\/span><\/li>\n
Servizio<\/b>: la risorsa che permette di eseguire e mantenere uno specifico numero di istanze, attive, delle Task Definition.<\/span><\/li>\n
Task-Definition<\/b>: un file di testo, in formato JSON, che contiene tutte le configurazioni dei container.<\/span><\/li>\n<\/ol>\n
Ora che abbiamo capito cos’\u00e8 e come funziona AWS ECS Fargate<\/strong>, entriamo nel vivo della soluzione.<\/span><\/p>\n
Setup: Convertire i container Docker in Fargate Task Definition<\/span><\/h2>\n
Prima di iniziare a creare risorse all’interno dell’account AWS, dobbiamo dividere tutti i docker definiti all’interno del file docker-compose. Per farlo, \u00e8 necessario tenere a mente alcune considerazioni:<\/span><\/p>\n
Database definiti all’interno del docker-compose<\/span><\/h3>\n
Nel caso in cui siano presenti database all’interno del docker-compose, \u00e8 altamente consigliato convertirli in risorse AWS a s\u00e9 stanti mediante l’utilizzo dei giusti servizi che Amazon stessa mette a disposizione.\u00a0<\/span><\/p>\n
Per i database di tipo relazionale, ad esempio, ci si potr\u00e0 servire di AWS RDS, un servizio totalmente gestito che supporta le maggiori tipologie di database relazionali quali PostgreSQL, MySQL e Oracle.\u00a0<\/span><\/p>\n
Per i database non relazionali o dedicati al cache delle applicazioni, invece, si potr\u00e0 considerare l\u2019utilizzo di AWS DynamoDB o AWS ElastiCache.<\/span><\/p>\n
Prediligi un approccio Stateless invece di Stateful<\/span><\/h3>\n
Per permettere alle applicazioni di scalare in maniera automatica \u00e8 necessario un approccio <\/span>stateless<\/b>. Questo significa che due richieste provenienti dalla stessa sessione utente, potranno essere eseguite indistintamente su differenti istanze dell’applicazione.<\/span><\/p>\n
Ora che abbiamo chiarito tutti gli aspetti fondamentali, possiamo iniziare a creare le risorse AWS necessarie all’interno del nostro account. Di come deployare un\u2019applicazione utilizzando AWS Fargate abbiamo parlato in questo articolo.<\/a><\/span><\/p>\n