La fecha límite de entrega del proyecto es el 7 de marzo de 2022 a las 11:59 PM Hora Colombia (GMT-5).

Siga las instrucciones a continuación para crear los entregables que serán calificados en el proceso de evaluación.

Prerrequisitos

Para cumplir con las actividades del proyecto es necesario que cuente con ciertas herramientas instaladas en su máquina personal.

Objetivos

En esta entrega se requiere implementar el soporte al proceso que ocurre luego de la compra de uno de los bienes solicitados por el cliente.

En el proceso participan 4 actores:

El proceso funciona de la siguiente manera:

  1. Al completar la transacción en la pasarela de pagos, el procesador de transacciones notifica el resultado mediante el llamado a un webhook expuesto para tal propósito.
  2. Una vez se ha procesado el pago de la compra por parte del cliente, si el pago fue exitoso, se debe enviar una notificación al vendedor indicando el estado del pedido.
  3. El vendedor debe iniciar la gestión de la orden de compra e indicarle al cliente una fecha tentativa de finalización de la fabricación. Esta fecha debe ser enviada al cliente a través de una notificación.

  1. Al finalizar la fabricación, el vendedor debe actualizar el estado de la orden a "Lista para despacho". El sistema se integra con el proveedor de mensajería para solicitar la recolección del paquete.

  1. Una vez el proveedor de mensajería hace el agendamiento, este notifica mediante el consumo de un webhook que se debe exponer. Se debe notificar al cliente y al vendedor la fecha tentativa de entrega. El proveedor de mensajería hace el agendamiento por lotes, de manera que se espera que cada que termina una planeación de ruta, llame simultáneamente para varios pedidos el endpoint de notificación.

  1. El proveedor nos notificará a través del webhook el estado del envío. Una vez llegue al estado de "Entregado", se debe notificar al cliente e iniciar el proceso de facturación. Estas notificaciones del proveedor se hacen individualmente para cada pedido en proceso de entrega.
  1. El proceso de facturación consiste en generar la factura de servicios al vendedor y notificar a este cuando se encuentre disponible. El documento debe ser generado con la fecha en la que se hizo la entrega por asuntos regulatorios.

Para esta entrega del proyecto debe hacer un diseño asíncrono y orientado a eventos para este proceso. Debe utilizar las estrategias y patrones vistos durante las semanas 5 y 6 para la solución del problema.

Para esta entrega del proyecto usted debe realizar un diseño de componentes que permita soportar el proceso descrito en el enunciado. Para lograrlo debe tener en cuenta las siguientes consideraciones:

Para la integración de los servicios necesarios para el proceso de negocio es mandatorio implementar puntos de conexión con un tercero. El curso cuenta con endpoints de prueba que pueden ser utilizados para probar esta integración. Su tarea incluye la implementación de estas integraciones.

Las integraciones se dividen en dos:

Webhooks

Son los endpoints que usted debe exponer para que un tercero consuma. Estos endpoints deberán cumplir con una especificación y deberán ser consumidos a través de Postman para las pruebas del proceso.

En el siguiente vínculo encuentra un archivo OpenAPI que se puede visualizar con swagger y que contiene la especificación de los endpoints que debe exponer.

Swagger webhooks

APIs de proveedores

endpoints que deben ser consumidos desde la aplicación para el envío de correos, agendamiento de envíos y generación de facturas. Cada endpoint debe estar integrado y debe ser llamado según el diagrama del proceso presentado en el enunciado.

En el siguiente vínculo encuentra un archivo OpenAPI que se puede visualizar con swagger y que contiene la especificación de los endpoints del API que debe integrar:

Swagger endpoints

A continuación encuentra unas generalidades que debe tener en cuenta en la integración de estos APIs.

APIs de facturación

Contiene dos endpoints que deben ser integrados.

El primer endpoint permite iniciar el proceso de creación de una factura para una venta dado su identificador. Este proceso se hace en background y el endpoint retorna el id del proceso de creación de la factura.

El segundo endpoint recibe el identificador retornado por el primer endpoint y sirve el archivo. Existe la particularidad de que el endpoint retorna 500 cuando el proceso de facturación no ha sido completado. Debe tener en cuenta este comportamiento en la integración.

API de mensajería y entrega de paquetes

