1. Introducción

En este artículo vamos a explicar en que consiste el proyecto y que queremos “solucionar” con él. También detallaremos que programas/software vamos a usar durante el proyecto y como realizar una configuración básica para que se pueda usar durante la PoC (Proof of Concept o prueba de concepto).

Antes de nada, tendremos que tener un par de conocimientos básicos:

¿Qué es Amazon RDS?

AWS RDS (Amazon Web Services Relational Database Service) es un servicio que facilita la configuración, operación y escalado de bases de datos relacionales en la nube. Proporciona una interfaz para administrar y escalar infraestructuras de bases de datos, y automatiza tareas administrativas como la instalación y actualización de software, la gestión del almacenamiento, la replicación para alta disponibilidad y rendimiento de lectura, y las copias de seguridad para la recuperación de desastres.

RDS para PostgreSQL es una de las opciones de base de datos que ofrece AWS RDS y la escogeremos como nuestro engine de base de datos dado que PostgreSQL es un sistema de gestión de bases de datos relacional de código abierto muy popular entre los desarrolladores empresariales y las startups.

¿Qué es el protocolo MQTT y para qué se usa?

MQTT (Message Queue Telemetry Transport) es un protocolo de mensajería basado en estándares que se utiliza para la comunicación de un equipo a otro.

Se utiliza principalmente en el Internet de las Cosas (IoT), donde los sensores inteligentes, los dispositivos portátiles y otros dispositivos IoT tienen que transmitir y recibir datos a través de una red con recursos restringidos y un ancho de banda limitado. Estos dispositivos utilizan MQTT para la transmisión de datos, ya que es fácil de implementar y puede comunicar datos IoT de manera eficiente.

El protocolo MQTT ofrece varios beneficios:

  • Ligero y eficiente: La implementación de MQTT en el dispositivo IoT requiere recursos mínimos, por lo que se puede usar incluso en pequeños microcontroladores.
  • Escalable: El protocolo tiene funciones integradas para admitir la comunicación con una gran cantidad de dispositivos IoT.
  • Fiable: MQTT tiene funciones integradas que reducen el tiempo que tarda el dispositivo IoT en volver a conectarse con la nube. A parte, ofrece funcionalidades para garantizar que los mensajes han llegado a destino con la funcionalidad QoS.
  • Seguro: Facilita a los desarrolladores el cifrado de mensajes y la autenticación de dispositivos y usuarios mediante protocolos de autenticación modernos.


Por lo tanto, MQTT se está convirtiendo rápidamente en uno de los principales protocolos para despliegues de IOT (Internet de las cosas). Es especialmente útil en el campo de la domótica, donde se pueden comunicar de forma rápida y sin gran consumo dispositivos de forma remota.

Más información en este artículo de AWS.

¿Qué es Docker?

Docker es una plataforma de software que permite crear, probar e implementar aplicaciones de manera rápida.

Es un software de código abierto utilizado para desplegar aplicaciones dentro de contenedores virtuales. La contenerización (es decir, ejecutar las aplicaciones en contenedores virtuales) permite que varias aplicaciones funcionen en diferentes entornos complejos, como por ejemplo nos permitiria desplegar este WordPress en sistemas Windows, Linux y macOS sin ningún problema y le seria indiferente a la aplicación.

La principal diferencia entre Docker y las máquinas virtuales es que los contenedores Docker comparten el sistema operativo del anfitrión, mientras que las máquinas virtuales también tienen un sistema operativo invitado que se ejecuta sobre el sistema anfitrión. Esta diferencia hace que los requerimientos de hardware cambien significativamente dependiendo de si se ejecuta una misma aplicación en una VM (máquina virtual) o un contenedor, dado que en una VM tenemos que ejecutar, a parte de la aplicación, el sistmea operativo.

Por lo tanto, un despliegue de una aplicación con Docker tiene muchas ventajas, como el menor consumo de recursos por el motivo mencionado anteriormente, o el que se trata de un modelo basado en imagenes, que permiten compartir la aplicación o el conjunto de servicios con todas las dependencias en varios entornos.

Aquí tienes un artículo de AWS explicando más en detalle que és docker.

2. Objetivo del proyecto

Tenemos unos usuarios, que tienen X dispositivos, estos dispositivos nos mandan ciertos datos (a través del protocolo MQTT) y nosotros tenemos que almacenar estos datos en RDS. Pero de vez en cuando, los usuarios querrán consultar los datos que han mandado sus dispositivos.

Por lo que el diagrama quedaría tal que así:

Cabe destacar, que esto no es un montaje apto para Producción, sino que es una simple prueba, donde podrás tocar un poco de todo.

3. Antes de empezar (muy importante)

