En el campo de la arquitectura empresarial, los patrones de arquitectura son una herramienta importante para crear soluciones efectivas a problemas comunes. Los patrones ofrecen una forma de colocar bloques de construcción en contexto y pueden proporcionar a los arquitectos un plano para diseñar soluciones que se han demostrado efectivas en el pasado. En este artículo, exploramos el concepto de patrones de arquitectura en el contexto del ADM de TOGAF, y proporcionamos un ejemplo de un patrón de arquitectura en el contexto del desarrollo de aplicaciones empresariales.
¿Qué son los patrones de arquitectura
Un «patrón» se ha definido como: «una idea que ha sido útil en un contexto práctico y probablemente será útil en otros» (Fuente: Patrones de análisis – Modelos de objetos reutilizables, por M. Fowler).
En la norma TOGAF, los patrones se consideran una forma de colocar bloques de construcción en contexto; por ejemplo, para describir una solución reutilizable a un problema. Los bloques de construcción son lo que usted utiliza: los patrones pueden indicarle cómo, cuándo, por qué y qué compromisos debe hacer al utilizarlos.
Los patrones ofrecen la promesa de ayudar al arquitecto a identificar combinaciones de bloques de construcción de arquitectura y/o soluciones (ABBs/SBBs) que se han demostrado efectivas en el pasado, y que podrían proporcionar la base para soluciones efectivas en el futuro.
Las técnicas de patrones se reconocen generalmente como una técnica valiosa de diseño arquitectónico establecida por Christopher Alexander, un arquitecto de edificios, quien describió este enfoque en su libro El camino atemporal de la construcción, publicado en 1979. Este libro ofrece una introducción a las ideas detrás del uso de patrones, y Alexander le siguió con dos libros más (Un lenguaje de patrones y El experimento de Oregon) en los que amplió su descripción de las características y beneficios de un enfoque basado en patrones para la arquitectura.
Patrones de arquitectura en el ADM de TOGAF
El Método de Desarrollo de Arquitectura (ADM) es un componente clave de la norma TOGAF del Grupo Abierto, que proporciona un marco para crear y gestionar la arquitectura empresarial. Dentro del ADM, los patrones de arquitectura son una herramienta poderosa que puede ayudar a los arquitectos a identificar soluciones comprobadas a problemas comunes y acelerar el desarrollo de arquitecturas efectivas.
En su núcleo, un patrón de arquitectura es simplemente una descripción de una solución reutilizable a un problema que se ha demostrado efectiva en la práctica. Como sugiere la definición anterior, un patrón es una idea que ha sido útil en un contexto y probablemente será útil en otros. Los patrones pueden usarse para describir soluciones a diferentes niveles de abstracción, desde patrones de arquitectura de alto nivel que describen la estructura general de un sistema hasta patrones de diseño de bajo nivel que describen cómo deben implementarse los componentes individuales.
Una de las principales ventajas del uso de patrones de arquitectura es que pueden ayudar a los arquitectos a identificar combinaciones de bloques de construcción de arquitectura (ABBs) o bloques de construcción de soluciones (SBBs) que se han demostrado efectivas en el pasado. Esto puede ahorrar tiempo y esfuerzo al proporcionar un punto de partida para el desarrollo de arquitecturas, en lugar de comenzar desde cero con cada nuevo proyecto.
Además, los patrones de arquitectura pueden ayudar a garantizar que las arquitecturas sean coherentes y consistentes. Al utilizar patrones para describir soluciones a problemas comunes, los arquitectos pueden crear un lenguaje común y un conjunto de conceptos que pueden usarse en toda la organización. Esto puede ayudar a evitar malentendidos y asegurar que todos estén trabajando hacia una visión compartida de la arquitectura.
Las técnicas de patrones se han establecido como una técnica valiosa de diseño arquitectónico por parte de Christopher Alexander, un arquitecto de edificios, quien describió este enfoque en su libro El camino atemporal de la construcción. Las ideas de Alexander fueron posteriormente ampliadas en dos libros más, Un lenguaje de patrones y El experimento de Oregon.
En el contexto de la arquitectura empresarial, existen varios tipos diferentes de patrones de arquitectura que se pueden utilizar. Algunos de los más comunes incluyen:
- Arquitecturas de referencia – Estos describen la estructura general de un sistema o aplicación, y proporcionan un punto de partida para el desarrollo de arquitectura.
- Patrones de solución – Estos describen cómo se pueden resolver problemas específicos utilizando una combinación de ABBs y SBBs.
- Patrones de proceso – Estos describen las mejores prácticas y flujos de trabajo comunes para desarrollar e implementar arquitecturas.
- Patrones de diseño – Estos describen cómo deben diseñarse e implementarse los componentes individuales, y pueden ayudar a garantizar la consistencia y mantenibilidad a través de la arquitectura.
Los patrones de arquitectura son una herramienta poderosa para los arquitectos que buscan desarrollar arquitecturas empresariales efectivas y eficientes. Al identificar soluciones comprobadas a problemas comunes, los arquitectos pueden ahorrar tiempo y esfuerzo, al tiempo que garantizan que las arquitecturas sean coherentes, consistentes y alineadas con los objetivos y metas organizacionales.
Una plantilla para documentar los patrones de arquitectura
1. Nombre del patrón
Un nombre descriptivo para el patrón, que debe comunicar claramente el problema que se está resolviendo.
2. Problema
Una descripción del problema o desafío al que se pretende responder con el patrón. Debe ser clara y específica, y proporcionar contexto para el patrón.
3. Contexto
Una descripción del contexto en el que se pretende utilizar el patrón. Debe incluir información sobre la organización, el sistema o aplicación que se está desarrollando, y cualquier restricción o limitación relevante.
4. Solución
Una descripción de la solución que proporciona el patrón. Debe ser clara y específica, y explicar cómo se puede utilizar el patrón para abordar el problema descrito en la sección 2.
5. Beneficios
Una descripción de los beneficios del uso del patrón. Debe explicar cómo el patrón puede ayudar a abordar el problema, y proporcionar evidencia que respalde su efectividad.
6. Compromisos
Una descripción de los compromisos o sacrificios que deben hacerse al utilizar el patrón. Esto debe incluir cualquier limitación o desventaja del patrón, y cualquier riesgo que deba gestionarse.
7. Implementación
Una descripción de cómo se puede implementar el patrón. Esto debe incluir orientación sobre cómo aplicar el patrón, y cualquier ejemplo o caso de uso relevante.
8. Patrones relacionados
Una lista de patrones relacionados que podrían ser útiles junto con el patrón actual. Esto debe incluir cualquier patrón estrechamente relacionado o que pueda usarse en combinación con el patrón actual.
9. Referencias
Una lista de referencias y fuentes utilizadas en el desarrollo del patrón. Esto debe incluir cualquier publicación, artículo u otro recurso relevante.
Al utilizar esta plantilla, los arquitectos pueden crear patrones de arquitectura claros y efectivos que puedan compartirse y reutilizarse fácilmente en diferentes proyectos y contextos.
Un ejemplo de patrón de arquitectura en contexto empresarial
Consideremos un ejemplo de un patrón de arquitectura en el contexto del desarrollo de aplicaciones empresariales.
Supongamos que una empresa necesita desarrollar una nueva aplicación basada en web para gestionar relaciones con clientes. Una de las principales dificultades que enfrentan es cómo garantizar que la aplicación sea escalable y pueda manejar un gran número de usuarios concurrentes.
Utilizando la plantilla de patrón de arquitectura descrita anteriormente, podemos crear un patrón para abordar este problema:
1. Nombre del patrón: Aplicación web escalable
2. Problema: Desarrollar una aplicación basada en web para gestionar relaciones con clientes que pueda manejar un gran número de usuarios concurrentes.
3. Contexto: Una empresa necesita desarrollar una nueva aplicación basada en web para gestionar relaciones con clientes. La aplicación será accedida por un gran número de usuarios y debe ser escalable para manejar los periodos de mayor uso.
4. Solución: El patrón de Aplicación web escalable proporciona una solución para desarrollar una aplicación basada en web que pueda manejar un gran número de usuarios concurrentes. Los elementos clave del patrón incluyen:
- Balanceo de carga: distribuir las solicitudes entrantes entre múltiples servidores para garantizar que ningún servidor individual se sobrecargue.
- Caché: utilizar caché en memoria para almacenar datos frecuentemente accedidos y reducir la carga sobre la base de datos.
- Escalado horizontal: agregar servidores adicionales a la infraestructura para manejar una carga aumentada.
- Fragmentación de la base de datos: dividir la base de datos en particiones más pequeñas para distribuir la carga entre múltiples servidores.
5. Beneficios: Al utilizar el patrón de Aplicación web escalable, la empresa puede garantizar que su aplicación pueda manejar un gran número de usuarios concurrentes sin experimentar problemas de rendimiento ni tiempos de inactividad. Esto puede mejorar la satisfacción del cliente y aumentar los ingresos al asegurar que la aplicación esté siempre disponible.
6. Compromisos: El patrón de Aplicación web escalable requiere infraestructura y recursos adicionales para su implementación, lo que puede aumentar los costos. Además, implementar el balanceo de carga y la caché puede añadir complejidad a la arquitectura de la aplicación.
7. Implementación: Para implementar el patrón de aplicación web escalable, la empresa debería considerar el uso de un equilibrador de carga como NGINX, implementar el almacenamiento en caché utilizando una tecnología como Redis o Memcached, y escalar horizontalmente la aplicación utilizando una plataforma en la nube como AWS o Azure. La fragmentación de la base de datos se puede implementar utilizando una tecnología de base de datos como MongoDB.
8. Patrones relacionados: Patrones relacionados que podrían ser útiles junto con el patrón de aplicación web escalable incluyen:
- Arquitectura de microservicios: dividir la aplicación en servicios más pequeños y fáciles de gestionar que pueden escalarse de forma independiente.
- Puerta de enlace de API: proporcionar un único punto de entrada para acceder a los servicios de la aplicación y gestionar el tráfico.
9. Referencias: Algunas referencias que podrían ser útiles al desarrollar el patrón de aplicación web escalable incluyen:
- High Scalability (blog):
- Construcción de sitios web escalables (libro) por Cal Henderson
Al utilizar este patrón de arquitectura, la empresa puede ahorrar tiempo y esfuerzo al desarrollar una aplicación web escalable para gestionar relaciones con clientes. El patrón ofrece una solución probada a un problema común y puede adaptarse fácilmente para satisfacer las necesidades y limitaciones específicas de la empresa.
Ejemplo de un patrón de arquitectura en el contexto de inicio de sesión único
Aquí hay un ejemplo de un patrón de arquitectura en el contexto de inicio de sesión único (SSO):

