Tecnologías del Back-end
Microservicios
Luego de nuestra propuesta inicial sobre la arquitectura a utilizar y la charla con Gonzalo decidimos desarrollar los siguientes microservicios:
- Usuarios: para manejar la autenticación de los usuarios de la aplicación y los del back-end
- Pagos: para manejar la interacción con el Smart Contract.
- Core: con la lógica de negocio principal de la aplicación.
Tecnlogías
En principio era un requisito desarrollar los microservicios Back-end con Python y Node.js. Dado que la mayor parte del equipo se encontraba más familiarizado con Node.js, decidimos que el microservicio principal (Core) se desarrolle en dicho lenguaje.
A su vez Martin tenía una buena experiencia utilizando Smart Contracts en Node.js, con lo cual también decidimos que el microservicio de Pagos sea en dicho Lenguaje.
Por último, para cumplir con los requisitos propuestos resolvimos desarrollar el servicio de Usuarios en Python.
Frameworks
Node.js
En principio decidimos armar un template en Node.js para utilizarlo en ambos microservicios (Core y Pagos). Para ello determinamos utilizar TypeScript dado que nos proporciona un chequeo estático de tipos en tiempo de compilación atrapando algunos errores comunes al programar. Luego para el protocolo HTTP utilizamos un framework simple como Express.js lo que nos permite implementar una arquitectura hexagonal fácilmente.
Por otro lado, para facilitar la conexión con la base de datos investigamos varios ORMs y finalmente nos decidimos por TypeORM dado que es el framework que menos ensucia las entidades del modelo de dominio con cuestiones de la base de datos.
Finalmente, para crear los controladores utilizamos la biblioteca routing-controllers que en conjunto con routing-controllers-openapi nos permitió generar de forma automatizada la especificación OpenApi.
Python
Dado que el microservicio a desarrollar era relativamente pequeño optamos por un framework sencillo como Flask en lugar de otros más complejos como Django.