Escalado de aplicaciones en contenedores en AWS con Amazon EKS

Cliente

CustomAmaz

Ubicación

EE. UU.

Industria

SaaS

Servicios y tecnología

Amazon EKS, CodeCommit, CodeBuild

Resumen del proyecto

A medida que Serviceo continúa creciendo, la empresa necesita poder implementar, probar, validar y promover componentes rápidamente en su arquitectura de microservicios y basada en componentes. El equipo de desarrollo de software estaba experimentando dificultades significativas para trabajar como un equipo unificado. El código se estaba confirmando e implementando con dependencias de biblioteca rotas, lo que resultaba en correcciones manuales en cada lanzamiento para garantizar que el código se ejecutara correctamente. Las aplicaciones estaban inconexas e inconsistentes, con conjuntos de software, servicios y scripts muy poco acoplados. No había una implementación robusta de las aplicaciones y, una vez implementadas, a menudo era necesario intervenir manualmente. El equipo quería tener una estrategia de implementación sin tiempo de inactividad (ZDD) para implementar una nueva versión de los servicios sin interrumpir el funcionamiento del servicio.

Acerca del cliente

Serviceo ofrece una innovadora plataforma de software que aprovecha más de una década de experiencia en la industria con modelos de negocio flexibles que permiten a las organizaciones optimizar la entrega global de servicios de campo de TI. Su plataforma proporciona servicios de campo bajo demanda en todo el mundo, cumpliendo con los SLA empresariales utilizando 600 ubicaciones de almacenamiento avanzado en todo el mundo y una red de miles de técnicos locales examinados y altamente cualificados.

Arquitectura

A continuación, se muestra el diagrama de arquitectura de la solución diseñada por los arquitectos de soluciones en la nube de Avahi.

Se utilizaron los siguientes componentes para construir esta solución.

  • Clúster de Amazon EKS en la región us-east-2. El plano de control de Amazon EKS está totalmente gestionado y se implementa en su propia VPC.
  • Una VPC con una subred pública y dos subredes privadas en cada zona de disponibilidad (AZ) para los nodos.
  • Instancias bajo demanda en grupos de escalado automático de Amazon EC2 (implementadas en varias AZ) que se utilizan como infraestructura informática subyacente para el clúster de Amazon EKS. EKS ofrece la posibilidad de emplear varios ASG con diferentes tipos de instancias, donde cada ASG tiene etiquetas específicas que se pueden utilizar para programar pods a través de selectores de etiquetas. Para nuestro diseño, elegimos instancias C5.9xlarge que proporcionan suficiente potencia de cálculo para nuestras aplicaciones hambrientas de CPU, al tiempo que optimizamos los costes.
  • Amazon Elastic Container Registry (Amazon ECR) almacena las imágenes de Docker para los microservicios de la aplicación y los complementos de Helm para las implementaciones de la aplicación.
  • Una zona del sistema de nombres de dominio (DNS) de Amazon Route 53 para el descubrimiento de servicios y un equilibrador de carga de red configurado para el tráfico cifrado HTTPS.
  • Un controlador de entrada del equilibrador de carga de aplicaciones para equilibrar la carga del tráfico de la aplicación.
  • Servidor de métricas de Kubernetes para recopilar métricas de los pods en ejecución, como la utilización de la CPU y la memoria.
  • Escalador automático de clústeres de Kubernetes para escalar los nodos hacia dentro y hacia fuera.
  • Base de datos Amazon ElastiCache Redis que almacena las sesiones de usuario y el estado.
  • Servicio Amazon RDS para bases de datos SQL.
  • Amazon CloudWatch con Fluent Bit para registrar los registros de la aplicación y los registros del clúster.
  • Amazon OpenSearch Service (sucesor de Amazon Elasticsearch Service) y Amazon Simple Storage Service (Amazon S3) para el registro centralizado.

Hay varias opciones disponibles para seleccionar un controlador de entrada para EKS, y la mayoría de ellas son soluciones de código abierto. A continuación, se muestran los casos de uso que pueden influir en la decisión al seleccionar el controlador de entrada:

  • Requisitos de escalado, recursos disponibles y patrones de uso de recursos.
  • Tipos de tráfico servidos (HTTP, gRPC, WebSocket, etc.)
  • El número de solicitudes, las políticas de red, la supervisión y los requisitos de registro.

