Implementar microservicios de Java en Amazon ECS con AWS Fargate - Recomendaciones de AWS

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.

Implementar microservicios de Java en Amazon ECS con AWS Fargate

Creado por Vijay Thompson (AWS) y Sandeep Bondugula (AWS)

Entorno: PoC o piloto

Origen: Contenedores

Destino: Amazon ECS

Tipo R: N/D

Tecnologías: contenedores y microservicios; aplicaciones web y móviles

Servicios de AWS: Amazon ECS

Resumen

Este patrón proporciona orientación para implementar microservicios de Java en contenedores en Amazon Elastic Container Service (Amazon ECS) mediante AWS Fargate. El patrón no utiliza Amazon Elastic Container Registry (Amazon ECR) para la administración de contenedores; en su lugar, las imágenes de Docker se extraen de un hub de Docker.

Requisitos previos y limitaciones

Requisitos previos 

  • Una aplicación de microservicios de Java existente en un hub de Docker

  • Un repositorio público de Docker

  • Una cuenta de AWS activa

  • Conocimientos de los servicios de AWS, incluyendo Amazon ECS y Fargate

  • Marco Docker, Java y Spring Boot

  • Amazon Relational Database Service (Amazon RDS) en funcionamiento (opcional)

  • Una nube privada virtual (VPC) si la aplicación requiere Amazon RDS (opcional)

Arquitectura

Pila de tecnología de origen

  • Microservicios de Java (por ejemplo, implementados en Spring Boot) e implementados en Docker

Arquitectura de origen

Arquitectura de origen para los microservicios de Java implementados en Docker

Pila de tecnología de destino

  • Un clúster de Amazon ECS que aloja cada microservicio mediante Fargate

  • Una red de VPC para alojar el clúster de Amazon ECS y los grupos de seguridad asociados 

  • Una definición de clúster/tarea para cada microservicio que pone en marcha los contenedores mediante Fargate

Arquitectura de destino

Arquitectura de destino en microservicios de Java en Amazon ECS

Herramientas

Herramientas

  • Amazon ECS elimina la necesidad de instalar y operar su propio software de orquestación de contenedores, administrar y escalar un clúster de máquinas virtuales o programar contenedores en esas máquinas virtuales. 

  • AWS Fargate le permite ejecutar contenedores sin necesidad de administrar servidores o instancias de Amazon Elastic Compute Cloud (Amazon EC2). Se utiliza en conjunto con Amazon Elastic Container Service (Amazon ECS).

  • Docker es una plataforma de software que le permite compilar, probar e implementar aplicaciones de forma rápida. Docker agrupa el software en unidades estandarizadas denominadas contenedores que contienen todo lo que el software necesita para ejecutarse, incluyendo las bibliotecas, las herramientas del sistema, el código y el tiempo de ejecución. 

Código de Docker

El siguiente Dockerfile especifica la versión del kit de desarrollo de Java (JDK) que se utiliza, dónde se encuentra el archivo de almacenamiento Java (JAR), el número de puerto que está expuesto y el punto de entrada a la aplicación.

FROM openjdk:11 ADD target/Spring-docker.jar Spring-docker.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","Spring-docker.jar"]

Epics

TareaDescripciónHabilidades requeridas

Cree una definición de tarea.

Para ejecutar contenedores de Docker en Amazon ECS, se requiere una definición de tareas. Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/, seleccione Definiciones de tareas y, a continuación, cree una nueva definición de tarea. Para obtener más información, consulte la documentación de Amazon ECS.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione el tipo de lanzamiento.

Seleccione Fargate como tipo de lanzamiento.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Configure la tarea.

Defina un nombre de tarea y configure la aplicación con la cantidad adecuada de memoria de tareas y CPU.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Defina el contenedor.

Especifique el nombre del contenedor. Para la imagen, introduzca el nombre del sitio de Docker, el nombre del repositorio y el nombre de la etiqueta de la imagen de Docker (docker.io/sample-repo/sample-application:sample-tag-name). Establezca los límites de memoria para la aplicación y establezca las asignaciones de puertos (8080, 80) para los puertos permitidos.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Cree la tarea.

Cuando las configuraciones de la tarea y el contenedor se hayan establecido, cree la tarea. Para obtener instrucciones detalladas, consulte los enlaces de la sección Recursos relacionados.

Administrador de sistemas de AWS, desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Crear y configurar un clúster.

Seleccione Solo redes como tipo de clúster, configure el nombre y, a continuación, cree el clúster o utilice un clúster existente si está disponible. Para obtener más información, consulte la documentación de Amazon ECS.

Administrador de sistemas de AWS, desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Cree una tarea.

Dentro del clúster, seleccione Ejecutar nueva tarea.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione el tipo de lanzamiento.

Seleccione Fargate como tipo de lanzamiento.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione la definición de la tarea, la revisión y la versión de la plataforma.

Seleccione la tarea que desee ejecutar, la revisión de la definición de la tarea y la versión de la plataforma.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Seleccione el clúster.

Seleccione el clúster desde el que desea ejecutar la tarea.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Especifique el número de tareas.

Configure el número de tareas que deben ejecutarse. Si lo inicia con dos o más tareas, necesitará un equilibrador de carga para distribuir el tráfico entre las tareas.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Especifique el grupo de tareas.

(Opcional) Especifique un nombre de grupo de tareas para identificar un conjunto de tareas relacionadas como grupo de tareas.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Configure la VPC del clúster, las subredes y los grupos de seguridad.

Configure la VPC del clúster y las subredes en las que desea implementar la aplicación. Cree o actualice grupos de seguridad (HTTP, HTTPS y puerto 8080) para proporcionar acceso a las conexiones entrantes y salientes.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Configure los ajustes de la IP pública.

Active o desactive la IP pública, en función de si desea utilizar una dirección IP pública para las tareas de Fargate. La opción predeterminada recomendada es Habilitada.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Revisar la configuración y crear la tarea

Revise la configuración y, a continuación seleccione Ejecutar tarea.

Administrador de sistemas de AWS, desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Copie la URL de la aplicación.

Cuando el estado de la tarea se haya actualizado a En ejecución, seleccione la tarea. En la sección Redes, copie la IP pública.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Pruebe su aplicación.

En su navegador, introduzca la IP pública para probar la aplicación.

Administrador de sistemas de AWS, desarrollador de aplicaciones

Recursos relacionados