Pasar al contenido principal

Opciones de Contenedores en AWS

Imagen Blog Opciones de Contenedores en AWS

Continuamos con entradas en nuestro blog sobre Soluciones Cloud y los servicios que ofrecemos de la mano de nuestro partner Amazon, para explicar los beneficios del uso de servicios de administración y de registro de contenedores fáciles de usar y con un alto nivel de escalabilidad.

Existen diversas herramientas que son de gran ayuda para los desarrolladores y una de las más importantes en la actualidad son los contenedores, ya que a través de ellos se pueden implementar y empaquetar aplicaciones. Ya que son ligeros, proporcionan un consistente entorno de software y ejecutan de forma muy sencilla aplicaciones que se pueden escalar en cualquier ubicación.

Los contenedores se usan para crear e implementar micro servicios (vea más información sobre este tema en: “De sistemas monolíticos a microservicios”), ejecutar trabajos por lotes, aplicaciones de aprendizaje y traslados de Apps previamente existentes en la nube.

AWS ofrece diferentes tipos de contenedores que ayudan a implementar, administrar y escalar la producción.

Amazon Elastic Container Service (ECS)

Descripción del proceso

Se trata de un servicio de control de contenedores, el cual es totalmente administrado por el cliente. Una vez instalado Amazon ECS, no será necesario que instale ni que ejecute su propio software de control de contenedores, ni tampoco tendrá que administrar ni escalar clústeres o programar contenedores de máquinas virtuales.

Amazon ECS fue diseñado para ser integrado con toda la plataforma AWS, lo que quiere decir que podrá contar con todos sus servicios: ALB, IAM, ECR, Cloudwatch, etc. Amazon ECS es una solución altamente fiable que ofrece una experiencia de API AWS nativa para contenedores muy parecida a la que ofrece EC2 para máquinas virtuales.

¿Por qué usar Amazon ECS?

Existen varias ventajas por las cuales es una buena decisión usar Amazon ECS. Estas son algunas de las más relevantes:

  • Ejecutar contenedores sin servidores: A través de AWS Fargate, que es ofrecido por Amazon ECS, es posible implementar y administrar los contenedores sin que sea necesario aprovisionar o administrar servidores. Fargate le da la libertad para enfocarse en crear y ejecutar aplicaciones.

  • Incluir todo en contenedores:  Es posible crear fácilmente todo tipo de aplicaciones en contenedores y además también se pueden migrar Apps de Linux o Windows, provenientes de entornos on-premise, a la nube y ejecutarlas como aplicaciones en contenedores Amazon ECS.

  • Seguridad: Ofrece un alto nivel de aislamiento que permite crear aplicaciones seguras y confiables,  debido a que Amazon ECS tiene su propia Amazon VPC en la que lanza sus contenedores, permitiendo así usar grupos de seguridad de red VPC y ACL.

  • Desempeño a escala: Es basado en tecnología que ha sido desarrollada a partir de una sólida trayectoria en la ejecución de servicios.

  • Posibilidad de uso con otros servicios de AWS: Amazon ECS se integra con los diferentes servicios de AWS, como Amazon VPC, AWS IAM, Amazon ECR, AWS Batch, Amazon CloudFormation, entre otros.

¿Cuándo utilizar Amazon ECS?

Los servicios de Amazon ECS se pueden utilizar en diferentes situaciones, dependiendo de lo que se necesite: para crear Microservicios, procesamiento de lotes, migraciones a la nube y aprendizaje automático. Todos estos ayudaran y optimizaran el entorno.

Elastic Kubernetes Service - Kubernetes (Amazon EKS)

Descripción del proceso

Es un servicio que ayuda a facilitar la implementación y ejecución de Kubernetes en AWS sin necesidad de ser un experto. Amazon EKS administra la solución por completo al igual que la escalabilidad del plano de control de Kubernetes para cada clúster. Se encarga de realizar automáticamente cada operación de clúster, sus actualizaciones, la escala de los másteres, la capa de persistencia, etc. Adicionalmente, detecta y reemplaza los másteres problemáticos.

Amazon EKS también se integra con diferentes servicios de AWS para ofrecer seguridad y escalabilidad a sus aplicaciones, incluyendo Elastic Load Balancing que se encarga de la distribución de cargas, IAM para la autenticación, Amazon VPC para su aislamiento, AWS PrivateLink para el acceso privado a la red y AWS CloudTrail que es el encargado del registro. EKS siempre ejecuta la última versión de Kubernetes (software de código abierto) para así poder utilizar todos sus complementos. De esta forma es posible la migración de cualquier aplicación de Kubernetes estándar a Amazon EKS sin necesidad de hacer modificaciones de código.