Primero de todo, hay que disponer de una cuenta AWS con un método de pago habilitado. Es crucial que tengas un método de pago validado, y que tengas en cuenta que realizar esta demo va a gastar unos pocos dólares (en AWS todo funciona en dólares). Con tal de no elevar mucho la factura, mantente en los parámetros que te indicamos, y una vez hayas acabado la prueba, elimina todos los recursos usados.

En AWS se paga por uso, es decir, que cada hora que tengas el ejemplo montado y funcionando, incurrirá en coste.

Si hay alguna cosa durante el proyecto que no te queda clara o tienes dudas, por favor, escribe un comentario. Tu feedback es muy importante.

4. ¿Qué tecnologías usaremos?

Usaremos lo siguiente:

Si no conoces alguno o ninguno, no te preocupes, iremos explicando que es y para qué se usa cada cosa a medida que vayamos desarrollando el proyecto.

5. ¿Qué software vamos a necesitar?

Para poder desarrollar correctamente el proyecto, necesitaremos tener instalado los siguientes programas y CLI’s. A pesar de que nosotros lo hemos hecho en un equipo Windows, no deberías tener problemas en hacerlo en un Mac o distribución basada en linux.

5.1 Amazon CLI

Para instalar AWS CLI sigue los pasos siguientes:

5.2 Docker Desktop

Docker es una plataforma que nos permite ejecutar, crear y gestionar contenedores. Docker Desktop nos permite gestionar los contenedores de una forma más sencilla y visual.

Si te encuentras en Windows y nunca has ejecutado ningún contenedor o docker, tendrás que tener instalado WSL (Windows Subsystem for Linux) o, en caso de que tengas una licencia PRO de windows, tener Hyper-V habilitado. Aquí solo explicaremos a instalar WSL, ya que es el que más recomendamos.

Como instalar WSL
  • Para ello iremos al menú de Windows y buscaremos por la palabra características o “features”, y seleccionaremos “Activar/Desactivar características de Windows”.
  • Iremos a la parte inferior y activaremos “Windows Subsystem for Linux”.
  • Le daremos a OK, y en cuanto termine de instalar la característica te pedirá reiniciar el equipo.

Para instalar docker desktop, seguiremos los siguientes pasos:

5.3 Kubectl

Kubectl es el command line de kubernetes que nos permite gestionar el clúster. Con él podemos indicar que se actualizen los pods, así como un sinfín de acciones.

Para instalar KUBECTL:

Si te falla el comando, es que no se encuentra en las variables de tu sistema operativo.

Añadir kubectl a las variables del sistema operativo (Windows)
  • Ten a mano la ruta donde te has descargado el kubectl
  • Iremos al menú de Windows y buscaremos “Editar variables del sistema operativo”
  • Le daremos doble click o editar a la variable “Path”
  • Le damos a “new” y añadimos el path DE LA CARPETA donde has descargado el ejecutable.
  • Finalmente guardamos dando a OK

Reinicia windows para que tenga efecto.

5.4 Eksctl

EKSCTL es la herramienta oficial de AWS para crear y gestionar clúster de Kubernetes en su Cloud.

Para instalar la herramienta seguiremos los siguientes pasos:

Si no te funciona, es porque lo tienes que añadir a las variables de tu sistema operativo.

Añadir eksctl a las variables del sistema operativo (Windows)
  • Ten a mano la ruta donde te has descargado el eksctl (si está en un zip, extráelo y guárdalo en un sitio donde no lo vayas a borrar)
  • Iremos al menú de Windows y buscaremos “Editar variables del sistema operativo”
  • Le daremos doble click o editar a la variable “Path”
  • Le damos a “new” y añadimos el path DE LA CARPETA donde has descargado el ejecutable.
  • Finalmente guardamos dando a OK

Reinicia windows para que tenga efecto.

Si no, puedes usar la ruta donde se encuentra el ejecutable.

5.5 Python 3.11

Para instalar Python 3.11, haremos lo siguiente:

Esto al final lo usaremos para hacer pruebas en local y para Visual Studio Code. Puedes probar otras versiones de python, pero vete con cuidado si hay cambios significativos.

5.6 Visual Studio Code (opcional)

Si tienes otro IDE o ya lo tienes instalado puedes omitir este paso.

Si no, aquí tienes como descargarlo:

ExtensiónPublisher
PylintMicrosoft
PythonMicrosoft
MagicPythonMagicStack Inc.
IntelliCodeMicrosoft

5. Conclusiones

En este artículo hemos explicado el objetivo de esta PoC y que queremos lograr.

Aparte, hemos instalado todo el software que necesitaremos para realizar la PoC y lo hemos dejado todo preparado para empezar a crear nuestro primer clúster de kubernetes en el servicio autogestionado de EKS.

Artículo anterior: 1. Fundamentos

Siguiente artículo: 3. Vamos a crear un clúster


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *