Checkpoint 2

Entrega

Después de casi un mes de trabajo realizamos el segundo checkpoint del proyecto. En este logramos completar las siguientes historias:

Historias Checkpoint 2

Retro

Al finalizar la entrega realizamos una retrospectiva para mejorar de cara al siguiente checkpoint:

Retro Checkpoint 2

Nos llevamos como actions items para la próxima iteración los siguientes puntos:

  • Prestarle más atención a Jira (para tener más visibilidad sobre lo que estamos trabajando)
  • Desglosar las tareas en sub-tareas (dado que algunas resultaron demasiado grandes)
  • Definir endpoints de antemano (para que el Front-end pueda avanzar sin esperar al Back-end)
  • Generar documentación del proyecto (totalmente meta)

Checkpoint 1

Entrega

En este primer checkpoint logramos poner a punto todos los ambientes requeridos para los distintos microservicios. Esto implicó configurar 8 servicios, dado que tenemos 2 ambientes (producción y staging) para cada una de las 4 aplicaciones:

  • Front-end del Back office.
  • Microservicio core
  • Microservicio de pagos
  • Microservicio de usuarios

A su vez quedó listo el ambiente de desarrollo de la aplicación en Android.

Cobertura

Por otro lado, también configuramos los reportes de cobertura para los microservicios con codecov.io y las respectivas integraciones con GitHub:

Cobertura Checkpoint 1

Backlog

Además configuramos las integraciones entre Jira y GitHub para vincular los desarrollos con la herramienta de manejo de Backlog.

¡Todo listo para comenzar!

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.

Welcome

Yangshun Tay

Yangshun Tay

Front End Engineer @ Facebook

Blog features are powered by the blog plugin. Simply add files to the blog directory. It supports tags as well!

Delete the whole directory if you don't want the blog features. As simple as that!

Hola

Gao Wei

Gao Wei

Docusaurus Core Team

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet