Registro de deciciones de arquitectura (ADR)
Como sabemos la arquitectura de una aplicación esta basada en el análisis y diseño de requerimientos funcionales y no funcionales. De tal manera, que nos encontramos con los requerimientos arquitectónicamente significantes (ASR Architecturally Significant Requirement) y surgen las daciones de arquitectura (AD).
El registro de las secciones de arquitectura (ADR Architectural Decision Record), son simplemente el modo o manera en que se registran las AD. Las ADR van a documentar las decisiones tomadas junto con su contexto y consecuencias.
Es bastante frecuente encontrarse con los escenarios, en donde el “por qué y el cómo “se encuentran dentro de la cabeza del desarrollador que toma una decisión. Los recién incorporados al equipo se encuentran ante la situación de por que ciertas cosas se realizaron cierto modo, lo que dificulta describir y contribuir, ya que el conocimiento necesario no está disponible.
Michael Nygard identifico esta problemática y presento el concepto de ADRs.
Las ADR generalmente son un archivo de texto plano que describe una decisión de arquitectura especifica. Estos registros se ven mas necesarios para proyectos grandes o distribuidos, especialmente aquellos en los que no hay un solo arquitecto disponible o en los que se incorporan nuevos colaboradores.
Estructura de un ADR
Las ADRs deben ser concisas y simples. Y se componen en secciones:
- Proposed: Este es el estado de propuesto y se considera el inicio.
- Acceptance: Estado que representa que la ADR fua aceptada por los responsables involucrados.
- Rejection: Este estado representa que la ADR fue rechazada y que debe revisarse o reemplazarse.
- Deprecation: Este estado representa que la ADR fue deprecada.
- Superseding: Este estado representa que la ADR es reemplazada por otra ADR.
Recomendado por LinkedIn
Cuando escribir un ADR
Se deben escribir siempre que se tome una decisión de impacto significativo. Dependiendo de cada equipo definir el concepto de impacto significativo. Como comienzo, presento algunos escenarios o preguntas con un modelo mental para determinar cuándo escribir un ADR:
- ¿Por qué se tomó esta decisión en particular?
- ¿Por qué los arquitectos eligieron esta tecnología sobre otra en particular o general?
- La implementación actual tiene ventajas y desventajas, como por ejemplo un menor rendimiento, entonces, ¿Por qué optaron por este tipo de arquitectura?
Almacenado de ADR
Las se pueden almacenar dentro del repositorio donde se almacena el código de la aplicación. Puede estar almacenada por servicio, modulo o multi repositorio. Por lo general dentro del repositorio se destina una carpeta llamada “Doc” y dentro de ella “ADR”, quedando el path como “doc/adr”. Sin embargo, no todo el mundo tiene acceso a estos repositorios, como por ejemplo perfiles como analistas de negocio, producto owners, etc. Por lo tanto, no es una buena opción analizar donde alojar esta información y los accesos.
Para empezar con este tipo de documentación, existen muchos templates. De los cuales van de mayor detalla a algo un poco mas simple y conciso. La elección siempre depende las necesidades de cada arquitecto o proyecto.
Herramientas de ADR
Hay varias herramientas que nos pueden ayudar a administrar las ADR´s. A continuación, les dejo un enlace de una herramienta cli (command-line interface), que estoy desarrollando en node js.
Si sientes que has extraído algún valor del contenido de este articulo, considera colaborar con la compra de café. ¡Gracias!