1. Nombre del patrón: Inicio de sesión único (SSO)
2. Problema: Varias aplicaciones dentro de una organización requieren que los usuarios se autentiquen por separado, lo que conlleva una mala experiencia de usuario y un aumento en la carga administrativa para gestionar las cuentas de usuarios.
3. Contexto: Una organización tiene múltiples aplicaciones que requieren que los usuarios se autentiquen por separado, lo que causa frustración y confusión para los usuarios. La organización desea proporcionar una experiencia de usuario fluida permitiendo que los usuarios se autentiquen una vez y accedan a todas las aplicaciones sin tener que volver a introducir sus credenciales.
4. Solución: El patrón de inicio de sesión único proporciona una solución para permitir que los usuarios se autentiquen una vez y accedan a múltiples aplicaciones sin tener que volver a introducir sus credenciales. Los elementos clave del patrón incluyen:
- Proveedor de identidad (IdP): un servicio centralizado que autentica a los usuarios y proporciona tokens o afirmaciones que pueden usarse para acceder a otras aplicaciones.
- Proveedor de servicios (SP): una aplicación o servicio que depende del IdP para autenticar a los usuarios y proporciona acceso basado en los tokens o afirmaciones proporcionados por el IdP.
- Protocolos estándar: utilizar protocolos de la industria como SAML, OAuth o OpenID Connect para habilitar la comunicación entre el IdP y los SPs.
5. Beneficios: Al utilizar el patrón de inicio de sesión único, la organización puede proporcionar una experiencia de usuario fluida y reducir la carga administrativa para gestionar las cuentas de usuarios. Los usuarios solo necesitan autenticarse una vez y luego pueden acceder a todas las aplicaciones sin tener que recordar múltiples conjuntos de credenciales. Esto puede mejorar la satisfacción del usuario y reducir los costos de soporte del servicio de ayuda.
6. Compromisos: Implementar el patrón de inicio de sesión único requiere infraestructura y recursos adicionales para su implementación, lo que puede aumentar los costos. Además, la integración con aplicaciones existentes puede requerir desarrollo personalizado o configuración, lo que puede añadir complejidad.
7. Implementación: Para implementar el patrón de inicio de sesión único, la organización debe seleccionar un proveedor de identidad que admita protocolos de estándar industrial, como SAML, OAuth u OpenID Connect. Los proveedores de servicios deben configurarse para confiar en el IdP para la autenticación y autorización. Las aplicaciones existentes podrían necesitar integrarse con el IdP, lo que podría requerir desarrollo personalizado o configuración.
8. Patrones relacionados: Patrones relacionados que podrían ser útiles junto con el patrón de inicio de sesión único incluyen:
- Identidad federada: extender el patrón de inicio de sesión único para admitir la autenticación entre organizaciones o dominios.
- Control de acceso basado en atributos: utilizar los atributos de usuario proporcionados por el IdP para controlar el acceso a los recursos dentro de las aplicaciones.
9. Referencias: Algunas referencias que podrían ser útiles al desarrollar el patrón de inicio de sesión único incluyen:
Al utilizar este patrón de arquitectura, la organización puede mejorar la experiencia del usuario y reducir la carga administrativa al implementar una solución de inicio de sesión único que permita a los usuarios acceder a múltiples aplicaciones sin tener que volver a introducir sus credenciales. El patrón ofrece una solución probada a un problema común y puede adaptarse fácilmente para satisfacer las necesidades y limitaciones específicas de la organización.
Patrones de arquitectura empresarial frente a patrones de arquitectura de software
Los patrones de arquitectura empresarial y los patrones de arquitectura de software son conceptos relacionados pero distintos.
Los patrones de arquitectura de software se centran en el diseño e implementación de sistemas o aplicaciones de software individuales. Proporcionan un conjunto de directrices y mejores prácticas para el diseño e implementación de los componentes de software de un sistema, como sus módulos, interfaces e interacciones.
Por otro lado, los patrones de arquitectura empresarial se centran en el diseño y alineación de múltiples sistemas y aplicaciones de software dentro de una organización. Proporcionan un conjunto de directrices y mejores prácticas para el diseño e implementación de la arquitectura general de una empresa, incluyendo sus procesos de negocio, estructuras de datos e infraestructura tecnológica.
Los patrones de arquitectura empresarial abordan típicamente cuestiones como la integración de sistemas, la interoperabilidad y la escalabilidad, que no suelen cubrirse con los patrones de arquitectura de software. También consideran el contexto empresarial más amplio en el que se despliegan los sistemas de software, y buscan alinear los sistemas de TI con los objetivos y metas organizacionales.
Ejemplos de patrones de arquitectura empresarial incluyen Arquitectura Orientada a Servicios (SOA), Gestión de Procesos de Negocio (BPM) y Patrones de Integración Empresarial (EIP), mientras que ejemplos de patrones de arquitectura de software incluyen Modelo-Vista-Controlador (MVC), Microservicios y Arquitectura en Capas.

