Patrón Strangler Fig para evolucionar arquitectura de software
Clase 14 de 29 • Curso de Arquitectura de Software Aplicada
Resumen
Mejorar la arquitectura de un sistema es esencial para mantenerlo flexible y sostenible. El uso de métricas de arquitectura y patrones como strangler fig facilita la transición de implementaciones antiguas a nuevas, sin interrumpir la operación del sistema. Este enfoque resulta práctico cuando hay que negociar cambios con stakeholders no técnicos y al gestionar arquitecturas que requieren evolucionar según la carga y las necesidades del negocio.
¿Cómo ayudan las métricas de arquitectura a negociar prioridades?
Las métricas permiten discutir prioridades con equipos como product owners y managers. Su uso ayuda a decidir cuándo y qué modificar, justificando técnicas o cambios arquitectónicos frente a quienes toman decisiones sin conocimientos técnicos profundos.
¿Qué es y cómo se aplica el patrón strangler fig en la arquitectura?
Cuando un componente está demasiado enlazado a una dependencia (por ejemplo, una base de datos), el patrón strangler fig permite reemplazarlo gradualmente. Se empieza separando dependencias y luego se migran comportamientos en fases. El proceso es:
- Separar comportamiento y dependencias en nuevos componentes.
- Cambiar dependencias sin reescribir toda la lógica al inicio.
- Modificar comportamientos manteniendo compatibilidad temporal con la lógica previa.
- Finalmente, eliminar el código anterior para completar la transición.
El avance de esta técnica puede medirse en las métricas arquitectónicas, facilitando ajustes futuros y alineándose con metodologías ágiles.
¿Por qué elegir entre arquitectura limpia y tajadas verticales?
El crecimiento del sistema y la incorporación de nuevos casos de uso generan complejidad y dependencia cruzada. Surgirán dilemas sobre mantener una arquitectura limpia (separación horizontal de capas) o transitar hacia tajadas verticales (casos de uso encapsulados con sus propios modelos y servicios).
- Tajadas verticales agrupan funcionalidades completas y fomentan autonomía.
- Rompen parcialmente el principio DRY (Don't Repeat Yourself) por posible duplicidad de código.
- Aumentan la cohesión dentro de cada componente específico.
¿Cuándo usar tajadas verticales?
Si la arquitectura limpia se vuelve difícil de leer y mantener, separar en vertical slices puede reducir tiempos de integración y facilitar el trabajo en paralelo. Varios equipos pueden trabajar en distintas funcionalidades reutilizando partes del modelo de negocio, mejorando así la productividad.
¿Cómo gestionar la mezcla de estilos arquitectónicos?
Combinar estilos arquitectónicos es común cuando el volumen y complejidad crecen. No es necesario mantener la pureza del diseño original. Lo importante es contar con:
- Métricas, guías y automatizaciones para asegurar la calidad.
- Registros de decisiones arquitectónicas (Architectural Decision Records), entendiendo que deben adaptarse y no son reglas rígidas.
- Adaptabilidad al cambio, para soportar entradas o salidas de miembros del equipo y cambios en las condiciones del entorno.
Consistencia y medición de calidad son las claves para mantener un sistema evolutivo y saludable, permitiendo transiciones exitosas en el tiempo y aceptando la variación como parte natural del desarrollo.