Arquitectura de aplicaciones - Amazon Elastic Container Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Arquitectura de aplicaciones

El modo en que diseña su aplicación en Amazon ECS depende de varios factores, siendo el tipo de lanzamiento que usa un factor diferenciador decisivo. Proporcionamos las siguientes directrices, desglosadas por tipo de lanzamiento, que deben ayudar en el proceso.

Uso del tipo de lanzamientoFargate

A la hora de diseñar la aplicación para que se ejecute en Amazon ECS mediante AWS Fargate, la principal cuestión es cuándo debe poner varios contenedores en la misma definición de tarea frente a la implementación de contenedores por separado en varias definiciones de tarea.

Cuando se requieran las siguientes condiciones, le recomendamos que implemente los contenedores en una única definición de tarea:

  • Los contenedores comparten un ciclo de vida común (es decir, se lanzan y se terminan juntos).

  • Los contenedores deben ejecutarse en el mismo host subyacente (es decir, un contenedor hace referencia al otro en un puerto localhost).

  • Requiere que los contenedores compartan recursos.

  • Sus contenedores comparten volúmenes de datos.

De lo contrario, debe definir sus contenedores en definiciones de tareas independientes de modo que pueda escalarlos, aprovisionarlos y desaprovisionarlos por separado.

Uso del tipo de lanzamientoEC2

A la hora de plantear cómo modelar las definiciones de tareas y servicios mediante el tipo de lanzamiento EC2, resulta útil pensar en qué procesos se tienen que ejecutar conjuntamente y cómo se escala cada componente.

Por ejemplo, imagine una aplicación que conste de los siguientes componentes:

  • Un servicio front-end que muestre información en una página web

  • Un servicio backend que proporciona las API para el servicio front-end

  • Un almacén de datos

En su entorno de desarrollo, probablemente ejecutará estos tres contenedores conjuntamente en su host de Docker. Es posible que se vea tentado a utilizar el mismo enfoque para su entorno de producción, pero este enfoque presenta varios inconvenientes:

  • Los cambios en un componente pueden afectar a los tres componentes, lo que podría suponer para el cambio un ámbito mayor de lo previsto.

  • Cada componente es más difícil de escalar porque tiene que escalar cada contenedor proporcionalmente.

  • Las definiciones de tareas solo pueden tener 10 definiciones de contenedor, pero la pila de aplicaciones podría requerir más definiciones, ya sea ahora o en el futuro.

  • Cada contenedor de una definición de tarea debe acabar en la misma instancia de contenedor, lo que puede limitar las opciones de instancia a los tamaños mayores.

Dados estos inconvenientes, debe crear definiciones de tareas que agrupen los contenedores que se utilizan para un fin común y separar los distintos componentes en varias definiciones de tareas independientes. En este ejemplo anterior, tres definiciones de tareas especifican cada una un contenedor. El siguiente clúster de ejemplo (que se ilustra en la figura siguiente) tiene tres instancias de contenedor registradas en tres contenedores de servicio front-end, dos contenedores de servicio backend y un contenedor de servicio de almacén de datos.


					Ejemplo de arquitectura de aplicaciones

Puede agrupar contenedores relacionados en una definición de tarea, por ejemplo contenedores vinculados que se deben ejecutar conjuntamente. Por ejemplo, podría añadir un contenedor de streaming de registros al servicio front-end e incluirlo en la misma definición de tarea.

Después de tener sus definiciones de tareas, puede crear servicios para mantener la disponibilidad de sus tareas deseadas. Para obtener más información, consulte Crear un servicio. En sus servicios, puede asociar contenedores a los balanceadores de carga de Elastic Load Balancing Para obtener más información, consulte Balanceo de carga de servicios. Cuando cambian los requisitos de la aplicación, puede actualizar los servicios para aumentar o reducir el número de tareas deseadas o para implementar versiones más nuevas de los contenedores en las tareas. Para obtener más información, consulte Actualización de un servicio.