Saltar al contenido

Blog Desarrollo Python

Guía

Cambias una conexión y se rompe todo: qué propone la arquitectura hexagonal

Puertos y adaptadores explicados con un ejemplo pequeño y verificable en Python.

Separar una regla del negocio de la herramienta que guarda los datos permite probarla y cambiar sus conexiones con un alcance más claro.

Qué propone la arquitectura hexagonal

En el artículo original de Alistair Cockburn, los puertos y adaptadores permiten desarrollar y probar la aplicación sin depender directamente de su interfaz o base de datos. El nombre no obliga a crear seis capas ni seis componentes.

  • Regla: expresa qué debe ocurrir en el negocio.
  • Puerto: define la conexión que necesita la aplicación.
  • Adaptador: implementa esa conexión con una tecnología.

Un ejemplo mínimo

Esta función valida un código antes de guardarlo. Recibe la conexión desde fuera, sin elegir una base de datos:

from typing import Protocol

class Repositorio(Protocol):
    def guardar(self, codigo: str) -> None: ...

def registrar_solicitud(codigo: str, repo: Repositorio) -> None:
    codigo = codigo.strip()
    if not codigo:
        raise ValueError("El código es obligatorio")
    repo.guardar(codigo)

Un adaptador podría guardar en una base de datos; otro podría conservar el código en memoria para una prueba. La función mantiene la misma regla. Protocol ayuda a expresar ese contrato para herramientas de tipado; las anotaciones no validan automáticamente los datos durante la ejecución.

Qué comprobaría

Verificaría que un código válido se guarda y que uno vacío produce un error sin llamar al repositorio. Luego probaría el adaptador de datos por separado. El ejemplo es propio e ilustrativo: no constituye una aplicación completa.

Cuándo aporta valor

Este enfoque resulta útil cuando hay reglas que proteger e integraciones que pueden cambiar. En un sistema heredado, empezaría por delimitar un caso de uso; no reorganizaría toda la aplicación únicamente para adoptar el patrón.

Fuentes consultadas el 4 de octubre de 2026. Los ejemplos son ilustrativos y las conclusiones expresan una lectura profesional.

#Python #DesarrolloDeSoftware #Datos

Sigamos compartiendo ideas.

Si este tema te interesa, puedes compartir una pregunta o una reflexión para continuar la conversación.

Escríbeme por WhatsApp