Skip to content

Edrson/fase2-SA

Repository files navigation

Proyecto SA - Fase 1

GRUPO No. 1

Luis Eduardo Hernandez Amado - 200714432
Ederson Odir Ramirez Hernandez - 200915050
Rafael Alejandro Juarez Yantuche - 201021164

Descripción

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.

Solución propuesta

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.

Exposición de Solución

Link de presentación

Arquitectura propuesta (basada en SOA)

Arquitectura

Descripción de la funcionalidad

Documento de funcionalidad

Contenedores y sistemas de Orquestación

Contenedores y Orquestación

Versionamiento

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.

Azure Repos

Lenguaje de Programacion

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.

NodeJS


NodeJS

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.

MongoDB

Herramientas de desarrollo a utilizar

  • 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.

Herramientas de metodología a utilizar

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

Azure Devops

Herramienta de control de tiempo a utilizar

Para el control del tiempo se utilizará Azure Boards

Board 1

Board 2

Pruebas a implementar

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.

Pruebas


Diagrama de casos de uso

Casos de uso

Diagrama de flujo general

Diagrama de flujo

Microservicios identificados

Link de Microservicios

JWT

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"
}

Azure Devops

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published