Arquitectura Hexagonal en Python: una guia practica
Como separar logica de negocio e infraestructura para construir sistemas Python mas mantenibles y testeables.
Cuando una aplicacion crece rapido, mezclar reglas de negocio con detalles de framework o base de datos termina frenando el equipo.
La Arquitectura Hexagonal (o Ports and Adapters) propone una alternativa: mantener el dominio en el centro y conectar infraestructura por interfaces.
Idea central
- Puertos: contratos que definen lo que el dominio necesita.
- Adaptadores: implementaciones concretas para base de datos, APIs, colas, etc.
Esto facilita probar logica critica sin depender de servicios externos.
Ejemplo corto en Python
from abc import ABC, abstractmethod
class UserRepositoryPort(ABC):
@abstractmethod
def save(self, username: str) -> None:
...
class RegisterUserService:
def __init__(self, repository: UserRepositoryPort):
self.repository = repository
def execute(self, username: str) -> None:
self.repository.save(username)
Con esta estructura, cambiar SQLite por PostgreSQL o integrar otro backend no obliga a reescribir la logica de negocio.
Cierre
Si tu equipo esta sufriendo acoplamiento y dificultad para testear, empezar por un modulo con este patron puede generar mejoras concretas en pocas semanas.
Te gusto este articulo?
Escribinos y conversemos sobre tu contexto.