semana05 - carloscastillo10/application-architecture-utpl-course GitHub Wiki

ESTILOS ARQUITECTÓNICOS

¿Qué es un estilo arquitectónico? 🔖

Un estilo arquitectónico expresa un esquema de organización estructural fundamental para los sistemas de software ya que proporciona un conjunto de tipos de elementos predefinidos, especificando sus responsabilidades e incluyendo reglas y pautas para organizar la relación entre ellos.

Los estilos se pueden utilizar durante el proceso de definición y diseño como paso previo a la implementación de la arquitectura.

Beneficios:
  • Reutilización: A nivel de diseño, cuando las soluciones son bien entendidas se pueden aplicar a nuevos problemas. A nivel de codificación, las implementaciones a nivel de componentes y el uso de estructuras se pueden compartir con otros estilos.
  • Comprensión: A nivel de diseño la representación y organización gráfica de elementos UML. A nivel de codificación la organización o modularidad del sistema.
  • Interoperabilidad: A nivel de codificación compatible con la estandarización de estilos y patrones.

  • Estilo basado en servicios 🔖

    El estilo basado en servicios trata de implementar objetivos comunes cuando se reestructuran las arquitecturas monolíticas, ya que permiten la descomposición sin alterar los esquemas de las bases de datos y los puntos de integración existentes. Sigue una estructura distribuida en capas, es decir consta de una interfaz de usuario implementada por separado, servicios generales remotos implementados por separado y una base de datos monolítica.

    SBA

    Figura 1: Estructura básica del estilo de arquitectura basada en servicios

    El estilo basado en servicios impulsa una arquitectura con particiones de dominio, lo que significa que la estructura es impulsada por el dominio en lugar de la lógica de presentación o lógica de persistencia

    Ranking de principales características
    Característica Calificación
    Elasticidad ⭐ ⭐
    Evolutivo ⭐ ⭐ ⭐
    Modularidad ⭐ ⭐ ⭐ ⭐
    Escalabilidad ⭐ ⭐ ⭐
    Despliegue ⭐ ⭐ ⭐ ⭐
    Tolerancia a fallos ⭐ ⭐ ⭐ ⭐
    Fiabilidad ⭐ ⭐ ⭐ ⭐
    Testabilidad ⭐ ⭐ ⭐ ⭐

    Estilo orientado a servicios 🔖

    El estilo orientado a servicios tiene varios enfoques:

  • De negocio: Permite a las organizaciones satisfacer los cambios en las necesidades de la empresa, mediante la implementación de servicios web.
  • Tecnológico: Aumenta la flexibilidad simplificando a adaptación de los sistemas existentes, mejorando la productividad de procesos y la usabilidad de las aplicaciones.
  • Organización: Permite la consistencia en los procesos, ofrece rapidez de adaptación al cambio y mejora la cultura de servicio.
  • La principal ventaja que ofrece, es que su activo principal no son las aplicaciones o sistemas si no los Contratos que expone y es que con una definición correcta de un contrato podríamos incluso cambiar el aplicativo por otro y nadie se diera cuenta.

    SOA

    Figura 2: Esquema de comunicación del estilo orientado a servicios.
    Ranking de principales características
    Característica Calificación
    Elasticidad ⭐ ⭐ ⭐
    Evolutivo
    Modularidad ⭐ ⭐ ⭐
    Escalabilidad ⭐ ⭐ ⭐ ⭐
    Despliegue
    Tolerancia a fallos ⭐ ⭐ ⭐
    Fiabilidad ⭐ ⭐
    Testabilidad

    Microservicios 🔖

    Es un enfoque para el desarrollo de una aplicación única como un conjunto de pequeños servicios, cada uno ejecutándose en su propio proceso y mecanismos ligeros de comunicación, a menudo un recurso de una interfaz de programación de aplicaciones (API) sobre protocolo de transferencia de hipertexto (HTTP). Estos servicios están construidos alrededor de las capacidades del negocio y con independencia de despliegue e implementación totalmente automatizada.

    microservicios

    Figura 3: Esquema de comunicación del estilo orientado a servicios.
    Beneficios:
  • Entrega contínua
  • Libre elección de tecnologías
  • Intensa modularización
  • Altamente mantenible
  • Débilmente acoplado
  • Ranking de principales características
    Característica Calificación
    Elasticidad ⭐ ⭐ ⭐ ⭐ ⭐
    Evolutivo ⭐ ⭐ ⭐ ⭐ ⭐
    Modularidad ⭐ ⭐ ⭐ ⭐ ⭐
    Escalabilidad ⭐ ⭐ ⭐ ⭐ ⭐
    Despliegue ⭐ ⭐ ⭐ ⭐
    Tolerancia a fallos ⭐ ⭐ ⭐ ⭐
    Fiabilidad ⭐ ⭐ ⭐ ⭐
    Testabilidad ⭐ ⭐ ⭐ ⭐

    Referencias 📚

  • J.D. (2009, 9 febrero). Architectural Styles. Shaping Software. https://shapingsoftware.com/2009/02/09/architectural-styles/
  • 城里的月光_欧阳. (2020, 24 noviembre). Service-Based Architecture Style. jianshu. https://www.jianshu.com/p/0ae3ff1050ea
  • Education I.C. (2021, 12 abril). SOA (Service-Oriented Architecture). IBM. https://www.ibm.com/cloud/learn/soa
  • Education I.C. (2021b, junio 23). Microservices. IBM. https://www.ibm.com/cloud/learn/microservices
  • ⚠️ **GitHub.com Fallback** ⚠️