Conectores en arquitectura: tipos y cuándo usarlos

Clase 26 de 43Curso Profesional de Arquitectura de Software

Resumen

Diseñar con criterio exige unir piezas clave de arquitectura de software con foco en valor y calidad. Aquí se repasan, con claridad práctica, las herramientas para pasar de requerimientos y restricciones a estilos y patrones de arquitectura, identificando riesgos, y culminando en escenarios y tácticas que alinean el diseño con los atributos de calidad de la solución.

¿Cómo se integra la arquitectura de software con requerimientos y riesgos?

Partimos de entender qué afecta el diseño: requerimientos y restricciones guían decisiones de alto impacto. Desde allí, los estilos de arquitectura orientan el diseño a gran escala y revelan riesgos que ayudan a priorizar el trabajo de arquitectura. Luego, los atributos de calidad se conectan con requerimientos funcionales y no funcionales para aclarar qué resolver y dónde hay incertidumbre o complejidad. Los patrones de arquitectura bajan al detalle la solución de problemas concretos. Finalmente, escenarios y tácticas enlazan los atributos con opciones de implementación: se plantea un estímulo como una falla o un ataque, se analizan respuestas posibles y se elige el camino para llegar a buen puerto.

  • Identificar restricciones y su impacto en el diseño.
  • Elegir estilos de arquitectura y reconocer riesgos tempranos.
  • Mapear atributos de calidad a requerimientos funcionales y no funcionales.
  • Seleccionar patrones para problemas específicos.
  • Formular escenarios con estímulo y evaluar tácticas de respuesta.

¿Qué son los componentes y cómo se organizan?

Los componentes son partes del sistema que cumplen una función específica. En una arquitectura distribuida, esas partes se separan y se comunican por protocolos de red u otros mecanismos. Cada parte es un componente y, si hacemos zoom, aparecen subcomponentes internos: pueden ser objetos o capas dentro de ese componente. Mientras los componentes implementan funcionalidades clave de negocio, su comunicación es igual de relevante para la calidad y el comportamiento global.

  • Ver un sistema como conjunto de componentes con responsabilidades claras.
  • Distinguir entre componentes distribuidos y los que conviven en un monolito.
  • Analizar componentes internos: objetos o capas que colaboran.
  • Definir el rol de cada parte y cómo se coordina con las demás.

¿Qué tipos de conectores existen y cuándo usarlos?

Los conectores tipifican la comunicación entre componentes y son independientes del dominio. Un e-commerce, una red social, un sistema bancario o una aplicación móvil pueden usar los mismos tipos. Elegir bien el conector es clave para cumplir los atributos de calidad y sostener la evolución del diseño.

  • Llamado a procedimiento: invocar de un componente a otro y esperar respuesta.
  • Enlace: vínculo fuerte entre componentes que incluso condiciona la compilación, típico en lenguajes compilados o en un mismo monolito.
  • Evento: un componente notifica que algo sucedió y otros escuchan y reaccionan.
  • Adaptador: compatibiliza la interfaz de un componente con la de otro para que colaboren aunque no hayan sido pensados juntos.
  • Acceso a datos: facilita el uso de recursos compartidos como bases de datos, sistemas de archivos o una API, ajustando la interfaz de los datos a la que espera el sistema.
  • Flujo o stream: la información circula de forma continua y otro componente consume parte o la totalidad de ese flujo.
  • Arbitraje: coordina quién accede a un recurso o quién realiza una tarea, y permite distribuir comportamientos, por ejemplo en un A/B test.
  • Distribuidor: desde un componente se envía un mensaje a muchos otros, o se conectan muchos con muchos según la necesidad.

Cada elección de conector influye en el comportamiento del sistema y se combina con componentes, patrones, escenarios y tácticas para alcanzar un diseño específico y coherente con los atributos de calidad buscados.

¿Te gustaría comentar un escenario real en el que estés evaluando conectores o tácticas?

      Conectores en arquitectura: tipos y cuándo usarlos