Hoja de trabajo S4 - TheCodeTeamUni/documentacion-proyecto GitHub Wiki

a) Modelos de Arquitectura

Al buscar priorizar los atributos de calidad de escalabilidad, integridad de la información y disponibilidad en el sistema ABC Jobs, resulta fundamental diseñar una arquitectura efectiva que cumpla con los requisitos del sistema propuesto. En este sentido, el uso del estilo de arquitectura basado en microservicios se presenta como una elección clave:

  • Escalabilidad: Los microservicios ofrecen la ventaja de permitir el escalado independiente de los componentes del sistema. Esto significa que, en caso de una demanda elevada en un área particular, como "Candidatos" o "Empresas", es posible asignar recursos adicionales a ese microservicio específico sin que ello afecte a los demás. Esta característica favorece la escalabilidad horizontal del sistema.

  • Integridad de la Información: Los microservicios se constituyen como unidades independientes con la capacidad de tener su propia base de datos. Esta particularidad contribuye significativamente a mantener la integridad de la información, ya que aísla los datos relacionados con cada microservicio, reduciendo así la probabilidad de corrupción de datos debido a fallos en algún componente del sistema.

  • Disponibilidad: La flexibilidad de los microservicios permite su despliegue en múltiples instancias o nodos. Esto se traduce en un aumento sustancial de la disponibilidad del sistema, ya que, en caso de fallo de un microservicio, las otras instancias pueden continuar brindando servicios de manera ininterrumpida. Esta capacidad de recuperación reduce significativamente el tiempo de inactividad del sistema.

A continuación se presentan las principales vistas de la arquitectura propuesta para el Sistema ABC Jobs:

Vista Funcional - Modelo de Componentes

Componentes

Vista de Despliegue - Modelo de Despliegue

Despliegue

Vista de Información - Vista de Clases

ABCJobs Información - Datos

b) Diseño detallado de Arquitectura

En la arquitectura del sistema ABC Jobs se opto por el uso del Estilo de Arquitectura basado en microservicios, el uso de este estilo es apropiado y respalda los atributos de calidad elegidos escalabilidad, integridad de la información y disponibilidad en el sistema, a continuación se detalla el diseño de arquitectura y se razona sobre el uso de las diferentes tácticas y patrones elegidos.

  • WEB

1 frontend

  • MOVIL

2

Tanto para la construcción de la interfaz web como móvil de la aplicación se usará el patrón el patrón de arquitectura MVVM (Model-View-ViewModel), que ofrece varios beneficios para el sistema tales como:

  1. Separación de Responsabilidades: El patrón MVVM promueve una clara separación de responsabilidades en la aplicación, lo que facilita la gestión y el mantenimiento del código. Esto es beneficioso para un sistema complejo como el que se propone, ya que permite dividir la lógica de la interfaz de usuario (UI) de la lógica de negocio y el acceso a los datos.
  2. Mantenibilidad: La estructura de MVVM facilita la mantenibilidad del sistema a medida que crece y evoluciona. Los componentes son independientes y se pueden agregar o modificar sin afectar otras partes de la aplicación, siempre que la interfaz (contrato) entre el ViewModel y la vista se mantenga.

Por otro lado, las interfaces web y móviles se conectarán a los microservicios a través de un Orquestador de Microservicios. El uso de un orquestador permite escalar de manera más eficiente los microservicios individuales según la demanda específica de cada uno, lo que beneficia la escalabilidad del sistema. Además, el orquestador puede gestionar transacciones distribuidas y garantizar la integridad de los datos. Esto significa que el orquestador puede coordinar las operaciones y, en caso de error, revertirlas o manejar excepciones de manera adecuada para evitar inconsistencias en los datos. También puede supervisar el flujo de datos entre los microservicios y aplicar validaciones de integridad.

3

La interacción con otros sistemas es fundamental para el éxito y la eficacia de ABC Jobs al enriquecer la funcionalidad, asegurar el cumplimiento de regulaciones, mejorar la calidad de los servicios y facilitar la expansión global. Estas interacciones buscan aprovechar recursos y datos disponibles en otros sistemas para lograr los objetivos del negocio de manera más efectiva.

4

Se hará uso de colas de mensajes con el fin de priorizar los atributos de calidad de la siguiente forma:

  1. Integridad de la Información: El uso de colas de mensajes entre el sistema de integración y los microservicios de candidatos, empresas y evaluaciones puede ayudar a garantizar que los mensajes se procesen de manera ordenada y confiable. Esto es esencial para mantener la integridad de la información, especialmente en operaciones críticas.
  2. Escalabilidad: Las colas de mensajes permiten desacoplar la recepción y el procesamiento de mensajes, lo que facilita la escalabilidad de los servicios de manera independiente. Esto garantiza que los microservicios puedan manejar un alto volumen de solicitudes sin perder mensajes o datos.

5

Los microservicios tienen su propia base de datos o almacén de datos, lo que garantiza la integridad de la información. Cada microservicio es responsable de sus propios datos, lo que facilita el control y la garantía de la integridad de los mismos.

Así mismo se usará la táctica de autoscaling, lo que significa que cada microservicio puede escalar de forma independiente según la demanda. Esto es fundamental para mantener un alto rendimiento y disponibilidad en momentos de carga pico, ya que solo los microservicios que lo necesiten se escalan, reduciendo el desperdicio de recursos.

c) Experimentos

En el siguiente documento, se describen los dos experimentos que se llevarán a cabo para verificar el cumplimiento de los requisitos de calidad relacionados con la escalabilidad e integridad.

Experimentos