Ir al contenido principal

Patrones de Arquitectura

Son decisiones de dise帽o importantes ya tomadas para generar un esquema, estructura o tipo de comunicaci贸n entre componentes.

Dominio: Arquitectura de Software.

Patrones monol铆ticos vs distribuidos

  • Monol铆ticos: En este tipo de patrones, se entiende que existe una comunicaci贸n directa entre las partes del sistema, pero al distribuir dicho sistema este funciona como un ente 煤nico, esto dificulta la manutenci贸n del mismo pues no se pueden alterar partes especificas sin afectar al sistema en su totalidad, sin embargo, se puede desarrollar de manera m谩s r谩pida.
  • Distribuidos: En este caso, el patr贸n distribuido es aquel que despliega el sistema en forma seccionada, cada uno de los subsistemas funcionan como entes monol铆ticos de por si, esto facilita la manutenci贸n o la alteraci贸n de estos subsistemas sin da帽ar el sistema en su totalidad, sin embargo, se debe tener cuidado de generar inconvenientes de comunicaci贸n entre los subsistemas.

Gran Bola de Lodo: Es un patr贸n que surge del descuido y el caos, aquellos donde no se tomo en cuenta el concepto de arquitectura, ni se tomaron decisiones prudentes, por tanto el sistema queda diseminado sin orden y con una comunicaci贸n ineficiente que dificulta su crecimiento.

Modelo Vista Controlador

Modelo-vista-controlador (MVC) es un patr贸n de arquitectura de software, que separa los datos y la l贸gica de negocio de una aplicaci贸n de su representaci贸n y el m贸dulo encargado de gestionar los eventos y las comunicaciones.

Para ello MVC propone la construcci贸n de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representaci贸n de la informaci贸n, y por otro lado para la interacci贸n del usuario.

Este patr贸n de arquitectura de software se basa en las ideas de reutilizaci贸n de c贸digo y la separaci贸n de conceptos, caracter铆sticas que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.

Capas

Al pensar en un sistema en t茅rminos de capas, se imaginan los principales subsistemas de software ubicados de la misma forma que las capas de un pastel, donde cada capa descansa sobre la inferior.

A continuaci贸n se describen las tres capas principales de un patr贸n de arquitectura por capas:

  • Capa de Aplicaci贸n: Referente a la interacci贸n entre el usuario y el software. Puede ser tan simple como un men煤 basado en l铆neas de comando o tan complejo como una aplicaci贸n basada en formas.
  • Capa de L贸gica de Dominio: Esta capa contiene la funcionalidad que implementa la aplicaci贸n. Involucra c谩lculos basados en la informaci贸n dada por el usuario y datos almacenados y validaciones. Controla la ejecuci贸n de la capa de acceso a datos y servicios externos.
  • Capa de Datos: Esta capa contiene la l贸gica de comunicaci贸n con otros sistemas que llevan a cabo tareas por la aplicaci贸n. Generalmente est谩 representada por una base de datos, que es responsable por el almacenamiento persistente de informaci贸n.

Orientado a eventos / Provisi贸n de eventos

  • Orientado a eventos. Trata sobre c贸mo conectar componentes a trav茅s de eventos. Cada componente publica eventos a un bus de eventos com煤n y los componentes interesados a estos eventos pueden estar suscritos y luego responder al respecto. No hay otra forma de comunicaci贸n, el bus de eventos pasa ser el m茅todo principal de comunicaci贸n entre componentes. Algo complejo es saber si una acci贸n que hicimos tuvo el resultado que esper谩bamos, en general suelen ser eventualmente consistentes, lo que significa que cuando hacemos una escritura el sistema no nos garantiza que va a estar disponible hasta que ese evento no se distribuya en todas las partes que lo necesita.
  • Provisi贸n de eventos. En vez de que nuestra aplicaci贸n tenga el estado actual del sitio, podr铆amos tener solamente guardados los eventos que nos importan.

Microkernel - Plug-ins

Esta arquitectura esta compuesta por 2 componentes, el sistema core y los modulos plug-in. 

El core contiene la minima funcionalidad y los m贸dulos plug-in son componentes aut贸nomos e independientes que contienen procesamiento especializado, caracter铆sticas adicionales y c贸digo personalizado que est谩 dise帽ado para mejorar o ampliar el sistema central para producir capacidades empresariales adicionales. 

Generalmente, los m贸dulos plug-in deben ser independientes de otros m贸dulos plug-in, pero ciertamente puede dise帽ar plug-ins que requieran que otros plug-ins est茅n presentes. De cualquier manera, es importante mantener la comunicaci贸n entre plug-ins a un m铆nimo para evitar problemas de dependencia.

