Luis Eduardo Hernandez Amado - 200714432
Ederson Odir Ramirez Hernandez - 200915050
Rafael Alejandro Juarez Yantuche - 201021164
Debido al rápido crecimiento de los negocios electrónicos en el mercado, la tienda “TangoCart” ha decidido crear una app de e-commerce ya que ahora es indispensable para seguir creciendo y vendiendo y además para adaptarse a las necesidades y preferencias de los usuarios.
Dicha aplicación permitirá el registro de usuarios, ya sean clientes o proveedores, también contará con un catalogo de productos y toda la información de los mismos, dichos productos estarán organizados en categorías y serán agregados al catálogo por los proveedores. Los clientes en cambio podrán visualizar los productos y en caso de querer comprarlos se agregarán a un carrito de compras, donde estarán almacenados antes de confirmar la compra y pagar por ellos utilizando una tarjeta de crédito registrada previamente.
Debido a la naturaleza del proyecto se ha decidido para el desarrollo utilizar una arquitectura SOA además de DevOps para automatizar la integración y el despliegue.
Según el análisis del requerimiento, se propone una solución basada en la arquitectura orientada a servicios SOA, con un backend compuesto por servicios desarrollados mediante typescript + nodejs, éstos dockerizados ,para la persistencia de datos se implementará una base de datos Mongo DB, una interfaz de usuario front end desarrollada con el framework Angular, autenticación mediante JWT, y como proveedor de nube Google cloud.
Para el control versiones se utilizará Azure Repos de tipo distribuido (Git), ya que éste brinda todas las herramientas y funciones de una herramienta de control de versiones y además se integra con la herramienta que se eligió para la automatización de pruebas, integración y despliegue (CI/CD) Azure Pipelines.
Como lenguaje de programación se seleccionó JavaScript + TypeScript + Nodejs debido a la gran cantidad de ventajas que posee sobre otros lenguajes de programación, como por ejemplo que utiliza Javascript, un lenguaje sencillo de aprender, además de la facilidad para la creación de APIs REST que utilizan JSON para peticiones y respuestas.
Además para la persistencia de datos se utiliza la base de datos NOSQL MongoDB que incluye escalabilidad y la flexibilidad. MongoDB también se integra bien con Node, ya que está diseñado para funcionar de forma asíncrona con objetos JSON.
- NodeJS + JavaScript: como lenguaje de programación backend
- Angular: framework para aplicaciones web para frontend
- MongoDB: base de datos NOSQL
- Azure Devops: conjunto de herramientas para DevOps de Microsoft
- Docker: herramienta para el despliegue de aplicaciones dentro de contenedores
- Google cloud: nube de Google en donde se crean las maquinas virtuales que utilizará el proyecto
- Mocha & Chai: paquetes de NodeJS para pruebas unitarias
- Postman: herramienta para probar endpoints, apis, etc.
Se implementa la metodología Scrum, para lo cual se utilizará la plataforma Azure Devops, la cual cuenta entre sus características con las siguientes herramientas:
- Repositorio de código fuente.
- Control de versiones
- Creación de pipelines
- Tablero de actividades
- Backlog de tareas
Para el control del tiempo se utilizará Azure Boards
Se implementarán las siguientes pruebas funcionales
- Registro de usuario
- Login
- Creación de producto
- Consulta de productos
- Modificación de productos
- Eliminación de producto
- Agregar producto al carrito
- Realizar compra
Para el código se realizarán pruebas unitarias con apoyo de las librerías Mocha y Chai.
JWT Para asegurar la comunicación de las APIs de nuestros servicios utilizaremos tokens generados por JWT, se utilizará para la autenticación de cada ruta de las APIs, además de se utilizará para el intercambio de información entre los servicios de otros grupos. Todos nuestros servicios tienen el header que incluye el detalle de JWT.
{
"alg": "HS256",
"typ": "JWT"
}