AWS utilise l'apprentissage automatique pour alerter en cas d'anomalies de  dépenses dans le cloud -

serverless

¿Te gustaría aprender AWS Arquitecto de Soluciones Certificado SAA-C02
Tenemos los cursos que necesitas. ¡Haz clic aquí!

En la lista de los potenciales casos de uso, anteriormente hemos visto que podemos utilizar los contendores para una gran variedad de aplicaciones y arquitecturas. Aquí vamos a utilizar como ejemplo una aplicación web, que vamos a empaquetar en un contenedor para desplegarla en AWS serverless.

En el siguiente diagrama se muestra la arquitectura simplificada.

Load balanced web service infrastructure (simplified)

A medida que vayamos avanzando en nuestra implementación citaremos los elementos presentes en este diagrama, así como el racional detrás de este diseño, pero por ahora, ¡vamos con el despliegue!

Antes de nada, necesitaremos crear una cuenta en AWS. Una vez tengamos nuestra cuenta creada utilizaremos el servicio AWS Cloud9 para desarrollar nuestro prototipo. Cloud9 es un entorno de desarrollo integrado (IDE) basado en la nube que le permite escribir, ejecutar y depurar código solo con un navegador. Incluye un editor de integrado, así como un depurador y terminal. Lógicamente, puedes utilizar las herramientas con que trabajes habitualmente en tu equipo, como tu editor de texto preferido y tu configuración de terminal, pero en este post nos hemos centrado en la simplicidad y productividad trabajando con entornos de desarrollo pre-configurados en la nube.

Mediante el siguiente enlace, después de haber iniciado sesión en la consola de AWS y seleccionado la región donde quieres crear tu entorno, accederás directamente a AWS Cloud9.

Selección de la región

Ahora necesitamos crear nuestro entorno de desarrollo:

Crear ambiente en Cloud9

Hacemos clic en “Create environment”, tendremos que realizar tres sencillos pasos y ya estará todo listo para empezar a trabajar con nuestra nueva instancia de Cloud9.

Paso 1: Asignaremos un nombre a nuestro entorno, como por ejemplo “Primer contenedor en AWS” y clic en “Next step”.

Paso 2: Dejaremos todos los valores por defecto y de nuevo haremos clic en “Next step”.

Paso 3: Finalmente crearemos el entorno después de haber revisado nuestra configuración pulsando de nuevo en “Create environment”.

AWS creará tu entorno Cloud9 y una vez desplegado abrirá el IDE directamente en tu navegador.

Otro beneficio de usar Cloud9 es que el entorno tiene preinstaladas las herramientas que vamos a necesitar para nuestra práctica, como AWS CLI (interfaz de línea de comandos) y Docker.

Podemos comprobar que Docker se encuentra instalado correctamente escribiendo “docker –version” en la ventana de terminal de Cloud9.

Versión de Docker

Ahora debemos dotar a Cloud9 de los permisos necesarios para desplegar infraestructura en AWS. Para ello vamos a instalar la utilidad jq necesaria para los siguientes pasos.

sudo yum install -y jq

Una vez la hayamos instalado, debemos seguir este tutorial para asignar los permisos necesarios al entorno de Cloud9 que le permitan desplegar la infraestructura. Al final de este post incluiremos enlaces para que puedas aprender más sobre seguridad en entornos de AWS.

La única herramienta que vamos a instalar en este tutorial es AWS Copilot. Para instalarla, sencillamente pega el siguiente comando en la terminal.

sudo curl -Lo /usr/local/bin/copilot https://github.com/aws/copilot-cli/releases/latest/download/copilot-linux \
&& sudo chmod +x /usr/local/bin/copilot \
&& copilot --help

aws serveless

Ahora ya estamos preparados para innovar desplegando contenedores en AWS serverless.

Crearemos un directorio para nuestro proyecto, y un fichero HTML (index.html) que mostrará un título con el mensaje “My first serverless container app on AWS”. Copia y pega el comando siguiente:

mkdir myApp && cd myApp && echo "<html><body><h1>My first serverless Container app on AWS</h1><body></html>" > index.html

Mediante este sencillo ejemplo alcanzaremos nuestro objetivo, pero dependiendo de tu idea puedes sustituir el código fuente con el de tu propia aplicación utilizando este mismo enfoque.

Para desplegar con contenedores necesitamos un fichero de texto Dockerfile. En este fichero especificaremos la configuración para la creación de nuestro contenedor y los pasos necesarios para desplegar nuestra aplicación.

printf "FROM public.ecr.aws/nginx/nginx:1.19-alpine\nCOPY index.html /usr/share/nginx/html" > Dockerfile

Echemos un vistazo rápido a este fichero de configuración.

1: FROM public.ecr.aws/nginx/nginx:1.19-alpine
2: COPY index.html /usr/share/nginx/html

En la primera línea se hace referencia a la imagen que vamos a utilizar para la ejecución de nuestra aplicación, concretamente usaremos el servidor web Nginx, que se encuentra disponible en Amazon Elastic Container Registry (Amazon ECR). A continuación de los dos puntos se indica la versión de la imagen que debe utilizarse. Si quieres llevar tu idea a producción debes especificar una versión y no usar la última (:latest) versión publicada de la imagen. La segunda línea indica a Docker que copie el archivo “index.html” en una carpeta específica de la imagen durante el proceso de construcción de la misma. Esta carpeta es recogida por Nginx para ser servida automáticamente cuando se despliega.

Con todo esto preparado, ya podemos desplegar nuestro primer contenedor mediante la ejecución de un único comando:

