Ideas clave
1. Arquitectura en capas: El fundamento
El patrón de arquitectura en capas se adapta estrechamente a las estructuras de comunicación y organizativas tradicionales de TI que se encuentran en la mayoría de las empresas, lo que lo convierte en una opción natural para la mayoría de los esfuerzos de desarrollo de aplicaciones empresariales.
Común y familiar. La arquitectura en capas, también conocida como arquitectura n-tier, es el patrón más común y ampliamente utilizado en aplicaciones Java EE. Organiza los componentes en capas horizontales, cada una con un rol específico, como presentación, negocio, persistencia y base de datos. Esta estructura refleja las estructuras organizativas tradicionales de TI, lo que la convierte en una opción natural para muchas aplicaciones empresariales.
Separación de responsabilidades. Cada capa maneja una lógica específica, lo que fomenta la modularidad y facilita el desarrollo, las pruebas y el mantenimiento de las aplicaciones. Por ejemplo, la capa de presentación se encarga de la lógica de la interfaz de usuario, mientras que la capa de negocio gestiona las reglas de negocio. Esta separación permite definir roles y responsabilidades claros, simplificando el desarrollo y el mantenimiento.
- Capas de aislamiento: Los cambios en una capa generalmente no afectan a las demás.
- Capas cerradas: Las solicitudes deben pasar por cada capa de manera secuencial.
- Capas abiertas: Permiten omitir ciertas capas para mayor eficiencia.
Tendencias monolíticas. Aunque es fácil de implementar, la arquitectura en capas a menudo conduce a aplicaciones monolíticas, que pueden ser difíciles de escalar y desplegar. Esto puede dar lugar a componentes estrechamente acoplados, lo que hace que los cambios sean engorrosos y requieran el despliegue de grandes partes de la aplicación. Este patrón es un buen punto de partida, pero puede no ser adecuado para necesidades complejas y de alta escalabilidad.
2. Arquitectura dirigida por eventos: Agilidad asíncrona
El patrón de arquitectura dirigida por eventos es un patrón de arquitectura asíncrona distribuida muy popular que se utiliza para producir aplicaciones altamente escalables.
Desacoplada y escalable. La arquitectura dirigida por eventos es un patrón distribuido y asíncrono, ideal para aplicaciones altamente escalables. Utiliza componentes de procesamiento de eventos desacoplados y de propósito único que reaccionan a los eventos. Este patrón se presenta en dos topologías principales: mediador y bróker. La topología de mediador utiliza un mediador central para orquestar los eventos, mientras que la topología de bróker encadena los eventos sin un mediador central.
Mediador frente a Bróker. La topología de mediador es adecuada para eventos complejos que requieren orquestación, utilizando colas de eventos, un mediador, canales de eventos y procesadores de eventos. La topología de bróker es mejor para flujos de eventos más simples, distribuyendo el flujo de mensajes a través de los procesadores de eventos mediante un bróker de mensajería.
- Mediador: Orquestación centralizada, ideal para flujos de trabajo complejos.
- Bróker: Descentralizado, ideal para cadenas de eventos simples.
- Asíncrono: Permite un alto rendimiento mediante operaciones paralelas.
Implementación compleja. Implementar una arquitectura dirigida por eventos puede ser complejo debido a su naturaleza distribuida, lo que requiere una consideración cuidadosa de cuestiones como la disponibilidad de procesos remotos y el manejo de errores. También carece de transacciones atómicas entre los procesadores de eventos, lo que exige un diseño minucioso de la granularidad de los eventos. A pesar de la complejidad, ofrece una alta agilidad y escalabilidad.
3. Arquitectura de micronúcleo: Extensibilidad del producto
El patrón de arquitectura de micronúcleo (a veces denominado patrón de arquitectura de complementos o plug-ins) es un patrón natural para implementar aplicaciones basadas en productos.
Núcleo y complementos. La arquitectura de micronúcleo, también conocida como arquitectura de plug-ins, es ideal para aplicaciones basadas en productos. Consta de un sistema central con una funcionalidad mínima y módulos de complementos que añaden características especializadas. Este patrón permite la extensibilidad, la flexibilidad y el aislamiento de las características de la aplicación.
Extensibilidad y aislamiento. El sistema central contiene la lógica de negocio básica, mientras que los módulos de complementos proporcionan código personalizado y características adicionales. Los complementos son independientes, lo que permite añadirlos, eliminarlos y modificarlos fácilmente sin afectar al sistema central.
- Sistema central: Funcionalidad mínima, lógica de negocio general.
- Módulos de complementos: Procesamiento especializado, código personalizado.
- Registro de complementos: Gestiona los complementos disponibles.
Diseño evolutivo. Este patrón admite el diseño evolutivo y el desarrollo incremental, lo que permite añadir características a lo largo del tiempo sin realizar cambios significativos en el sistema central. Es un buen punto de partida para aplicaciones basadas en productos, ya que ofrece control sobre qué usuarios obtienen qué características. Sin embargo, puede ser complejo de implementar debido a la gobernanza de contratos y a las opciones de conectividad de los complementos.
4. Arquitectura de microservicios: Escalabilidad independiente
El patrón de arquitectura de microservicios está ganando terreno rápidamente en la industria como una alternativa viable a las aplicaciones monolíticas y a las arquitecturas orientadas a servicios.
Unidades desplegadas por separado. La arquitectura de microservicios se caracteriza por componentes de servicio desplegados por separado, lo que permite un despliegue más sencillo, una mayor escalabilidad y un alto desacoplamiento. Los componentes de servicio pueden variar en granularidad, desde funciones de propósito único hasta partes independientes de una gran aplicación. Este patrón evolucionó a partir de los problemas de las aplicaciones monolíticas y SOA.
API, aplicación y mensajería. Existen tres topologías principales: basada en API REST, basada en aplicaciones REST y mensajería centralizada. La topología de API utiliza servicios de granularidad fina a los que se accede a través de una API web, mientras que la topología de aplicación utiliza servicios más grandes a los que se accede a través de una aplicación web. La topología de mensajería utiliza un bróker de mensajería para el acceso remoto.
- API REST: Servicios de granularidad fina, acceso mediante API web.
- Aplicación REST: Servicios de granularidad gruesa, acceso mediante aplicación web.
- Mensajería centralizada: Bróker de mensajería para acceso remoto.
Evitar la orquestación. Un desafío clave es determinar la granularidad correcta de los componentes de servicio para evitar la orquestación. La comunicación entre servicios debe minimizarse, y la funcionalidad compartida puede duplicarse entre los servicios. Este patrón ofrece una alta agilidad, escalabilidad y facilidad de prueba, pero puede ser complejo debido a su naturaleza distribuida.
5. Arquitectura basada en el espacio: Escalabilidad extrema
El patrón de arquitectura basada en el espacio está diseñado específicamente para abordar y resolver problemas de escalabilidad y concurrencia.
Grillas de datos en memoria. La arquitectura basada en el espacio, también conocida como arquitectura en la nube, está diseñada para una escalabilidad y concurrencia extremas. Elimina el cuello de botella de la base de datos central mediante el uso de grillas de datos en memoria replicadas. Las unidades de procesamiento se pueden iniciar y apagar dinámicamente en función de la carga de usuarios, proporcionando una escalabilidad variable.
Unidades de procesamiento y middleware. La arquitectura consta de unidades de procesamiento que contienen componentes de aplicación, grillas de datos en memoria y un motor de replicación. El middleware virtualizado gestiona las tareas internas y las comunicaciones, incluyendo la mensajería, los datos, las grillas de procesamiento y un gestor de despliegue.
- Unidad de procesamiento: Componentes de aplicación, grilla de datos en memoria.
- Middleware virtualizado: Gestiona las solicitudes, la replicación de datos y el despliegue.
- Grilla de mensajería: Gestiona las solicitudes de entrada y la información de la sesión.
Escalabilidad y concurrencia. La grilla de datos replica los datos entre las unidades de procesamiento, asegurando que cada unidad tenga los mismos datos. La grilla de mensajería reenvía las solicitudes a las unidades de procesamiento disponibles. Este patrón es ideal para aplicaciones de gran volumen con cargas de usuarios variables, proporcionando una escalabilidad casi infinita al eliminar el cuello de botella de la base de datos.
6. Elegir el patrón adecuado: El contexto es clave
Conocer las características, fortalezas y debilidades de cada patrón de arquitectura es necesario para elegir el que mejor se adapte a las necesidades y objetivos específicos de su negocio.
No existe una solución única. No existe un único patrón de arquitectura que sea el mejor; la elección correcta depende de las necesidades y objetivos específicos de la aplicación. Cada patrón tiene sus fortalezas y debilidades, y comprenderlas es crucial para tomar decisiones informadas. Considere factores como la escalabilidad, la agilidad, el rendimiento y la facilidad de desarrollo.
Factores contextuales. La arquitectura en capas es un buen punto de partida, pero puede no ser adecuada para necesidades de alta escalabilidad. La arquitectura dirigida por eventos es ideal para aplicaciones asíncronas y escalables. La arquitectura de micronúcleo es la mejor para aplicaciones basadas en productos. La arquitectura de microservicios es adecuada para la escalabilidad independiente, y la arquitectura basada en el espacio es para una escalabilidad extrema.
- En capas: Buen punto de partida, pero puede volverse monolítica.
- Dirigida por eventos: Asíncrona, escalable, compleja.
- Micronúcleo: Basada en productos, extensible, compleja.
- Microservicios: Escalabilidad independiente, distribuida.
- Basada en el espacio: Escalabilidad extrema, datos en memoria.
Justificar las decisiones. Como arquitecto, debe justificar sus decisiones de arquitectura, especialmente al elegir un patrón específico. El objetivo es seleccionar el patrón que mejor se alinee con sus necesidades y objetivos de negocio, considerando las ventajas y desventajas de cada opción. Comprender las características de cada patrón es esencial para tomar la decisión correcta.
7. Antipatrones de arquitectura: Errores que se deben evitar
Las aplicaciones que carecen de una arquitectura formal suelen estar estrechamente acopladas, son frágiles, difíciles de cambiar y carecen de una visión o dirección clara.
Gran bola de lodo. El antipatrón de la "gran bola de lodo" ocurre cuando las aplicaciones carecen de una arquitectura formal, lo que resulta en un código fuente desorganizado con roles y responsabilidades poco claros. Esto conduce a aplicaciones estrechamente acopladas y frágiles que son difíciles de cambiar y mantener.
Sumidero de arquitectura. El antipatrón del "sumidero de arquitectura" ocurre cuando las solicitudes fluyen a través de múltiples capas con poca o ninguna lógica realizada en cada capa. Esto resulta en un procesamiento ineficiente y puede indicar que la arquitectura en capas no se está utilizando de manera efectiva.
- Gran bola de lodo: Falta de arquitectura formal, código desorganizado.
- Sumidero de arquitectura: Procesamiento de paso directo, capas ineficientes.
- Estrechamente acoplado: Interdependencias entre componentes, difícil de cambiar.
Consecuencias de una mala arquitectura. Las malas elecciones de arquitectura conducen a aplicaciones que son difíciles de escalar, probar y desplegar. Es importante comprender las ventajas y desventajas de cada patrón de arquitectura y elegir el que mejor se adapte a las necesidades específicas de la aplicación. Evitar estos antipatrones es crucial para construir sistemas robustos y fáciles de mantener.
Characters
Plot Devices
Analysis
Resumen de reseñas
Patrones de arquitectura de software recibe críticas mayoritariamente positivas, con una calificación promedio de 3.64/5. Los lectores aprecian su concisa descripción general de los patrones de arquitectura más comunes, sus explicaciones claras y sus útiles comparaciones. La brevedad del libro se percibe tanto como una fortaleza como una debilidad, ya que ofrece una introducción rápida pero carece de profundidad. Muchos lo consideran valioso para principiantes y como un repaso para desarrolladores experimentados. Algunos critican los ejemplos desactualizados y ciertos análisis de patrones que resultan controvertidos. En general, se recomienda como un punto de partida para comprender los conceptos de la arquitectura de software.
También leyeron
Descargar PDF
Descargar EPUB
.epub digital book format is ideal for reading ebooks on phones, tablets, and e-readers.