Table of Contents
En el Global Software Architecture Summit estuvimos discutiendo mucho sobre los patrones de la arquitectura de software y decidí escribir un artículo sobre ello, destacando las ideas de los principales arquitectos de software.
¿Qué es la arquitectura de software?
La arquitectura de software es una disciplina muy relevante en el mundo del desarrollo web o app. En este artículo, además vamos a profundizar sobre los diferentes tipos de arquitectura de software que existen, pero antes veamos que significa esta ciencia.
En el mundo del desarrollo existen complejos problemas a tratar. Si bien es por todos sabido que el software puede ser mas o menos complejos lo más probable es que vaya mejorándose para cubrir nuevas necesidades o funcionalidades. Es por ello que la elección de una estructura o método en el que encajar todas las «piezas» o componentes es vital para obrar un sistema escalabre que de solución a los problemas del cliente.
La arquitectura de software, es precisamente eso, un método que se utiliza de base para el diseño de las diferentes funcionalidades. De esta forma proporcionamos agilidad en el desarrollo además de obtener una performance óptima.
¿Qué son los patrones de la arquitectura de software?
Los patrones de software son formas de capturar estructuras de diseño de probada eficacia, para que puedan ser reutilizadas. Los arquitectos de software han estado buscando formas de capturar y reutilizar el conocimiento arquitectónico que han probado ser exitosos en el pasado.
Más específicamente, un patrón arquitectónico es un paquete de decisiones de diseño que se encuentra repetidamente en la práctica, tiene propiedades bien definidas que pueden ser reutilizadas y describe una clase de arquitecturas.
El desarrollo de una arquitectura de software puede ser visto como un proceso de selección, adaptación y combinación de patrones. El arquitecto de software debe decidir cómo instanciar un patrón, cómo hacerlo encajar en el contexto específico y las limitaciones del problema. Y más adelante lo discutiremos con más detalle.
Mark Richards escribió un libro llamado “Software Architecture Patterns” según el que existen 5 patrones principales de arquitectura de software: microkernel, microservicios, arquitectura en capas, basada en eventos y basada en el espacio.
5 tipos de patrones en Arquitectura de Software
1. Sistemas de Software Microkernel
El patrón arquitectónico Microkernel también se conoce como un patrón arquitectónico enchufable. Se utiliza típicamente cuando los equipos de software crean sistemas con componentes intercambiables.
Se aplica a los sistemas de software que deben ser capaces de adaptarse a los requisitos cambiantes del sistema. Separa un núcleo funcional mínimo de la funcionalidad ampliada y de las partes específicas del cliente. También sirve de enchufe para conectar estas extensiones y coordinar su colaboración.
El patrón de la arquitectura Microkernel es un patrón natural para implementar aplicaciones basadas en productos. Y una aplicación basada en el producto es aquella que está empaquetada y disponible para su descarga en versiones como un típico producto de terceros. Sin embargo, muchas empresas también desarrollan y lanzan sus aplicaciones empresariales internas como productos de software, completas con versiones, notas de lanzamiento y funciones enchufables.
El patrón de arquitectura Microkernel permite añadir características adicionales de la aplicación como plug-ins a la aplicación central, proporcionando extensibilidad así como separación y aislamiento de características.
El patrón de la arquitectura Microkernel consta de dos tipos de componentes de arquitectura: un sistema central y módulos enchufables. La lógica de la aplicación se divide entre módulos enchufables independientes y el sistema básico del núcleo, lo que proporciona extensibilidad, flexibilidad y aislamiento de las características de la aplicación y la lógica de procesamiento personalizada. Y el sistema central del patrón de arquitectura del Microkernel contiene tradicionalmente sólo la funcionalidad mínima necesaria para que el sistema sea operativo.
EJEMPLOS DEL SISTEMA MODELO MICROKERNEL
Quizás el mejor ejemplo de la arquitectura del microkernel es el IDE de Eclipse. La descarga del producto básico de Eclipse le proporciona poco más que un editor. Sin embargo, una vez que se empiezan a agregar plugins, se convierte en un producto altamente personalizable y útil.
Ventajas del diseño basado en el patrón de software Microkernel:
- Gran flexibilidad y extensibilidad
- Algunas implementaciones web permiten añadir plugins mientras la aplicación se está ejecutando
- Buena portabilidad
- Facilidad de despliegue
- Respuesta rápida a un entorno en constante cambio que implica un entorno empresarial
- Los módulos enchufables pueden probarse de forma aislada y pueden ser fácilmente burlados por el sistema central para demostrar o hacer un prototipo de una característica particular con poco o ningún cambio en el sistema central.
- Alto rendimiento ya que puede personalizar y racionalizar las aplicaciones para incluir sólo las características que necesita.
Casos de uso del modelo de patrón Microkernel:
- Aplicaciones que toman datos de diferentes fuentes, los transforman y los escriben a diferentes destinos
- Aplicaciones de flujo de trabajo
- Solicitudes de programación de tareas y trabajos
2. Patrón de Arquitectura Microservicios
Cuando escribes tu solicitud como un conjunto de microservicios, en realidad estás escribiendo múltiples solicitudes que funcionarán juntas. Cada microservicio tiene su propia responsabilidad y los equipos pueden desarrollarlos independientemente de otros microservicios. La única dependencia entre ellos es la comunicación. A medida que los microservicios se comunican entre sí, tendrás que asegurarte de que los mensajes enviados entre ellos sean compatibles con los anteriores.
Ventajas del modelo de Software de Microservicios
- Puedes escribir, mantener y desplegar cada microservicio por separado
- Fácil de escalar, ya que sólo se pueden escalar los microservicios que necesitan ser escalados
- Es más fácil reescribir las piezas de la aplicación porque son más pequeñas y menos acopladas a otras partes
- Los nuevos miembros del equipo deben ser rápidamente productivos
- La aplicación debe ser fácil de entender y modificar
- Altamente mantenible y comprobable – permite un desarrollo y despliegue rápido y frecuente
- Desplegable de forma independiente – permite a un equipo desplegar su servicio sin tener que coordinar con otros equipos
Casos de uso de este modelo de diseño de software
- Sitios web con pequeños componentes
- Centros de datos corporativos con límites bien definidos
- El rápido desarrollo de nuevos negocios y aplicaciones web
- Los equipos de desarrollo que se extienden, a menudo por todo el mundo
3.Patrón de arquitectura de software en capas
El patrón de software más común es el patrón arquitectónico en capas. Los patrones de arquitectura en capas son patrones de n niveles donde los componentes están organizados en capas horizontales. Este es el método tradicional para diseñar la mayoría de los programas informáticos y está destinado a ser auto-independiente. Esto significa que todos los componentes están interconectados pero no dependen unos de otros. Cada capa del patrón de arquitectura en capas tiene un papel y una responsabilidad específicos dentro de la aplicación. Por ejemplo, una capa de presentación se encargaría de manejar toda la interfaz de usuario y la lógica de comunicación del navegador, mientras que una capa empresarial se encargaría de ejecutar las reglas empresariales específicas asociadas a la solicitud.
Una de las características poderosas del patrón de arquitectura en capas es la separación de las preocupaciones entre los componentes. Los componentes dentro de una capa específica se ocupan sólo de la lógica que pertenece a esa capa.
Ventajas del modelo d software basado en capa
- Alta comprobabilidad porque los componentes pertenecen a capas específicas de la arquitectura, otras capas pueden ser burladas o desviadas, haciendo que este patrón sea relativamente fácil de comprobar..
- Alta facilidad de desarrollo porque este patrón es muy conocido y no es excesivamente complejo de implementar, además la mayoría de las empresas desarrollan aplicaciones separando conjuntos de habilidades por capas, este patrón se convierte en una elección natural para la mayoría de los desarrollos de aplicaciones empresariales.
- Mantenible.
- Fácil de asignar «roles» separados.
- Fácil de actualizar y mejorar las capas por separado.
Casos de uso del patrón de software que se basa en las capas
- Aplicaciones estándar de línea de negocios que hacen más que sólo operaciones CRUD
- Nuevas aplicaciones que necesitan ser construidas rápidamente
- Equipos de desarrolladores inexpertos que aún no entienden otras arquitecturas
- Aplicaciones que requieren normas estrictas de mantenimiento y comprobabilidad
4.Tipo de patrón Event-based pattern
Esta es la arquitectura asíncrona distribuida más común utilizada para desarrollar un sistema altamente escalable. La arquitectura consiste en componentes de procesamiento de eventos de un solo propósito que escuchan los eventos y los procesan asincrónicamente. La arquitectura impulsada por eventos construye una unidad central que acepta todos los datos y luego los delega a los módulos separados que manejan el tipo particular.
Ventajas del diseño de software basado en el modelo Event-Based
- Son fácilmente adaptables a entornos complejos, a menudo caóticos.
- Escala fácilmente.
- Son fácilmente ampliables cuando aparecen nuevos tipos de eventos.
Casos de uso del modelo de diseño de software basado en el patrón Event-based
- Sistemas asíncronos con flujo de datos asíncronos.
- Interfaces de usuario
5. Patrón de software basado en el espacio
El patrón de arquitectura basada en el espacio está diseñado específicamente para abordar y resolver problemas de escalabilidad y concurrencia. También es un patrón de arquitectura útil para las aplicaciones que tienen volúmenes de usuarios concurrentes variables e impredecibles. La alta escalabilidad se logra eliminando la restricción de la base de datos central y utilizando en su lugar cuadrículas de datos replicados en memoria.
La arquitectura basada en el espacio está diseñada para evitar el colapso funcional bajo una gran carga al dividir tanto el procesamiento como el almacenamiento entre múltiples un servidor y otro.
Ventajas del modelo basado en el espacio
- Responde rápidamente a un entorno en constante cambio.
- Aunque las arquitecturas basadas en el espacio no suelen estar desacopladas y distribuidas, son dinámicas, y las sofisticadas herramientas basadas en la nube permiten «empujar» fácilmente las aplicaciones a los servidores, simplificando su despliegue.
- Se logra un alto rendimiento en el servidor gracias al acceso a los datos en memoria y a los mecanismos de almacenamiento en caché incorporados en esta pauta.
- La elevada escalabilidad se debe a que se depende poco o nada de una base de datos centralizada, con lo que se elimina esencialmente este cuello de botella limitante de la ecuación de la escalabilidad en un servidor.
Casos de uso del diseño de software basado en el patrón espacio
- Datos de gran volumen como flujos de clicks y registros de usuarios
- Datos de bajo valor que pueden perderse ocasionalmente sin grandes consecuencias
- Redes sociales
Espero que este artículo le haya sido útil, si cree que hay otros patrones de arquitectura de software que deberían estar listados aquí, ¡siéntase libre de compartirlos en la sección de comentarios abajo! Y si tiene alguna pregunta, envíenos un mensaje, estaremos encantados de ayudarle, ya que es nuestra especialidad.
Author
-
Ekaterina Novoseltseva is an experienced CMO and Board Director. Professor in prestigious Business Schools in Barcelona. Teaching about digital business design. Right now Ekaterina is a CMO at Apiumhub - software development hub based in Barcelona and organiser of Global Software Architecture Summit. Ekaterina is proud of having done software projects for companies like Tous, Inditex, Mango, Etnia, Adidas and many others. Ekaterina was taking active part in the Apiumhub office opening in Paseo de Gracia and in helping companies like Bitpanda open their tech hubs in Barcelona.
Ver todas las entradas
More to Explore