copilot init --app myapp \
--name myapp-service \
--type 'Load Balanced Web Service' \
--dockerfile './Dockerfile' \
--port 80 \
--deploy

¡Enhorabuena! En unos pocos minutos verás una pantalla muy parecida a la siguiente captura. Usa la URL que hemos obtenido como resultado para acceder a tu primera aplicación serverless en AWS.

Desplegar contenedor a través de AWS Copilot

Verás el mensaje de tu aplicación ejecutándose en el servicio AWS Fargate.

Resultado de nuestro primer contenedor

En la consola de AWS serverless podemos ver que es lo que hemos desplegado con el servicio de CloudFormation. Copilot divide automáticamente el despliegue de nuestra aplicación en diferentes stacks, de ese modo las futuras actualizaciones se ejecutarán más ágilmente.

Stacks de CloudFormation

Podemos inspeccionar cualquiera de las plantillas de CloudFormation, veremos en ellas todos sus detalles, así como un resumen de los recursos aprovisionados en el proceso de despliegue.

Plantilla de CloudFormation

Puedes consultar y profundizar en las configuraciones implementadas por CloudFormation y ver el tiempo que has ahorrado utilizando AWS Copilot. Mediante la ejecución de un único comando hemos desplegado una plataforma completamente escalable en contenedores serverless.

Ahora vamos a ver como podemos beneficiarnos de algunas de las características de la nube de AWS, concretamente de la elasticidad realizando algunos ajustes sobre nuestro despliegue.

Asumiremos que has realizado algunos cambios en tu aplicación, y ahora quieres desplegarla en más de un contenedor utilizando un balanceador de carga para mejorar la disponibilidad de la solución.

Descarga la foto que añadimos a continuación y súbela a tu entorno de Cloud9.

Nubes

Puedes hacerlo sencillamente arrastrando el fichero local de la imagen a la carpeta de tu aplicación dentro de Cloud9.

Subir la imagen a Cloud9

Ahora abre el archivo “index.html” e incluyamos el script para mostrar la imagen que acabamos de subir.

<img src=”clouds.jpg”>

El fichero debería quedar tal y como se muestra en la siguiente captura de pantalla:

Contenido de index.html

El segundo paso es actualizar nuestro contenedor de forma que esta imagen sea incluida en el proceso de creación. Para ello vamos a añadir una línea a nuestro Dockerfile.

COPY clouds.jpg /usr/share/nginx/html

De este modo nuestro archivo de configuración contendrá ahora 3 líneas:

FROM public.ecr.aws/nginx/nginx:1.19-alpine
COPY index.html /usr/share/nginx/html
COPY clouds.jpg /usr/share/nginx/html

Por último, dado que hemos añadido más contenido en nuestra aplicación, queremos desplegarla en más de un contenedor para mejorar su disponibilidad y resiliencia. Para conseguir esto abriremos el fichero “manifest.yml” que se encuentra dentro de la carpeta “copilot”. Este fichero es el encargado de gestionar la configuración que utiliza Copilot para la creación de la infraestructura.

Localizaremos el parámetro de configuración “count” y cambiaremos el valor actual de “1” a “2”.

Cambiando parámetros para definir el número de tasks

En este momento ya tenemos todo listo para actualizar nuestro despliegue con la nueva imagen y generar el nuevo contenedor para nuestra aplicación. Ejecutaremos el siguiente comando:

copilot deploy

En unos pocos minutos el proceso de despliegue habrá finalizado, y podrás visualizar los cambios refrescando la página en tu navegador.

Nuestra nueva app

Accediendo al servicio de Amazon Elastic Container Service (ECS) podrás comprobar el número de contenedores desplegados:

Visualizando en la consola el número de contenedores

Adicionalmente puedes acceder a los logs de tu aplicación (almacenados en Amazon CloudWatch) directamente desde Copilot, sencillamente ejecuta este comando:

copilot svc logs

Finalmente, el aspecto de nuestra arquitectura, ahora que hemos desplegado dos contenedores, será la siguiente:

El nuevo diagrama de arquitectura

Debemos recordar desmantelar la infraestructura y eliminar los recursos que hemos desplegado, Copilot nos permite realizarlo mediante el siguiente comando:

copilot app delete

Una vez confirmado, se eliminará la aplicación y toda la infraestructura que hemos utilizado en este artículo serverless.

Limpiando el entorno

Finalmente, si no vamos a seguir utilizando nuestro entorno de Cloud9 para otros desarrollos, debemos acordarnos también de detenerlo y eliminarlo.

Conclusión

En este blog post has desplegado tu primer contenedor serverless en Amazon Web Services. Pero no solo has hecho eso, ahora ya conoces AWS Copilot, una herramienta de línea de comandos que te permite centrarte en tu idea en lugar del trabajo que ocasiona la administración manual de la infraestructura a bajo nivel. Del mismo modo, has aprendido conceptos básicos sobre contenedores y ahora entiendes la terminología común que los rodea. Hay mucho más que explorar y espero que hayas experimentado la “builder experience”, ahora dispon de más opciones para darle rienda suelta a tus ideas en la nube de AWS y contarnos cómo las has llevado a cabo en nuestra plataforma.

Te invitamos a ver todos los artículos que tenemos para ti, coméntanos que tal te pareció este articulo y compártelo con más personas.

¿Te gustaría aprender AWS Arquitecto de Soluciones Certificado SAA-C02
Tenemos los cursos que necesitas. ¡Haz clic aquí!

About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax
()
x