Patrones de arquitectura de software
Los patrones de arquitectura de software son soluciones reutilizables para problemas comunes en el diseño de software. Proporcionan un enfoque estructurado para el diseño e implementación de sistemas de software, al definir un conjunto de reglas y directrices que ayudan a garantizar que el sistema sea robusto, escalable y mantenible.
Los patrones de arquitectura de software proporcionan una visión de alto nivel del sistema, identificando sus componentes clave y sus interacciones. Definen las relaciones entre estos componentes y proporcionan un conjunto de reglas sobre cómo deben comunicarse y trabajar juntos.
Al utilizar patrones de arquitectura de software, los desarrolladores pueden ahorrar tiempo y esfuerzo al reutilizar soluciones probadas para problemas comunes, en lugar de comenzar desde cero con cada nuevo proyecto. Esto puede ayudar a mejorar la calidad del software resultante, así como reducir el tiempo y los costos de desarrollo.
Algunos ejemplos de patrones de arquitectura de software incluyen Modelo-Vista-Controlador (MVC), Microservicios, Arquitectura en Capas, Arquitectura Orientada a Servicios (SOA) y Arquitectura Dirigida por Eventos (EDA).
A continuación se presentan algunos patrones de arquitectura de software populares:
- Patrón Modelo-Vista-Controlador (MVC): Este patrón separa una aplicación en tres componentes interconectados – el Modelo, la Vista y el Controlador – para ayudar a gestionar la complejidad y lograr la separación de preocupaciones.
- Arquitectura de microservicios: Este patrón descompone una aplicación en servicios más pequeños, que se pueden desplegar de forma independiente y que pueden desarrollarse, desplegarse y escalarse por separado.
- Arquitectura en capas: Este patrón divide una aplicación en capas lógicas, cada una responsable de un aspecto específico de la funcionalidad de la aplicación, para proporcionar modularidad y separación de preocupaciones.
- Arquitectura Orientada a Servicios (SOA): Este patrón es un enfoque arquitectónico para construir sistemas distribuidos que utilizan servicios como bloques fundamentales.
- Arquitectura basada en eventos (EDA): Este patrón enfatiza la producción, detección, consumo y reacción a eventos que ocurren dentro de un sistema, permitiendo una arquitectura más flexible y escalable.
- Diseño orientado al dominio (DDD): Este patrón fomenta el uso de un lenguaje común y un modelo para describir el dominio de un problema, lo que resulta en una base de código más mantenible y comprensible.
- Arquitectura hexagonal: Este patrón estructura una aplicación alrededor de un núcleo central, con puertas y adaptadores que permiten la comunicación entre el núcleo y los sistemas externos.
- CQRS (Separación de responsabilidades de comandos y consultas): Este patrón separa los modelos de lectura y escritura de una aplicación, permitiendo una consulta más eficiente y una escalabilidad mejorada.
- Arquitectura reactiva: Este patrón es un conjunto de principios de diseño que buscan crear sistemas resilientes, escalables y responsivos que pueden reaccionar a los cambios en el entorno.
- Arquitectura limpia: Este patrón enfatiza la separación de responsabilidades entre las diferentes capas de una aplicación, con el objetivo de producir código fácil de leer, probar y mantener.
Resumen
Los patrones de arquitectura son una técnica de diseño valiosa en la arquitectura empresarial que ofrece a los arquitectos una forma de diseñar soluciones efectivas para problemas comunes. Al proporcionar un plano para diseñar soluciones que se han demostrado efectivas en el pasado, los patrones de arquitectura pueden ayudar a los arquitectos a ahorrar tiempo y recursos, al tiempo que mejoran la calidad general de la solución. En este artículo, hemos proporcionado un ejemplo de un patrón de arquitectura en el contexto del desarrollo de aplicaciones empresariales, específicamente en el contexto de inicio de sesión único (SSO). Al utilizar el patrón de inicio de sesión único, las organizaciones pueden ofrecer una experiencia de usuario fluida y reducir la carga administrativa para gestionar cuentas de usuarios, al tiempo que mejoran la satisfacción del usuario y reducen los costos de soporte del servicio de ayuda.