Decidimos utilizar AWS Elastic Load Balancing (ELB) para la entrada con un plan para migrar gradualmente a una solución más compleja en un futuro próximo. Si bien los ELB pueden tener un conjunto de características limitado, minimiza la complejidad operativa y proporciona estabilidad y fácil escalado.

Solución

Trabajando juntos, el equipo de desarrollo de Avahi y Serviceo decidió que el mejor enfoque es:

  • Contenerizar las aplicaciones.
  • Implementar la canalización de integración continua/entrega continua (CI/CD) más eficiente.
  • Reestructurar los repositorios de software Git en áreas específicas de interés (aplicaciones/servicios/dependencias).
  • Adoptar Amazon EKS para automatizar la implementación, el escalado y la gestión de aplicaciones en contenedores.

Los ingenieros de la nube de Avahi planearon construir un sistema más modular y extensible para admitir futuras mejoras de características y un ciclo de lanzamiento más frecuente. La solución basada en Kubernetes para el tiempo de ejecución puede hacer eso al tiempo que proporciona la escala para satisfacer las demandas presentes y futuras del sistema. La solución también tenía que ser lo suficientemente segura como para cumplir con los requisitos reglamentarios, como la Ley de Privacidad del Consumidor de California (CCPA) y el Reglamento General de Protección de Datos (GDPR). Avahi propuso utilizar Amazon EKS para Kubernetes en lugar de construir el clúster desde cero.

Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio de orquestación de contenedores gestionado que proporciona plantillas, ejemplos de código y prácticas recomendadas para ayudar a los desarrolladores a acelerar rápidamente. AWS gestiona la infraestructura para Kubernetes, lo que permite al equipo centrarse en agregar valor a su aplicación, no en las operaciones. Los beneficios de usar Amazon EKS para Serviceo incluyen:

Utilización eficiente de los recursos

El EKS totalmente gestionado ofrece una fácil implementación y gestión de aplicaciones en contenedores. Permite una utilización eficiente de los recursos que aprovisiona elásticamente recursos adicionales sin el dolor de cabeza de gestionar la infraestructura de Kubernetes.

Desarrollo de aplicaciones más rápido

Los desarrolladores pasaron la mayor parte del tiempo corrigiendo errores. EKS reduce el tiempo de depuración al tiempo que gestiona la aplicación de parches, las actualizaciones automáticas y la autorreparación y simplifica la orquestación de contenedores. Ahorra mucho tiempo y los desarrolladores se centrarán en desarrollar sus aplicaciones mientras siguen siendo más productivos.

Seguridad y cumplimiento

La ciberseguridad es uno de los aspectos más importantes de las aplicaciones y empresas modernas. EKS se integra con AWS IAM y ofrece a los usuarios acceso bajo demanda para reducir las amenazas y los riesgos. EKS también cumple totalmente con los estándares y los requisitos reglamentarios, como los controles de sistemas y organizaciones (SOC), HIPAA, ISO y PCI DSS.

Desarrollo e integración más rápidos

EKS admite actualizaciones automáticas, supervisión y escalado y ayuda a minimizar el mantenimiento de la infraestructura que conduce a un desarrollo e integración comparativamente más rápidos. También admite el aprovisionamiento de recursos informáticos adicionales en Serverless Kubernetes en cuestión de segundos sin preocuparse por la gestión de la infraestructura de Kubernetes.

Recomendamos encarecidamente a Avahi como un socio tecnológico fiable e innovador. Su experiencia en tecnologías de vanguardia fue fundamental para construir nuestra prueba de concepto (PoC) y desarrollar nuestro producto mínimo viable (MVP). Avahi siempre ofreció soluciones de alta calidad a tiempo, manteniendo un enfoque colaborativo y receptivo. Fueron más allá de las expectativas al identificar oportunidades de mejora, garantizando la escalabilidad y el cumplimiento de nuestros productos centrados en la aplicación de la ley. Avahi es la elección clara si necesita un socio tecnológico con conocimiento de la industria, profesionalidad y un compromiso con la innovación.

Brandon Puhlman

Fundador, bravo foxtrot

¿Listo para transformar su negocio con la IA?

Reserve su taller gratuito de IA de activación

Exploremos juntos sus oportunidades de IA de alto impacto en una sesión gratuita de medio día

Vea nuestros casos prácticos

Vea cómo hemos ofrecido resultados medibles para empresas como la suya