Mi experiencia en el hackathon de Cloud NUWE

Recientemente participé en un hackathon online organizado por NUWE con el objetivo de resolver un desafío de Cloud. Este evento ofreció a los participantes la oportunidad de demostrar sus habilidades en el ámbito de la nube y la automatización, mientras competían por premios y reconocimiento. En este artículo, compartiré mi experiencia y detallaré el proceso de despliegue del código que desarrollé para el hackathon.

Introducción al Hackathon

El hackathon, titulado “NUWE Hack – CLOUD – TERRAFORM”, se centró en resolver un desafío de Cloud utilizando Terraform para gestionar la infraestructura como código (IaC). El objetivo era crear un sistema de almacenamiento de tareas y una tarea programada, todo gestionado a través de una API llamada TaskAPI. El desafío presentaba diferentes objetivos, desde crear endpoints en la API hasta ejecutar funciones Lambda y eventos programados en AWS. Para saber más sobre los requerimientos del hackathon pincha aquí.

Requisitos previos

Antes de desplegar el código, era importante asegurarse de tener configurado un entorno de desarrollo local compatible con las especificaciones del hackathon, para lo que necesitaremos tener instaladas las siguientes tecnologías.

Breve explicación del código

El código desarrollado consta de varias partes, incluyendo funciones Lambda en Python (Lambda de AWS) y archivos de configuración de Terraform. Cada función Lambda cumple una tarea específica, desde la creación de tareas hasta la ejecución de tareas programadas en un intervalo regular. Todo el código presentado lo podéis encontrar en el siguiente enlace a mi GitHub. Para entender mejor la arquitectura he creado el siguiente diagrama con todos los elementos del código.

Despliegue del código

Lo primero que se debe hacer es clonar el código usando git a nuestro entorno local.

Accedemos a la carpeta donde tenemos el archivo de terraform e iniciamos el entorno de localstack para poder desplegar nuestro entorno.

Cuando nos aparezca Ready ya podremos desplegar nuestro entorno con los comandos de terraform.

Ejecutamos ‘yes‘ y se nos despliega todo el entorno antes descrito.

Si todo ha ido bien veremos algo como lo siguiente.

Copiar la variable que se logea al final llamada ‘rest_api_id‘.

Para comprobar que todo ha ido correctamente crearemos una tarea y la listaremos, esto servirá para testear que la primera parte del problema (creación de api con lambdas y base de datos) funciona correctamente.
Para testear que la segunda parte funciona bien deberemos fijarnos en los logs.

Los logs cuando creamos la task ejecutando ‘curl POST‘ y las listamos ejecutando ‘curl GET‘ son los siguientes.

El log que se repite cada minuto y nos indica que el despliegue de eventbridge, con repeticiones periódicas guardando la información en un bucket de S3, es el siguiente.

Conclusiones finales

Mi participación en este proyecto ha sido una experiencia gratificante. Aunque ya contaba con cierto conocimiento en el uso de IaC (Infraestructura como Código), este desafío me brindó la oportunidad de profundizar en áreas que antes sólo había explorado superficialmente. Además, obtener un buen resultado y ubicarme entre los primeros puestos me llena de orgullo por el trabajo realizado.

Para aquellos que estén considerando adentrarse en el mundo de la programación, independientemente de su nivel de experiencia, les recomendaría participar en este tipo de eventos. Constituyen una forma invaluable de aprender mediante desafíos concretos y evaluación posterior, lo cual refleja la dinámica de trabajo en muchas empresas. Aunque es común trabajar de manera autónoma con acceso a recursos en línea, algunos participantes junior pueden beneficiarse de la orientación de profesionales más experimentados, aunque no siempre esté disponible en todos los entornos laborales. En resumen, participar en proyectos como este no solo implica un aprendizaje, sino también una visión práctica del entorno laboral de la programación.

Author: caco

Leave a Reply

Your email address will not be published. Required fields are marked *