La fecha límite de entrega del proyecto es el 21 de febrero 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

El equipo de ingeniería se ha reunido para determinar cuál es el siguiente paso en el desarrollo de la aplicación. El objetivo en este momento es tomar decisiones que le permitan al negocio entregar valor rápidamente, y a su vez permitir que el equipo de desarrollo se acople a las nuevas tecnologías que se están implementando en la compañía. Para ello se tomaron tres decisiones importantes:

  1. Se ha decidido que vamos a convivir con el monolito; este seguirá ofreciendo los servicios que expone actualmente, pero no se extenderá.
  2. Las nuevas funcionalidades se desarrollarán haciendo uso de la arquitectura de microservicios, estos microservicios hablarán con el monolito siempre que lo requieran y no duplicarán sus funcionalidades actuales.
  3. Para las nuevas funcionalidades se hará uso de patrones síncronos.

Teniendo como base estás decisiones, en conjunto con su grupo de trabajo usted debe:

  1. Hacer un diseño general del mapa de microservicios que soportarán el sistema a futuro.
  2. Hacer un diseño en específico de los componentes necesarios para satisfacer dos necesidades de negocio.
  3. Implementar los componentes que permitan cumplir con las necesidades de negocio seleccionadas.
  4. Probar y sustentar el funcionamiento de sus componentes en ejecución sobre el proveedor de nube.

Durante la semana 3 se recomienda avanzar con las dos primeras partes del proyecto, e iniciar la construcción de componentes descritos en la parte 3.

En una reunión con el equipo completo de la compañía, se hizo una descripción de las necesidades y expectativas con respecto a lo que el sistema debe ofrecer en el futuro. El resumen de esa conversación es la siguiente:

Con esta información se espera un diseño general de cómo sería la estructura de los microservicios con los que se respondería a las necesidades del negocio. A continuación, se detalla los entregables de este punto.

25 puntos

Con la información presentada en el segmento anterior usted debe:

[12 puntos] Modelo de contexto

Crear un modelo de contexto donde se presenten los conceptos del negocio y la relación entre ellos en términos de agregados (aggregates) y contextos (bounded context). Para este punto tenga en cuenta los siguientes lineamientos:

Agregado

Contexto

Datos

Descripción

nombre del agregado

Contexto donde está ubicado

  • nombre: explicación del campo

Responsabilidades del agregado.

Relación

Contextos

Razón de la relación

agregado 1, agregado 2

contexto 1, contexto 2.

Agregado 1 se relaciona con agregado 2 por...

[13 puntos] Modelo de componentes

Haciendo uso del modelo anterior, crear un primer modelo de componentes (vista funcional) que presente los microservicios del sistema. Para este punto tenga presente:

Microservicio

Agregados

Razón

código del microservicio (tal como aparece en el modelo).

agregado 1, agregado 2.

ambos agregados se encuentran ...

Criterios de Evaluación

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

Forma de Entrega:

Con este primer diseño el equipo de tecnología, en acuerdo con las diferentes áreas, definió ciertas funcionalidades que se consideran importantes y de baja complejidad, adecuadas para este ciclo del desarrollo. El objetivo de su equipo es documentar, diseñar e implementar dos historias de usuario haciendo uso de un conjunto de microservicios ya implementados y los patrones de diseño vistos durante estas semanas.

Las historias de usuario seleccionadas son:

Historias de usuario

Historia

Como usuario deseo crear un pedido para iniciar el proceso de construcción del bien que estoy comprando.

Criterios de aceptación

  • Cuando se crea un pedido debe agendarse con el proveedor y realizar la solicitud de pago.
  • El pedido debe quedar asociado al usuario que está haciendo la solicitud.
  • El pedido debe almacenar la información del producto que está comprando. No se puede tener un proceso de construcción asociado a dos productos por lo que un pedido debe tener solo un producto asociado.
  • El pedido debe quedar asociado al proveedor del producto.
  • Se debe validar que el producto exista.
  • En el caso que el proveedor no tenga disponibilidad, el pedido debe ser rechazado.
  • En el caso de error en la solicitud de pago el pedido debe ser rechazado.
  • Solo un usuario autenticado y autorizado puede realizar esta solicitud.
  • En cualquier caso de error la información al finalizar debe ser consistente.

Historia

Como usuario deseo consultar un pedido para tener claridad de sus detalles y su estado.

Criterios de aceptación

  • Como resultado de la consulta se debe presentar la información del producto (no solo el identificador), la fecha de agendamiento del pedido, la información del proveedor que lo está atendiendo (no solo el identificador), y los estados de pago y ejecución.
  • El pedido solo puede ser consultado por el usuario que lo solicitó.
  • Solo un usuario autenticado y autorizado puede realizar esta solicitud.
  • En caso de degradación o falla del sistema, se responden mensajes de error amigables, con una latencia no superior a 100 ms hasta que el sistema vuelva a estar disponible.

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.

40 puntos

Haciendo uso de la información de las historias de usuario y la descripción de los servicios ya implementados en la plataforma, junto con su equipo de trabajo usted debe realizar un documento de arquitectura donde se describen los microservicios y decisiones de diseño que solucionan ambos requerimientos.

Tenga en cuenta los siguientes lineamientos para el diseño de su solución.

Complete las siguientes actividades:

[15 puntos] Modelo de componentes

Implementar dos diagramas de componentes de la vista funcional (uno por cada requerimiento) en el que se describen los componentes necesarios (tanto nuevos como anteriormente implementados) para cumplir con ambas historias (sea explícito en cuanto a endpoints y métodos de consumo). Adicionalmente, cada componente NUEVO debe estar listado con la siguiente información:

Componente

Nombre del componente

Código/Id del componente

Debe aparecer en el diagrama

Tipo

Tipo de componente: base de datos, servicio, almacenamiento, etc

Responsabilidad

Responsabilidad del componente dentro del sistema/aplicación

Consideraciones de diseño

Tradeoffs, impacto en el sistema actual, puntos de dolor, etc.

Comunicación

Con cuales componentes se comunica, protocolos, verbos, tipo de comunicación.

[15 puntos] Documentación de patrones

Documentar los patrones de diseño utilizados para la solución de cada punto.

Requerimiento

Nombre del requerimiento

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

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.

[10 puntos] Documentación del proceso,

Por medio del diagrama de su preferencia (preferiblemente de secuencia), describa cómo será el comportamiento paso a paso de cada una de las soluciones. Este debe tener en cuenta flujos de excepción y manejo de errores.

Con respecto a la resiliencia:

Criterios de Evaluación

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

Forma de Entrega:

A partir de este momento usted debe realizar la implementación de los componentes nuevos que ayudarán a cumplir con el objetivo del proyecto. Para ello usted tendrá acceso a un nuevo repositorio donde almacenará, el código, archivos de configuración y documentación necesaria para poder replicar sus pruebas en otros ambientes.

25 puntos

Basado en el diseño del entregable II, 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:

Criterios de Evaluación

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

Forma de Entrega:

10 puntos

Debe realizar un video en el que sustente (con su voz) lo siguiente:

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

Criterios de Evaluación

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

Forma de Entrega:

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

07/02/2022

Aclaración del punto de resiliencia

08/02/2022

Aclaración del punto de resiliencia: Se agrega citación para revisar repositorio dado que ahora hay microservicio que simula fallo de degradación.