Demo Desplegando uma app nginx em EB

Clase 15 de 75Curso de AWS Certified Solutions Architect Associate

Resumen

La implementación de aplicaciones web en la nube se ha convertido en una necesidad para las empresas que buscan agilidad y escalabilidad. AWS Elastic Beanstalk ofrece una solución simplificada para desplegar aplicaciones sin preocuparse por la infraestructura subyacente. Este servicio es ideal para equipos de desarrollo que necesitan concentrarse en el código y no en la configuración de servidores, balanceadores de carga y otros componentes.

¿Qué es Elastic Beanstalk y cómo puede ayudarnos?

Elastic Beanstalk es un servicio de AWS que facilita el despliegue y la gestión de aplicaciones web. Funciona como una capa de abstracción que orquesta varios servicios de AWS para crear un entorno completo donde ejecutar nuestras aplicaciones. Su principal ventaja es que nos permite centrarnos en el desarrollo mientras AWS se encarga de la infraestructura.

Para entender mejor este servicio, vamos a explorar cómo podríamos implementar una aplicación sencilla para un caso hipotético como Nexia Bank, donde necesitamos desplegar rápidamente nuevos proyectos web.

Componentes principales de Elastic Beanstalk

Antes de comenzar con la implementación, es importante entender los dos componentes fundamentales:

  • Aplicación: Es una colección lógica que agrupa componentes como entornos, versiones y configuraciones relacionadas a un proyecto específico.
  • Entorno: Es el conjunto de recursos de AWS que se aprovisionan para ejecutar una versión específica de nuestra aplicación.

Estos componentes nos permiten organizar nuestros despliegues de manera estructurada y mantener diferentes versiones de nuestra aplicación.

¿Cómo crear y configurar una aplicación en Elastic Beanstalk?

El proceso de creación de una aplicación en Elastic Beanstalk es bastante intuitivo. Comenzamos accediendo a la consola de AWS y buscando el servicio Elastic Beanstalk en la categoría de cómputo.

Creación de la aplicación

  1. En la consola de AWS, seleccionamos la región donde queremos trabajar (en este caso, Ohio).
  2. Buscamos y seleccionamos Elastic Beanstalk.
  3. Hacemos clic en "Crear aplicación".
  4. Asignamos un nombre a nuestra aplicación (por ejemplo, "Nexia application").
  5. Opcionalmente, agregamos una descripción y etiquetas para facilitar la organización.

Una buena práctica es utilizar etiquetas (tags) para clasificar nuestros recursos, lo que facilitará la automatización de tareas y la gestión de costos en el futuro.

Configuración del entorno

Una vez creada la aplicación, necesitamos configurar el entorno donde se ejecutará:

  1. Seleccionamos el tipo de entorno:

    • Web server environment: Para aplicaciones web que manejan solicitudes HTTP.
    • Worker environment: Para procesos en segundo plano o tareas asíncronas (utiliza SQS).
  2. Configuramos la plataforma:

    • Seleccionamos una plataforma gestionada.
    • Elegimos el lenguaje de programación (Python, Node.js, Java, Go, Docker, etc.).
    • Seleccionamos la versión del lenguaje.
  3. Cargamos nuestro código:

    • Podemos subir un archivo desde nuestro equipo local.
    • Podemos seleccionar un archivo desde un bucket S3.
    • Podemos usar una aplicación de muestra para pruebas.
# Ejemplo de una aplicación Python básica para Elastic Beanstalk
from flask import Flask

application = Flask(__name__)

@application.route('/')
def hello_world():
    return 'Hello World from Elastic Beanstalk!'

if __name__ == '__main__':
    application.run(host='0.0.0.0', port=8000)

¿Qué opciones de configuración avanzada ofrece Elastic Beanstalk?

Elastic Beanstalk nos permite personalizar prácticamente todos los aspectos de nuestra infraestructura, lo que demuestra la flexibilidad del servicio.

Configuración de capacidad y red

Podemos elegir entre diferentes opciones de capacidad:

  • Instancia única: Ideal para entornos de desarrollo o aplicaciones con poco tráfico. Es elegible para la capa gratuita.
  • Instancias spot: Para reducir costos aprovechando la capacidad no utilizada de AWS.
  • Alta disponibilidad: Para aplicaciones de producción que requieren redundancia.

Para la configuración de red, podemos:

  • Seleccionar la VPC donde se desplegará nuestra aplicación.
  • Elegir las subredes específicas.
  • Configurar grupos de seguridad para controlar el tráfico.

Integración con bases de datos y almacenamiento

Elastic Beanstalk permite integrar fácilmente:

  • Bases de datos RDS: Podemos configurar una instancia de base de datos directamente desde el asistente de creación.
  • Almacenamiento: Podemos configurar el tipo y tamaño del volumen raíz (EBS) para nuestras instancias.

Monitoreo y actualizaciones

Para mantener nuestra aplicación funcionando correctamente:

  • CloudWatch: Podemos configurar el intervalo de monitoreo (por ejemplo, cada 5 minutos).
  • Actualizaciones automáticas: Podemos habilitar actualizaciones automáticas de la plataforma.
  • Notificaciones: Podemos configurar alertas por correo electrónico para eventos importantes.

Opciones de despliegue

Elastic Beanstalk ofrece diferentes estrategias de despliegue:

  • All at once: Actualiza todas las instancias simultáneamente.
  • Rolling: Actualiza las instancias por lotes.
  • Immutable: Crea un nuevo conjunto de instancias y luego cambia el tráfico.

La elección de la estrategia de despliegue dependerá de los requisitos de disponibilidad de nuestra aplicación.

¿Cómo gestionar y monitorear nuestra aplicación desplegada?

Una vez desplegada nuestra aplicación, Elastic Beanstalk nos proporciona varias herramientas para su gestión y monitoreo.

Panel de control y eventos

El panel de control nos muestra:

  • Eventos: Registro de todas las acciones realizadas en nuestro entorno.
  • Salud: Estado actual de nuestra aplicación (OK, Warning, Degraded, Severe).
  • Monitoreo: Métricas como utilización de CPU, tráfico de red y tiempos de respuesta.

Acciones de gestión

Podemos realizar varias acciones sobre nuestro entorno:

  • Reiniciar: Reinicia las instancias sin cambiar la configuración.
  • Reconstruir: Crea nuevas instancias con la misma configuración.
  • Terminar: Elimina todos los recursos asociados al entorno.

Acceso a la aplicación

Elastic Beanstalk asigna automáticamente un dominio a nuestra aplicación (por ejemplo, http://nexiaapplication-env.eba-xxxx.us-east-2.elasticbeanstalk.com), que podemos utilizar para acceder a ella inmediatamente después del despliegue.

Es importante recordar que si no vamos a utilizar el entorno, debemos terminarlo para evitar cargos innecesarios, ya que estamos consumiendo recursos como instancias EC2, IPs elásticas y otros servicios.

La implementación de aplicaciones web con Elastic Beanstalk simplifica enormemente el proceso de despliegue, permitiéndonos concentrarnos en el desarrollo mientras AWS gestiona la infraestructura. Este servicio es especialmente útil para equipos que buscan agilidad y quieren evitar la complejidad de configurar manualmente todos los componentes necesarios para ejecutar una aplicación en la nube. ¿Has utilizado Elastic Beanstalk en algún proyecto? Comparte tu experiencia en los comentarios.