Cuando leemos esto lo primero que se nos viene a la mente es OSGi, porque este est谩ndar naci贸 para darle soporte a este tipo de arquitecturas y el ejemplo m谩s significativo de esta arquitectura sea eclipse.

Comparte-nada

Compartir recursos entre diferentes componentes agrega mucha complejidad a la hora de decidir prioridades o disponibilidad del componente, entonces se busca crear que NO se tenga punto de uni贸n entre componentes. Esta arquitectura es muy potente al procesar la informaci贸n ya que al separar los componentes se puede enfocar en el fallo por que cada componente hace uso 煤nico de los recursos de dicho sistema.

Microservicios

Patrones de arquitectura micro servicio

Son Componentes distribuidos donde cada componentes va a exponer una funcionalidad al resto del sistema. de esta forma modularizamos el sistema a traes de estos ser. independientes.

Los clientes o los mismos servicios consumen estas funcionalidades entre ellos.

Se debe tener comunicaci贸n entre ellos, de forma directa o indirecta (bus de eventos).

CQRS

La segregaci贸n de responsabilidades de consultas y comandos (CQRS), Es un estilo de arquitectura que separa las operaciones de lectura de las operaciones de escritura.

Los comandos, deber铆an basarse en tareas, en lugar de centrarse en datos. (“Reservar habitaci贸n de hotel” y no “Establecer ReservationStatus en Reservado”). Los comandos se pueden colocar en una cola para un procesamiento asincr贸nico, en lugar de que se procesen de forma sincr贸nica.

Las consultas, nunca modifican la base de datos. Una consulta devuelve un DTO que no encapsula ning煤n conocimiento del dominio.

Hexagonal - Puertos y adaptadores

La arquitectura hexagonal, Es un estilo de arquitectura que mueve el foco de un programador desde un plano m谩s conceptual hacia la distinci贸n entre el interior y el exterior del software. 

La parte interior son los casos pr谩cticos y el modelo domain est谩 construido sobre ello. 

La parte exterior es UI, base de datos, mensajer铆a, etc. 

La conexi贸n entre el interior y el exterior es mediante puertos, y su implementaci贸n equivalente se conocen como adaptadores. Por esta raz贸n, este estilo de arquitectura se conoce habitualmente como Puertos y Adaptadores.

Dise帽o orientado al dominio

Patr贸n de arquitectura Dise帽o orientado al dominio

Gu铆a la aplicaci贸n y el dise帽o a trav茅s del uso del lenguaje com煤n entre el negocio y el desarrollo.

Buscar modularizar el sistema a trav茅s de contextos delimitados


Comentarios

Entradas populares de este blog

Dise帽o de una Arquitectura

¡Maravilloso este punto, tantas opciones para elegir puede hacer que tomes una decisi贸n no acertada… pero si basamos nuestra decisi贸n en la experiencia ajena (exitosamente probada), seguro que llegamos a puerto seguro! Dominio:  Arquitectura de Software. Primer paso para crear una arquitectura. Pararse en hombros de gigantes Aprovechar el conocimiento existente para nuestra soluci贸n. Productos “de la estanter铆a”. Productos ya echos que resuelvan parte de nuestros problemas. Frameworks y librer铆as. Ayuda a empezar/proponer desde una arquitectura m谩s especifica. Arquitecturas especificas del dominio. Decisiones de dise帽o ya tomadas para ciertos dominios del problema. Patrones de arquitectura. Empezar desde un punto mas solido y restringir nuestro dise帽o a las partes importantes que quedan por resolver. Herramientas y partes de un dise帽o: Tipos de conectores La arquitectura est谩 separada en dos partes fundamentales: Componentes : Son partes de nuestro sistema que cumplen una funci贸n espec

Atributos de Calidad

Son las expectativas de usuario, en general impl铆citas, de cuan bien funcionar谩 un producto. Los atributos tienen identidad en si mismos y son las cualidades de la que todos hablamos, cuando un sistema es bueno o malo en alg煤n aspecto. "Los atributos de calidad son las expectativas de usuario, en general impl铆citas, de cu谩n bien funcionar谩 un producto." Software Requirements: 3rd Edition (Wiegers, Betty, 2013) Dominio:  Arquitectura de Software. Idoneidad Funcional  Tiene que ver con la conexi贸n del usuario (tareas u objetivos a resolver con el sistema) y como est谩n implementadas funcionalmente en dicho sistema. Se puede dividir en 3 partes: Completitud funcional : cuan completa esta la implementaci贸n con respecto a lo que se espera del sistema. Requerimientos Funcionales vs Funcionalidades implementadas. Exactitud funcional : cuan preciso es el sistema para implementar lo requerido. Resultados Esperados vs Resultados Obtenidos. Pertinencia funcional : cuan alineado esta lo