En el siguiente artículo te cuento que es AWS Copilot, como se utiliza este proyecto y la facilidad de implementarlo.
En el presente articulo te explico el uso del servicio AWS Copilot, pero para poder realizarlo es necesario que comencemos analizando que es y como funciona el servicio de ECS (AWS Elastic Container Service) y sus formas de implementación. Esto es necesario debido a que AWS copilot realiza la implementación y despliegue de una aplicación utilizando ECS.
Elastic Container Service (ECS) es una plataforma de orquestación de contenedores escalable propietaria de AWS y la misma fue diseñada para ejecutar, detener y administrar contenedores en un clúster.
Por lo cual podemos definir que ECS es el servicio de contenedores de AWS Docker que maneja la orquestación y el aprovisionamiento de contenedores de Docker.
Este servicio contiene los siguientes conceptos:
En este modelo, los contenedores se implementan en instancias EC2 (VM) creadas para el clúster. ECS los administra junto con las tareas que forman parte de la definición de la tarea.
✅ Ventajas | ❌ Desventajas |
---|---|
|
|
|
|
En esta variante ya no se utilizan instancias o servidores EC2. Simplemente es necesario seleccionar la combinación de CPU y memoria que necesita.
✅ Ventajas | ❌ Desventajas |
---|---|
|
|
|
|
|
AWS Copilot es una herramienta que se utiliza por la línea de comando de AWS y permite la simplificación de la creación, despliegue, control y operación de contenedores en ECS utilizando un entorno de desarrollo local.
Esta herramienta administra los componentes que son necesarios para el despliegue y el funcionamiento de una aplicación tales como VPC, balanceadores de carga, flujos de implementación y almacenamiento. Por lo cual solo es necesario proporcionar un contenedor de la aplicación y mínimas configuraciones necesarias, dando como resultado una implementación más rápida y haciendo foco en el desarrollo de aplicación.
Ver como los servicios se van a comunicar entre sí, por lo cual hay que tener en cuenta los siguientes escenarios:
Actividades | SIN AWS-copilot | CON AWS-copilot |
---|---|---|
Desarrollo de la aplicación | Equipo de desarrollo | Equipo de desarrollo |
Generación del contenedor | Equipo de desarrollo | Equipo de desarrollo |
Subredes de Virtual Private Cloud (VPC) | Equipo de desarrollo | AWS-Copilot |
Balanceadores de carga | Equipo de desarrollo | AWS-Copilot |
Flujos de implementación (ci/cd) | Equipo de desarrollo | AWS-Copilot |
Almacenamiento persistente de su aplicación. | Equipo de desarrollo | AWS-Copilot |
Sincronizar el despliegue en ambientes | Equipo de desarrollo | AWS-Copilot |
La siguiente tabla contiene los componentes que se configuran al utilizar el servicio de aws copilot.
Componente | Descripción |
---|---|
Aplicación | | Una aplicación es un mecanismo de agrupación de las piezas de su sistema. |
Ambiente | Un ambiente es una etapa del despliegue de una aplicación. |
Servicio | Un servicio es un proceso único de código de larga ejecución dentro de un contenedor. |
En solo 5 pasos podemos implementar una aplicación utilizando aws-copilot, como lo muestra la imagen siguiente. Esto permite que el equipo de desarrollo solo haga foco en el desarrollo y no tanto en el despliegue de la infraestructura.
La primera aplicación que se implemente en copilot realizará una configuración predeterminada y la misma será con un contenedor serverless en fargate.
Como se observa en la siguiente imagen con solo 5 pasos ya podemos hacer un despliegue de una aplicación.
Los pasos como se ven en el flujo son los siguientes:
copilot init
para inicializar.nombre de la aplicación
, tipo de servicio
, nombre del servicio
y la ubicación del dockerfile
Para obtener los logs de los contenedores desplegados, es necesario ejecutar el siguiente comando:
$ copilot svc logs- follow |
---|
Para hacer el despliegue en producción es necesario poder generar diferentes ambientes, por lo cual para generarlos es necesario ejecutar el siguiente comando.
$ copilot env init |
---|
Posteriormente es importante poder modificar el archivo de manifiesto que contiene todas las configuraciones de la aplicación y el mismo se encuentra en nombredeaplicacion/manifest.yml
Una vez finalizada la configuración del ambiente es necesario hacer el despliegue en producción (u otro ambiente, pero el siguiente ejemplo es en producción).
$ copilot svc deploy —env production |
---|
Para poder hacer pruebas de la aplicación desplegada, se puede utilizar apachebench el cual permite generar tráfico a la aplicación web.
Para esto es necesario poder ejecutar el siguiente comando en el cual se desea generar un número de 5000 transacciones a mi servicio con una concurrencia de 25 solicitudes a la vez.
ab -n 5000 -c 25<http://app12345.us-east-1.elb.amazonaws.com> |
---|
En el caso de no tener la respuesta esperada puedo modificar mi archivo de manifiesto y escalar horizontalmente la aplicación en base a los diferentes ambientes.
Esta es una herramienta distribuida por Amazon bajo una licencia apache 2.0, por lo cual esto significa que es una aplicación open source.
Al ser una aplicación open source no tiene costos adicionales, el precio está dado por el uso de los servicios configurados.
Realizando un breve resumen de AWS copilot podemos destacar las siguientes características:
AWS Copilot es una herramienta open source de AWS que permite implementar un contenedor listo para producción en solo 5 pasos
, permitiendo que el foco esté en el desarrollo de la aplicación y no tanto en la infraestructura.
Es simple de configurar
, ya que solo es necesario la ejecución de algunos comandos y modificar el archivo de manifiesto en base a los recursos que nuestra aplicación necesita .
En el caso que se requiera un crecimiento horizontal
solo se debe modificar el archivo de manifiesto y posteriormente se debe realizar el despliegue de la aplicación.
AWS copilot permite configurar un pipeline de CI/CD
para poder hacer despliegues entre ambientes de forma automática.
La generación de KPI
, alarmas
y métricas
de la aplicación se pueden obtener con pocos comandos utilizando el servicio de AWS-Copilot.
📚Título: Presentamos AWS Copilot, Sitio: Blog de Amazon Web Services (AWS), Autor: Nathan Peck,Gabriel Gasca Torres y José Lorenzo Cuéncar, url: https://aws.amazon.com/es/blogs/aws-spanish/presentamos-aws-copilot/, Fecha de consulta:2022-09-17
📚Titulo: Introducción a Amazon ECS mediante AWS Copilot, Sitio: Documentación oficical de AWS, Autor: AWS, url: https://docs.aws.amazon.com/es_es/AmazonECS/latest/userguide/getting-started-aws-copilot-cli.html, Fecha de consulta: 2022-09-17
📚Titulo: AWS Copilot, Sitio: AWS, Autor: AWS, url: https://aws.amazon.com/es/containers/copilot/, Fecha de consulta: 2022-09-17
📚Titulo: Gentle Introduction to How AWS ECS Works with Example Tutorial, Sitio: Medium, Autor: Tung Nguyen , Url: https://medium.com/boltops/gentle-introduction-to-how-aws-ecs-works-with-example-tutorial-cea3d27ce63d, Fecha de consulta: 2022-09-17
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Mendez (2022, Oct. 6). Romina Mendez: AWS Copilot. Retrieved from https://r0mymendez.github.io/posts/2022-10-06-aws-copilot/
BibTeX citation
@misc{mendez2022aws, author = {Mendez, Romina}, title = {Romina Mendez: AWS Copilot}, url = {https://r0mymendez.github.io/posts/2022-10-06-aws-copilot/}, year = {2022} }