Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save MxxSantiago/b54bc4504bc6053c2773302990232b39 to your computer and use it in GitHub Desktop.
Save MxxSantiago/b54bc4504bc6053c2773302990232b39 to your computer and use it in GitHub Desktop.
## Flujo de Creación de Productos de Documentación y Arquitectura
### Fase 1: Entendimiento y Definición del Dominio (La Base)
El punto de partida es siempre el **negocio** y el **lenguaje compartido**.
1. ### **Glosario de Dominio**
* **Propósito:** Establecer un lenguaje común y unívoco para todas las entidades y conceptos clave del negocio (ej., Orden, Carrito, Pago, Cliente). Es la "Biblia" de los términos.
* **Cómo se crea:**
* **Recopilación Inicial:** Reúnete con *stakeholders* de negocio, Product Owners y Tech Leads. Inicia con una lista de los términos más usados y críticos.
* **Workshops de Definición:** Facilita sesiones donde se discutan y acuerden las definiciones precisas, atributos clave, estados y relaciones.
* **Refinamiento Iterativo:** A medida que explores los sistemas y procesos, encontrarás nuevos términos o la necesidad de refinar los existentes.
* **Producto de Trabajo:** **Documento del Glosario de Dominio** (o sección dedicada en tu wiki).
* **Input para el siguiente:** Las definiciones del glosario son el **fundamento** para describir cualquier componente o flujo. Cada vez que uses un término como "Orden" en un diagrama o API, su significado debe ser el del glosario.
---
### Fase 2: Visualización y Alto Nivel (El Mapa General)
Una vez que tenemos un lenguaje claro, podemos empezar a dibujar el panorama general.
2. ### **Diagramas de Arquitectura (Nivel Contexto y Contenedores C4)**
* **Propósito:** Proporcionar una vista de alto nivel del sistema, mostrando los principales sistemas externos, los contenedores principales (microservicios, bases de datos, APIs Gateway, etc.) y cómo interactúan entre sí.
* **Cómo se crea:**
* **Basado en el Glosario:** Utiliza los términos del Glosario de Dominio para nombrar y conceptualizar los sistemas y contenedores.
* **Colaboración con Equipos:** Trabaja con los equipos de arquitectura y los Tech Leads para mapear los componentes existentes y planificados.
* **Identificación de Fronteras:** Define los límites entre los servicios y sus responsabilidades (el *Bounded Context*).
* **Producto de Trabajo:** **Diagramas de Contexto y Contenedores (Modelo C4)**.
* **Input para el siguiente:** Estos diagramas dan una visión general necesaria para luego profundizar en los componentes internos y los flujos específicos. Ayudan a identificar qué APIs deben documentarse.
---
### Fase 3: Detalle de Componentes e Interacciones (Los Detalles del Mapa)
Con el mapa general y el lenguaje definidos, nos movemos a los detalles técnicos de cómo los componentes hablan entre sí.
3. ### **Documentación de APIs y Eventos (Contratos)**
* **Propósito:** Definir los contratos de comunicación entre los microservicios y con servicios externos, asegurando que los equipos sepan exactamente cómo interactuar.
* **Cómo se crea:**
* **Derivado de Arquitectura y Glosario:** Los servicios identificados en los diagramas C4 y las entidades del Glosario son la base para definir las APIs. Por ejemplo, el "Servicio de Órdenes" tendrá APIs relacionadas con la entidad "Orden".
* **Colaboración con Equipos de Desarrollo:** Trabaja directamente con los desarrolladores para crear especificaciones OpenAPI/Swagger (para REST) o AsyncAPI (para eventos). Idealmente, promueve la generación de esta documentación directamente desde el código o en un flujo CI/CD.
* **Validación de Consistencia:** Asegúrate de que las definiciones de los datos en las APIs sean coherentes con el Glosario de Dominio.
* **Producto de Trabajo:** **Especificaciones OpenAPI/Swagger, Especificaciones AsyncAPI** (versionadas y accesibles).
* **Input para el siguiente:** Los contratos de APIs son cruciales para entender cómo los datos fluyen a través del sistema, lo que es la base para los diagramas de procesos y el *troubleshooting*.
4. ### **Diagramas de Arquitectura (Nivel Componentes C4)**
* **Propósito:** Profundizar dentro de un contenedor o microservicio, mostrando sus componentes internos clave y sus dependencias.
* **Cómo se crea:**
* **Basado en APIs:** Las APIs documentadas son las interfaces que se muestran entre componentes o hacia el exterior.
* **Colaboración con Equipos de Microservicios:** Cada equipo de microservicio es el experto en sus componentes internos. Trabaja con ellos para documentar las piezas más importantes.
* **Producto de Trabajo:** **Diagramas de Componentes (Modelo C4)** para cada microservicio relevante.
* **Input para el siguiente:** Estos detalles son esenciales para entender la lógica interna y para la documentación operativa.
---
### Fase 4: Flujos y Operaciones (Cómo Funciona y Cómo se Gestiona)
Conocemos el "qué" y el "quién"; ahora, el "cómo".
5. ### **Documentación de Procesos y Flujos de Datos Clave**
* **Propósito:** Ilustrar el camino completo de una transacción o un proceso de negocio a través de múltiples servicios y sistemas, mostrando cómo se transforman los datos y qué servicios intervienen.
* **Cómo se crea:**
* **Integrando todos los anteriores:** Utiliza los términos del Glosario, los contenedores de los diagramas C4 y los detalles de las APIs para mapear el flujo.
* **Identificación de Casos Críticos:** Concéntrate en procesos de negocio de alto valor o alta complejidad (ej., "Alta de una Orden", "Procesamiento de Pago", "Gestión de Devoluciones").
* **Colaboración Inter-Equipo:** Involucra a todos los equipos cuyos servicios participan en el flujo.
* **Producto de Trabajo:** **Diagramas de Flujo de Datos, Diagramas de Secuencia, Mapas de Procesos** (narrativa y visual).
* **Input para el siguiente:** Estos flujos son la base para crear *runbooks* de *troubleshooting* y para entender dónde buscar problemas.
6. ### **Documentación Operacional (*Runbooks* y Monitoreo)**
* **Propósito:** Proporcionar guías paso a paso para la operación, monitoreo y resolución de problemas del sistema.
* **Cómo se crea:**
* **Basado en Flujos y APIs:** Conociendo los flujos de datos y las APIs, puedes prever dónde podrían surgir problemas y qué métricas monitorear.
* **Análisis de Incidentes Pasados:** Las lecciones aprendidas de incidentes anteriores son una fuente valiosa para crear *runbooks* efectivos.
* **Colaboración con DevOps/Operaciones:** Trabaja estrechamente con los equipos que manejan la infraestructura y la monitorización (Datadog).
* **Producto de Trabajo:** **Runbooks/Playbooks**, **Dashboards de Monitoreo en Datadog** (con umbrales y alertas claras), **Matrices de Escalamiento**.
* **Input para el siguiente:** La información de monitoreo y los *runbooks* alimentan la fase de análisis de errores y la mejora continua.
---
### Fase 5: Retroalimentación y Mejora Continua (El Ciclo de Vida)
La documentación no es estática; debe evolucionar con el sistema.
7. ### **Análisis de Errores en Producción y Lecciones Aprendidas**
* **Propósito:** Identificar las causas raíz de los incidentes y traducirlas en mejoras concretas para el sistema y la documentación.
* **Cómo se realiza:**
* **Uso de Monitoreo (Datadog):** Utiliza los datos de Datadog para investigar anomalías y correlacionar eventos.
* **Revisión de Flujos y Contratos:** Un error puede revelar una definición ambigua en el glosario, una API mal documentada o un flujo de proceso no considerado.
* **Producto de Trabajo:** **Documentos Post-Mortem**, **Tickets/Historias para Mejoras** (tanto de código como de documentación).
* **Input para el siguiente:** Los *insights* de los errores pueden llevar a la actualización de cualquier producto de trabajo anterior (glosario, diagramas, APIs, *runbooks*).
---
### Mantenimiento y Gobierno (A lo Largo de Todo el Proceso)
Paralelo a todas estas fases, debes establecer un marco para mantener la documentación viva:
* **Proceso de Revisión y Actualización:** Define responsabilidades para que la documentación se actualice junto con los cambios en el código y el negocio. (ej., "La documentación de la API debe actualizarse antes de fusionar el PR").
* **Herramientas y Repositorios Centralizados:** Asegúrate de que todos los productos de trabajo sean fácilmente accesibles y versionados (wiki, repositorios de código para "Docs as Code").
* **Promoción y Capacitación:** Anima a los equipos a usar y contribuir a la documentación.
---
Simplificado:
## Flujo Visual de Documentación y Arquitectura
1. **GLOSARIO DE DOMINIO** (La Base del Conocimiento)
* Términos clave de negocio (Orden, Carrito, Pago, Cliente, etc.)
* Definiciones, atributos principales, estados, relaciones
* *Input para:* ➡️ Todo lo demás
---
2. **DIAGRAMAS DE ARQUITECTURA: CONTEXTO Y CONTENEDORES (C4)** (Visión General)
* Sistemas externos, contenedores (microservicios, DBs, etc.)
* Interacciones de alto nivel
* Límites de propiedad/equipos
* *Basado en:* ⬅️ Glosario de Dominio
* *Input para:* ➡️ Identificación de APIs, Componentes C4
---
3. **DOCUMENTACIÓN DE APIS Y EVENTOS (Contratos)** (Interfaces de Comunicación)
* Especificaciones OpenAPI/Swagger (REST)
* Especificaciones AsyncAPI (Eventos)
* Versionado de APIs
* *Basado en:* ⬅️ Glosario de Dominio, Diagramas C4 (Contenedores)
* *Input para:* ➡️ Diagramas C4 (Componentes), Flujos de Procesos, Documentación Operacional
---
4. **DIAGRAMAS DE ARQUITECTURA: COMPONENTES (C4)** (Detalle Interno del Servicio)
* Componentes internos de microservicios
* Dependencias internas
* *Basado en:* ⬅️ Diagramas C4 (Contenedores), Documentación de APIs
* *Input para:* ➡️ Documentación Operacional
---
5. **DOCUMENTACIÓN DE PROCESOS Y FLUJOS DE DATOS** (El Cómo Funciona el Negocio)
* Diagramas de Flujo de Datos (ej. ciclo de vida de una Orden)
* Diagramas de Secuencia (interacción detallada de servicios)
* Narrativas de procesos de negocio
* *Basado en:* ⬅️ Glosario de Dominio, Diagramas C4 (todos los niveles), Documentación de APIs
* *Input para:* ➡️ Documentación Operacional, Análisis de Errores
---
6. **DOCUMENTACIÓN OPERACIONAL (Runbooks y Monitoreo)** (Gestión y Resolución de Problemas)
* Runbooks/Playbooks de *troubleshooting*
* Configuración de Dashboards y Alertas (Datadog)
* Matrices de escalamiento, contactos
* *Basado en:* ⬅️ Flujos de Datos, Diagramas C4, Documentación de APIs, Análisis de Errores previos
* *Input para:* ➡️ Análisis de Errores en Producción (retroalimentación)
---
7. **ANÁLISIS DE ERRORES EN PRODUCCIÓN Y LECCIONES APRENDIDAS** (Mejora Continua)
* Documentos Post-Mortem
* Identificación de Causa Raíz
* Planes de Acción (Mejoras en código, proceso, **documentación**)
* *Basado en:* ⬅️ Datos de Monitoreo (Datadog), Documentación Operacional, Flujos de Datos
* *Retroalimenta a:* 🔄 **TODOS los productos de trabajo anteriores** (Glosario, Diagramas, APIs, Flujos, Operacional)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment