Arquitectura y diseño
Separo por razones operativas, no por moda. Cada límite del sistema tiene que poder justificarse con algo que pasa en producción.
- Extender la herramienta que el negocio ya usa antes que levantar un sistema paralelo. Casi todo lo que construí en los últimos años es eso: un módulo, un canal o un servicio que se enchufa a una plataforma existente por sus contratos públicos, sin pedirle al equipo que cambie de herramienta.
- Servicios con contextos de build independientes, cuando hay un motivo de disponibilidad concreto: redesplegar la interfaz no puede reiniciar el ingestor de eventos, que tiene que seguir recibiendo.
- Orientación a eventos sobre un broker de mensajes: cola, audit log, dead-letter queue, y el enrutamiento de dominio separado del ingreso.
- Puertos y adaptadores donde importa. En el prototipo de pagos, cambiar la pasarela simulada por la real toca un solo archivo: ni el dominio ni la interfaz se enteran.
- Contrato primero: el sobre, los enums y los códigos de resultado definidos antes que el código que los usa.
- Separación de plano de control y plano de datos, cache-aside, BFF y fachada — aplicados donde resuelven algo, no como catálogo.