¿Alguna vez se preguntó cómo se diseñan los sistemas de gran escala empresarial? Antes de que comience un gran desarrollo de software, debemos elegir una arquitectura adecuada que nos proporcione la funcionalidad y los atributos de calidad deseados. Por lo tanto, debemos entender las diferentes arquitecturas antes de aplicarlas a nuestro diseño.
¿Qué es un Patrón Arquitectónico?
Según Wikipedia,
Un patrón arquitectónico es una solución general y reutilizable para un problema común en la arquitectura de software dentro de un contexto dado. Los patrones arquitectónicos son similares al patrón de diseño de software pero tienen un alcance más amplio.
En este artículo, explicaré brevemente los siguientes 10 patrones arquitectónicos comunes con su uso, pros y contras.
- Layered pattern (Patron en capa)
- Client-server pattern (Patron cliente-servidor)
- Master-slave pattern (Patron maestro-esclavo)
- Pipe-filter pattern (Patron filtro de tubería)
- Broker pattern (Patron de intermediario)
- Peer-to-peer pattern (Patron de igual a igual )
- Event-bus pattern (Patron de bus de eventos)
- Model-view-controller pattern (Patron modelo-vista-controlador)
- Blackboard pattern (Patron de pizarra)
- Interpreter pattern (Patron de interprete)
1. Layered pattern (Patron en capa)
Este patrón se puede usar para estructurar programas que se pueden descomponer en grupos de subtareas, cada una de las cuales se encuentra en un nivel particular de abstracción. Cada capa proporciona servicios a la siguiente capa superior.
Las 4 capas más comunes de un sistema de información general son las siguientes.
- Capa de presentación (también conocida como capa de interfaz de usuario )
- Capa de aplicación (también conocida como capa de servicio )
- Capa de lógica (también conocida como capa de dominio )
- Capa de acceso a datos (también conocida como capa de persistencia )
Uso
- Aplicaciones generales de escritorio.
- Aplicaciones web de comercio electrónico.

2. Client-server pattern (Patrón cliente-servidor)
Este patrón consta de dos partes; un servidor y varios clientes . El componente de servidor proporcionará servicios a varios componentes de cliente. Los clientes solicitan servicios del servidor y el servidor proporciona servicios relevantes a esos clientes. Además, el servidor continúa escuchando las solicitudes de los clientes.
Uso
- Aplicaciones en línea como correo electrónico, intercambio de documentos y banca.

3. Master-slave pattern (Patrón maestro-esclavo)
Este patrón consta de dos partes; amo y esclavos . El componente maestro distribuye el trabajo entre componentes esclavos idénticos y calcula un resultado final a partir de los resultados que devuelven los esclavos.
Uso
- En la replicación de bases de datos, la base de datos maestra se considera la fuente autorizada y las bases de datos esclavas se sincronizan con ella.
- Periféricos conectados a un bus en un sistema informático (unidades maestras y esclavas).

4. Pipe-filter pattern (Patrón de tubería-filtro)
Este patrón se puede utilizar para estructurar sistemas que producen y procesan un flujo de datos. Cada paso de procesamiento está encerrado dentro de un componente de filtro . Los datos a ser procesados se pasan a través de tuberías . Estas tuberías se pueden utilizar para el almacenamiento en búfer o para fines de sincronización.
Uso
- Compiladores. Los filtros consecutivos realizan análisis léxico, análisis sintáctico, análisis semántico y generación de código.
- Flujos de trabajo en bioinformática.

5. Broker pattern (Patrón de intermediario)
Este patrón se utiliza para estructurar sistemas distribuidos con componentes desacoplados. Estos componentes pueden interactuar entre sí mediante invocaciones de servicios remotos. Un componente intermediario es responsable de la coordinación de la comunicación entre los componentes .
Los servidores publican sus capacidades (servicios y características) a un corredor. Los clientes solicitan un servicio del corredor, y el corredor luego redirige al cliente a un servicio adecuado desde su registro.
Uso
- Software de intermediación de mensajes como Apache ActiveMQ , Apache Kafka , RabbitMQ y JBoss Messaging .

6. Peer-to-peer pattern (Patrón de igual a igual)
En este patrón, los componentes individuales se conocen como pares . Los pares pueden funcionar como cliente , solicitando servicios de otros pares, y como servidor , brindando servicios a otros pares. Un par puede actuar como cliente o como servidor o como ambos, y puede cambiar su rol dinámicamente con el tiempo.
Uso
- Redes de intercambio de archivos como Gnutella y G2 )
- Protocolos multimedia como P2PTV y PDTP .
- Productos basados en criptomonedas como Bitcoin y Blockchain

7. Event-bus pattern (Patrón de bus de eventos)
Este patrón trata principalmente con eventos y tiene 4 componentes principales; fuente de eventos, detector de eventos , canal y bus de eventos . Las fuentes publican mensajes en canales particulares en un bus de eventos. Los oyentes se suscriben a canales particulares. Los oyentes son notificados de los mensajes que se publican en un canal al que se han suscrito anteriormente.
Uso
- Desarrollo android
- Servicios de notificación

Patrón de bus de eventos
8. Model-view-controller pattern (Patrón modelo-vista-controlador)
Este patrón, también conocido como patrón MVC, divide una aplicación interactiva en 3 partes como,
- modelo : contiene la funcionalidad principal y los datos
- vista : muestra la información al usuario (se puede definir más de una vista)
- controlador : maneja la entrada del usuario
Esto se hace para separar las representaciones internas de la información de las formas en que se presenta y se acepta la información por parte del usuario. Desacopla los componentes y permite la reutilización eficiente del código.
Uso
- Arquitectura para aplicaciones World Wide Web en los principales lenguajes de programación.
- Frameworks web como Django y Rails .

9. Blackboard pattern (Patrón de pizarra)
Este patrón es útil para problemas para los que no se conocen estrategias de solución deterministas. El patrón de pizarra consta de 3 componentes principales.
- pizarra : una memoria global estructurada que contiene objetos del espacio de solución
- fuente de conocimiento : módulos especializados con su propia representación
- componente de control — selecciona, configura y ejecuta módulos.
Todos los componentes tienen acceso a la pizarra. Los componentes pueden producir nuevos objetos de datos que se agregan a la pizarra. Los componentes buscan tipos particulares de datos en la pizarra y pueden encontrarlos mediante la comparación de patrones con la fuente de conocimiento existente.
Uso
- Reconocimiento de voz
- Identificación y seguimiento de vehículos
- Identificación de la estructura de proteínas
- Interpretación de señales de sonar.

10. Interpreter pattern (Patrón de intérprete)
Este patrón se utiliza para diseñar un componente que interprete programas escritos en un lenguaje dedicado. Especifica principalmente cómo evaluar líneas de programas, conocidas como oraciones o expresiones escritas en un idioma en particular. La idea básica es tener una clase para cada símbolo del lenguaje.
Uso
- Lenguajes de consulta de bases de datos como SQL.
- Lenguajes utilizados para describir protocolos de comunicación.

Esperamos que hayas encontrado útil este artículo. Nos encantaría escuchar tus pensamientos.
Gracias por leer. 🙌