Contiene un endpoint que permite solicitar el agendamiento del envío. El agendamiento se realiza en background y es completado mediante el llamado del webhook expuesto para tal fin.

El endpoint de solicitud de agendamiento tiene una tasa de errores bastante alta. Ante un fallo, se debe reintentar la solicitud en unos segundos. Las solicitudes se deben reintentar hasta obtener una respuesta exitosa.

Con el id retornado por este endpoint, se realiza el llamado al webhook de mensajería cuando la solicitud de entrega cambia de estado. Los cambios de estado están detallados en el swagger asociado a ese webhook.

API de notificaciones

Contiene un endpoint para el envío de notificaciones a un dispositivo. El envío de notificaciones se basa en templates definidos del lado del proveedor. Cada template tiene un id que debe ser enviado a este endpoint para que el proveedor pueda construir la notificación con la información entregada en el objeto de extras.

Para esta entrega, usted deberá exponer los APIs que desarrolle a través de un API Gateway que resuelva las rutas hacia las funciones y/o componentes que desarrolle.

En el gateway y en su solución debe exponer suficientes endpoints para al menos cubrir los siguientes punto de integración con la aplicación de cliente:

Ambos endpoint deberán recibir el token de sesión y validarlo contra el API de sesiones disponible en el monolito desde la entrega 1 del proyecto.

Servicios actuales

Otro equipo de desarrollo ha estado construyendo un conjunto de microservicios que responden a algunas entidades del negocio y que usted debe aprovechar para cumplir con estos requerimientos.

Las imágenes ya se encuentran en un registro de contenedores y la documentación de su funcionamiento, así como los archivos de despliegue se encuentran en el siguiente enlace.

repositorio

Se recomienda primero leer la documentación descrita en el archivo README del proyecto, realizar el despliegue de cada uno en su infraestructura y probar que su funcionamiento sea correcto.

55 puntos

Como parte de la solución, debe realizar un documento de arquitectura y diseño en el que haga un levantamiento de la información del problema, proponga una solución y explique los racionales detrás de las decisiones de diseño tomadas.

Responda las preguntas orientadoras que aparecen a continuación y utilice el formato de Diseño y arquitectura para completar el entregable.

Nombre del componente

Código/Id del componente

Debe aparecer en el diagrama

Tipo

Tipo de componente: base de datos, servicio, almacenamiento, función, etc

Tecnología

El servicio del proveedor que se utiliza para desplegar este componente

Responsabilidad

Responsabilidad del componente dentro del sistema/aplicación

Nombre del componente

Nombre del componente/servicio/función

Patrón utilizado

Nombre del patrón utilizado

Justificación

Justificación de por qué este patrón puede ser utilizado y para qué se debe usar en este contexto

AC favorecidos

Lista de atributos de calidad que se favorecen al utilizar este patrón en este contexto

AC desfavorecidos

Lista de atributos de calidad que se desfavorecen al utilizar este patrón en este contexto

Nombre del componente origen

Nombre del componente que inicia la comunicación

Nombre del componente destino

Nombre del componente que recibe la comunicación

Tipo de solicitud

Forma en la que se realiza la solicitud (http, RPC, etc)

Tipo de respuesta

Respuesta esperada de parte del componente destino

Forma de comunicación

Asíncrona/síncrona

AC favorecidos

Lista de atributos de calidad que se favorecen al utilizar este patrón en este contexto

AC desfavorecidos

Lista de atributos de calidad que se desfavorecen al utilizar este patrón en este contexto

Evaluación

Los siguientes criterios se tendrán en cuenta en el proceso de evaluación y validación de este entregable:

30 puntos

Basado en el diseño del entregable I, debe realizar una implementación funcional de los componentes incluidos en el diseño. Para la implementación de los componentes tenga en cuenta los siguientes lineamientos:

Evaluación

Los siguientes criterios se tendrán en cuenta en el proceso de evaluación y validación de este entregable:

15 puntos

Debe realizar un video en el que muestre lo siguiente:

El video no debe tener una duración superior a los 20 minutos.

Evaluación

Los siguientes criterios se tendrán en cuenta en el proceso de evaluación y validación de este entregable:

Esta sección contiene la información de los cambios que se han realizado a este enunciado desde su publicación.

Fecha

Cambio

24/01/2022

Publicación definitiva

28/02/2022

Se agrega la sección de servicios actuales en API