Beneficios de Amazon EKS

  • Servicio completamente administrado de alta disponibilidad: Facilita la ejecución de los clústeres de Kubernetes de alta disponibilidad mediante la ejecución y administración automática de tres nodos maestros distribuidos en tres zonas para cada clúster.

  • Es seguro: Entre otras cosas, Amazon ECS Integra IAM con Kubernetes, lo que le permite registrar entidades IAM con el sistema de autenticación nativo. Además, también puede usar PrivateLink si desea tener acceso a los nodos maestros de Kubernetes desde su propia Amazon VPC.

  • Es compatible con las herramientas de la comunidad Kubernetes: Como Amazon  EKS ejecuta normalmente la última versión del software de kubernetes, se admiten todas las características, complementos y aplicaciones existentes en el mismo.

AWS Fargate

Descripción del proceso

Es una tecnología que implementa y administra los contenedores sin necesidad de gestionar la infraestructura subyacente. No se tienen que aprovisionar, escalar o configurar clústeres para máquinas virtuales para la ejecución de contenedores. AWS Fargate le da la oportunidad de enfocarse solo en diseñar y ejecutar la aplicación, sin preocuparse por su infraestructura.

AWS Fargate está disponible para Amazon ECS y Amazon EKS.

Amazon ECS y EKS disponen de dos modos: los tipos de lanzamientos Fargate y EC2. En el tipo de lanzamiento Fargate la única actividad que debe hacer es empaquetar las aplicaciones en contenedores, especificar los requisitos de CPU y de memoria, definir las políticas de acceso IAM y por último lanzar la aplicación. En el tipo de lanzamiento EC2  se puede disponer de un control más granular y a nivel de servidor sobre la infraestructura de aplicaciones, las cuales son agrupadas en dicho servidor. Además, con este tipo de lanzamiento (EC2), es posible usar ECS y EKS para administrar un clúster de servidores y también para programar la colocación de los contenedores.

Ambos (ECS y EKS) monitorizan el CPU, la memoria y  todos los demás recursos del clúster. Adicionalmente, encuentran el mejor servidor que esté disponible para la ejecución de un contenedor. ECS y EKS se encargan del aprovisionamiento, la escalabilidad y la revisión de los clústeres; son capaces de decidir qué tipo de servidor se va a usar, cuáles aplicaciones y qué cantidad de contenedores se deben ejecutar en un clúster para optimizar su uso; y además deciden en qué momento agregar o quitar servidores. El lanzamiento EC2 ofrece más control en cuanto a clústeres, así como también mayor rango de personalización, permitiendo que se cumplan requisitos en aplicaciones específicas o en conformidad con regulaciones gubernamentales.

Beneficios de AWS Fargate

  • No se necesita administrar clústeres: Puede enfocarse en los contenedores, es decir, en la creación y el funcionamiento de su aplicación.

  • Escalabilidad perfecta: La escalabilidad de sus aplicaciones será mucho más fácil, no deberá aprovisionar recursos para sus aplicaciones ya que AWS administra todo.

  • Integración con Amazon ECS y EKS: Es integrado a la perfección con Amazon ECS, y desde el 2018 también se integra con Amazon EKS.

Herramientas adicionales útiles para contenedores:

Amazon Elastic Container Registry (ECR)

Es un registro de contenedores Docker, el cual es totalmente administrado y facilita el almacenamiento, la administración y la implementación de imágenes en dichos contenedores. Amazon ECR se integra con ECS, lo que permite desarrollar los flujos de trabajo de manera más fácil. Al usar Amazon ECR automáticamente obtiene “hosting” para sus imágenes en una arquitectura escalable y de muy alta disponibilidad, lo que le ofrece la libertad de implementar contenedores confiables para sus aplicaciones. Además, también se integra con IAM y AWS identity, las cuales ofrecen controles de recursos para cada repositorio. Los costos de Amazon ECR son por cantidad de datos almacenados y por datos recibidos, no existen cuotas predefinidas.

Amazon CodePipeline

Es un servicio de integración y entrega continua para que sean ejecutadas las actualizaciones de aplicaciones y de infraestructura de manera rápida y confiable.

CodePipeline se encarga de compilar, probar e implementar el código cada vez que este tenga un cambio, siempre y cuando cumpla con los modelos de procesamiento previamente definidos en la publicación. Esto permite la entrega de características y actualizaciones de forma rápida y confiable.

Es posible crear una solución integral de manera fácil usando complementos de terceros como GitHub por ejemplo, o a través de la integración de complementos propios en cualquier fase de lanzamiento.  Con AWS CodePipeline solo debe pagar lo que utiliza, no pagará cuotas iniciales, ni debe asumir compromiso alguno.

AWS CloudWatch Logs

CloudWatch Logs es la funcionalidad de CloudWatch que permite consolidar y analizar logs de la ejecución de nuestros propios contenedores. Se convierte en una herramienta esencial para registrar datos de ejecución teniendo en cuenta que los contenedores son stateless y no van a almacenar la información de manera local. Esta práctica está en línea con el capítulo de Logs del 12 Factor App.

Si su organización tiene interés en implementar proyectos de desarrollo de aplicaciones de la mano de expertos, lo invitamos a contactarnos.