Plantilla de Documento de Ownership de Servicio
Una plantilla para definir quien es dueno de un servicio, que hace, como operarlo, y donde encontrar informacion critica cuando las cosas salen mal.
Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.
Descripcion General
Los microservicios se multiplican rapidamente. En una organizacion de ingenieria en crecimiento, es facil perder track de quien es dueno de que, como desplegar un servicio, o a quien llamar cuando falla a las 3 AM. Un documento de ownership de servicio es una pagina unica de verdad para cada servicio en produccion: que hace, quien es dueno, como operarlo, y donde encontrar todo lo demas. Convierte conocimiento tribal en documentacion referenciable y previene la crisis de “nadie sabe como esto funciona”.
Cuando Usar
- For alternatives, see Monolith to Microservices — Migration Strategies.
Usa esta plantilla cuando:
- Tengas mas de cinco servicios en produccion y el ownership se este volviendo confuso
- Nuevos ingenieros necesiten dias para descubrir como desplegar o depurar un servicio
- Los incidentes se prolonguen porque nadie sabe quien es dueno del componente que falla
- Te prepares para una auditoria que requiera ownership de servicios documentado
- Estes separando un monolito y necesites asignar ownership a los servicios extraidos
Prerrequisitos
Antes de escribir documentos de ownership:
- Identificar al dueno primario (equipo o individuo) de cada servicio
- Confirmar que el servicio sigue activo; documentar servicios deprecados por separado
- Reunir links a repositorios, dashboards, runbooks, y pipelines de CI
- Verificar informacion de contacto para rotaciones de on-call
- Decidir donde viven los documentos (wiki, docs site, o READMEs de repositorio)
Solucion
# Ownership de Servicio: `<Nombre del Servicio>`
> Dueno: ______ | Equipo: ______ | Actualizado: ______ | Tier: [1/2/3]
## 1. Que Hace Este Servicio
**Proposito:** [Una oracion describiendo el rol del servicio en el sistema]
**Capacidades clave:**
- ______
- ______
- ______
**Consumidores:** [Quien llama este servicio: otros servicios, UIs, socios externos]
**Tier de servicio:**
- Tier 1 = Critico para revenue; 99.99% uptime, on-call 24/7, postmortems obligatorios
- Tier 2 = Importante; 99.9% uptime, on-call en horario laboral
- Tier 3 = Interno o no critico; 99% uptime, respuesta best-effort
---
## 2. Arquitectura
### Stack Tecnologico
| Capa | Tecnologia | Version |
|------|------------|---------|
| Lenguaje | ______ | ______ |
| Framework | ______ | ______ |
| Base de datos | ______ | ______ |
| Cache | ______ | ______ |
| Cola | ______ | ______ |
| Infraestructura | ______ | ______ |
### Diagrama
[Consumidor] -> [Load Balancer] -> [Servicio] -> [Base de datos] v [Cache]
*Link al diagrama de arquitectura completo: ______*
---
## 3. Ownership y Contactos
| Rol | Equipo / Persona | Contacto | Escalamiento |
|-----|------------------|----------|-------------|
| Dueno primario | ______ | ______ | ______ |
| Rotacion on-call | ______ | Link PagerDuty/Opsgenie | ______ |
| Engineering manager | ______ | ______ | ______ |
| Product owner | ______ | ______ | ______ |
| Contacto de seguridad | ______ | ______ | ______ |
---
## 4. Recursos Operacionales
| Recurso | Link | Notas |
|---------|------|-------|
| Codigo fuente | ______ | Branch main, tags de release |
| Pipeline CI/CD | ______ | Build, test, deploy |
| Dashboard de monitoreo | ______ | Grafana / Datadog / CloudWatch |
| Politica de alertas | ______ | PagerDuty / Opsgenie |
| Tracking de errores | ______ | Sentry / Bugsnag |
| Logs | ______ | Kibana / CloudWatch Logs |
| Runbooks | ______ | Incidentes comunes y procedimientos |
| Postmortems | ______ | Analisis historico de incidentes |
| Documentacion de API | ______ | OpenAPI / Swagger |
---
## 5. Despliegue
**Despliegue estandar:**
1. Mergear PR a main
2. CI pasa (link al pipeline)
3. Deploy via [herramienta] a [ambiente]
4. Verificar via [health check / smoke test]
**Despliegue de emergencia:**
- Branch hotfix desde ultimo tag
- Build y deploy omitiendo pasos no criticos de CI
- Rollback: ______
**Calendario de deploys:**
- Regular: ______
- Periodos de congelamiento: ______
---
## 6. Dependencias
| Servicio | Direccion | Proposito | Contacto | Critico? |
|----------|-----------|-----------|----------|----------|
| ______ | Upstream | ______ | ______ | Si/No |
| ______ | Downstream | ______ | ______ | Si/No |
**Dependencias de terceros:**
| Vendor | Servicio | Proposito | Pagina de estado |
|--------|----------|-----------|-----------------|
| ______ | ______ | ______ | ______ |
---
## 7. Seguridad y Compliance
- Autenticacion: ______
- Autorizacion: ______
- Clasificacion de datos: [Publico / Interno / Confidencial / Restringido]
- Encripcion en transito: ______
- Encripcion en reposo: ______
- Requerimientos de compliance: ______
- Ultima revision de seguridad: ______
---
## 8. Limitaciones y Riesgos Conocidos
- ______
- ______
- ______
## 9. Registro de Cambios
| Fecha | Cambio | Autor |
|-------|--------|-------|
| ______ | Documento de ownership inicial | ______ |
Explicacion
La plantilla sigue el principio de revelacion progresiva: la primera seccion responde “que es esto y a quien llamo?” en segundos. La arquitectura y los links operacionales siguen para ingenieros que necesiten depurar o modificar el servicio. Las secciones de dependencias y seguridad existen para respuesta a incidentes y auditorias. Manteniendo todo en una pagina, el documento sigue siendo usable bajo presion.
Ejemplo de Tarjeta de Ownership de Servicio
=== Servicio: notification-service ===
Dueno: Team Comms (comm-team@company.com)
On-call: PagerDuty schedule "comms-oncall"
Tier: 1 (Critico)
Slack: #comms-team
Tech Stack:
Lenguaje: Go 1.22
Framework: Chi router
Base datos: PostgreSQL 15 (managed)
Cache: Redis 7
Cola: AWS SQS
Links Clave:
Repo: github.com/company/notification-service
Dashboard: grafana.company.com/d/notif-overview
Runbook: wiki.company.com/runbooks/notification-service
API Docs: api.company.com/docs/notifications
Postmortems: wiki.company.com/postmortems?service=notification
Dependencias:
Upstream: user-service (critico), auth-service (critico)
Downstream: email-provider (SendGrid), sms-provider (Twilio)
Terceros: SendGrid, Twilio (ambos tienen pagina de estado)
Deploy:
CI: GitHub Actions (build, test, deploy)
Metodo: Argo CD (GitOps)
Frecuencia: 2-3x por semana
Rollback: Argo CD rollback a revision anterior
Riesgos Conocidos:
- Rate limits de SendGrid pueden causar demoras en bursts de email
- Conexiones WebSocket necesitan graceful shutdown durante deploys
- Pool de conexiones DB maxea en 100; monitorear durante horas pico
Ultima actualizacion: 2026-07-11 por alice
Variantes
| Contexto | Ajustes | Notas |
|---|---|---|
| Serverless / funcion | Reemplazar seccion de deploy con version de funcion y configuracion de triggers | Las funciones pueden no tener pipelines CI tradicionales |
| SaaS de terceros | Agregar detalles de contrato, fechas de renovacion, y rutas de escalamiento con vendor | No controlas la infraestructura |
| Data pipeline | Agregar schemas de entrada/salida, SLAs, y checks de calidad de datos | La frescura de datos importa tanto como el uptime |
| Libreria compartida | Agregar lista de consumidores, politica de versionado, y proceso de breaking changes | Las librerias tienen impacto transitivo |
| App mobile | Agregar proceso de release, links a app stores, y estrategia de rollout | Los deploys mobile no son completamente automatizables |
Lo que funciona
- Una pagina por servicio — si no cabe en una pantalla, no se leera durante un incidente
- Link, no dupliques — el doc de ownership es un indice, no un repositorio de todo el conocimiento
- Revisa trimestralmente — ownership, dependencias, y stacks tecnologicos cambian mas rapido de lo que crees
- Hazlo buscable — nuevos ingenieros encuentran servicios por nombre, no navegando carpetas
- Incluye un changelog — saber cuando se actualizo el doc te dice si confiar en el
Errores Comunes
- Escribirlo una vez y olvidarlo — los docs de ownership obsoletos causan mas dano que ningun doc; te enganan
- Hacerlo demasiado largo — si un ingeniero no encuentra la rotacion on-call en 10 segundos, el doc ha fallado
- Omitir dependencias — la mitad de los incidentes son causados por fallas upstream; saber de que dependes
- No asignar un dueno unico — “el equipo backend lo posee” no es ownership; nombra un equipo y una persona
- Esconderlo en un wiki que nadie usa — el doc deberia estar linkeado desde el README del repo, dashboard de monitoreo, y pipeline de CI
Lectura Adicional
- Documentación oficial: consulta la referencia actualizada del framework o herramienta utilizada.
- Guías relacionadas: explora las guías de microservices y runbook para profundizar.
- Patrones complementarios: revisa los patrones de diseño aplicables a tu stack tecnológico.
- Postmortems públicos: estudia incidentes reales de equipos que enfrentaron problemas similares en producción.
Notas de Producción
- Despliega gradualmente usando canary o blue-green para detectar regresiones temprano.
- Configura alertas para errores, latencia p99 y tasa de fallos antes de habilitar en producción.
- Documenta el rollback en el runbook; prueba el procedimiento en staging al menos una vez por trimestre.
- Revisa logs estructurados con correlation IDs para trazar requests end-to-end en incidentes.
Puntos Clave
- Aplica plantilla de documento de ownership de servicio cuando necesites una solución práctica para tu caso de uso.
- Monitorea el rendimiento después de implementar; mide latencia, errores y uso de recursos antes y después.
- Revisa la sección de Troubleshooting ante errores comunes; la mayoría tienen causa raíz documentada con solución.
- Mantén dependencias actualizadas y ejecuta tests en CI para prevenir regresiones en producción.
Troubleshooting
- Pipeline fails silently: enable verbose logging and store pipeline artifacts between stages so you can inspect the exact state that failed.
- Container crashes on startup: check that environment variables, secrets, and config files are mounted correctly. Read the first 50 lines of logs before scaling replicas.
- Deployment rolls back repeatedly: verify health checks, resource limits, and startup probes. A failing readiness probe is a common cause of rolling restarts.
- Slow CI builds: cache dependencies and docker layers. Split large test suites into parallel jobs to reduce wall-clock time.
- Drift between environments: use infrastructure-as-code and immutable artifacts.
Errores Comunes en Producción
- Dejar campos requeridos vacíos o usar respuestas vagas de una palabra.
- Llenar el documento una vez y nunca actualizarlo cuando cambia el alcance o las decisiones.
- Guardar el documento donde el equipo no lo busque durante incidentes o revisiones.
- No asignar un responsable, fecha límite o cadencia de revisión.
- Copiar texto base sin eliminar secciones que no aplican.
- Saltar el control de versiones, lo que impide rollback y responsabilidad.
- No vincular el documento con decisiones relacionadas o acciones de seguimiento.
- Evitar revisiones trimestrales que retirarían secciones obsoletas o sin uso.
Related Resources
Plantilla de Engineering Handbook
Una plantilla para documentar la cultura del equipo, procesos de desarrollo, estandares tecnicos y practicas operacionales en un handbook unico y referenciable.
DocPlantilla de Comunicacion de Incidentes
Una plantilla para notificar a stakeholders durante interrupciones de produccion con mensajes pre-redactados para cada nivel de severidad y tipo de audiencia.
DocChecklist de Onboarding para Ingenieros Backend
Una checklist essential para onboardear nuevos ingenieros backend cubriendo configuracion del entorno, orientacion al codebase, entrenamiento de seguridad y metas de la primera semana.
Preguntas frecuentes
- En que se diferencia de un README?
- Un README explica como construir y ejecutar el codigo localmente. Un documento de ownership de servicio explica como operar el servicio en produccion: a quien llamar, como desplegar, de que depende,...
- Cada servicio deberia tener un documento de ownership?
- Todo servicio en produccion deberia tener uno. Herramientas experimentales o internas pueden usar una version mas ligera. Si un servicio vale la pena desplegar, vale la pena documentar quien es dueno...
- Que pasa cuando el ownership cambia?
- Actualiza el documento inmediatamente. Programa una reunion de handoff donde el dueno saliente recorra incidentes recientes, riesgos conocidos, y pasos complicados de deploy. El documento captura...
- Como manejamos servicios compartidos con multiples duenos?
- Para servicios compartidos (ej., una API de plataforma usada por multiples equipos): designa un equipo dueno primario responsable del servicio. Otros equipos son consumidores con input consultivo. El...
- Que pasa si un servicio no tiene un dueno claro?
- Si un servicio no tiene un dueno claro: asigna uno inmediatamente. Un servicio sin dueno es un pasivo. Si el equipo original se desband o reorganizo: identifica el equipo que mas lo usa o tiene mas...
- Como mantenemos los docs de ownership actualizados?
- Configura recordatorios automatizados: notificacion de revision trimestral al dueno del servicio. Enlaza el doc de ownership desde el README del repo, pipeline de CI, y dashboard de monitoreo — si el...
- Deberiamos usar una herramienta de catalogo de servicios?
- Para organizaciones con mas de 10 servicios: si. Un catalogo de servicios (Backstage, OpsLevel, Spinnaker) centraliza docs de ownership, dependencias, y metricas de salud. Fuerza consistencia,...
- Como documentamos servicios durante migraciones?
- Durante migraciones (ej., monolito a microservicios): mantén docs de ownership tanto para el sistema viejo como para el nuevo. Marca el sistema viejo como "deprecado — migracion en progreso" con el...