Diseño de la arquitectura de su aplicación para Amazon ECS
La arquitectura de la aplicación se hace mediante la creación de una definición de tareas para la aplicación. La definición de tareas contiene los parámetros que definen la información acerca de la aplicación, entre los que se incluyen los siguientes:
-
Tipo de lanzamiento que se debe utilizar que determina la infraestructura en la que se alojan las tareas.
Cuando se utiliza el tipo de lanzamiento de EC2, también se elige el tipo de instancia. Para algunos tipos de instancias, como la GPU, debe configurar otros parámetros. Para obtener más información, consulte Casos de uso de definiciones de tareas de Amazon ECS.
-
Imagen del contenedor que contiene el código de la aplicación y todas las dependencias que el código de la aplicación requiere para ejecutarse.
-
El modo de red que se debe utilizar para los contenedores en la tarea.
El modo de red determina cómo se comunica la tarea a través de la red.
En el caso de las tareas que se ejecutan en instancias de EC2, hay varias opciones, pero recomendamos utilizar el modo de red de
awsvpc
. El modo de red deawsvpc
simplifica las redes de contenedores, ya que proporciona mayor control sobre la comunicación de las aplicaciones entre sí y con los demás servicios de las VPC.En el caso de las tareas que se ejecutan en Fargate, debe utilizar el modo de red de
awsvpc
. -
Configuración de registros que se va a utilizar para las tareas.
-
Volúmenes de datos que se utilizan con los contenedores en la tarea.
Para obtener una lista completa de parámetros de definición de tareas, consulte Parámetros en la definición de tareas de Amazon ECS para el tipo de lanzamiento de Fargate.
Utilice las siguientes pautas al crear las definiciones de tareas:
-
Utilice cada familia de definiciones de tareas para un solo propósito empresarial.
Si agrupa varios tipos de contenedores de aplicaciones en la misma definición de tarea, no puede escalar esos contenedores de manera independiente. Por ejemplo, en el caso de un sitio web y una API suelen ser necesarios patrones de escalado distintos. A medida que aumente el tráfico, es posible que sea necesario un número distinto de contenedores web que de contenedores de API. Si estos dos contenedores se implementan en la misma definición de tarea, cada tarea ejecuta la misma cantidad de contenedores web y contenedores de API.
-
Haga coincidir cada versión de la aplicación con una revisión de la definición de tareas dentro de una familia de definiciones de tareas.
En una familia de definiciones de tareas, cada revisión de la definición de tareas representa una instantánea a partir de un momento específico de la configuración de una imagen de contenedor concreta. Es similar a cómo el contenedor es una instantánea de todos los componentes necesarios para ejecutar una versión concreta del código de la aplicación.
Cree una asignación con correspondencia entre una versión del código de la aplicación, una etiqueta de imagen del contenedor y una revisión de la definición de la tarea. Un proceso de publicación típico implica una confirmación de git que se convierte en una imagen de contenedor etiquetada con el código SHA de la confirmación de git. Luego, esa etiqueta de imagen del contenedor recibe su propia revisión de la definición de tareas de Amazon ECS. Por último, se actualiza el servicio de Amazon ECS para implementar la nueva revisión de la definición de tareas.
-
Utilice diferentes roles de IAM para cada familia de definiciones de tareas.
Defina cada definición de tarea con su propio rol de IAM. Implemente esta práctica y proporcione a cada componente empresarial su propia familia de definiciones de tareas. Al implementar estas dos prácticas recomendadas, puede limitar el acceso de cada servicio a los recursos de la cuenta de AWS. Por ejemplo, puede dar acceso al servicio de autenticación para que se conecte a la base de datos de contraseñas. Al mismo tiempo, puede asegurarse de que solo el servicio de pedidos tenga acceso a la información de pago con tarjeta de crédito.