[Documentación] Caso de estudio DC descartado — Lecciones aprendidas integradas

- docs/ambito/dtic-DASUTEN/_hist/P2601.legacy_lecciones_aprendidas.md (NUEVO)
  Documento completo sobre el enfoque con Domain Controller (23/02-27/03/26)
  Incluye: arquitectura descartada, causas del fracaso, timeline, lecciones

- docs/ambito/dtic-DASUTEN/A04.P005_DASUTEN-sin-DC.md
  Agregada sección "Contexto Histórico" con referencia al caso de estudio

- docs/ambito/dtic-DASUTEN/A04_dtic-DASUTEN.md
  Agregada sección completa sobre el enfoque DC descartado

- docs/contexto/IA.md
  Agregada sección "Caso de Estudio: Enfoque con Domain Controller"
  Incluye tabla de recursos, señales de alerta y lecciones para futuros proyectos

**Principio aplicado:** "La arquitectura más simple que funciona es mejor que
la arquitectura 'correcta' que apenas se sostiene."

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ricardo Monla
2026-04-15 19:56:02 -03:00
co-authored by Claude Opus 4.6
parent 94eeb8d470
commit faa5d7ad9a
5 changed files with 603 additions and 72 deletions
@@ -0,0 +1,352 @@
# P2601 Legacy — Lecciones Aprendidas del Enfoque con Domain Controller
> **Documento de aprendizaje institucional**
> **Fecha de creación:** 2026-04-15
> **Estado:** ✅ Completado (caso de estudio histórico)
---
## 📌 Resumen Ejecutivo
Este documento recopila las lecciones aprendidas durante el **enfoque inicial con Domain Controller (AD DS)** que fue **descartado** en favor del enfoque Workgroup (P2601.09) debido a limitaciones de recursos y complejidad operativa.
**Período cubierto:** 23/02/2026 — 27/03/2026 (enfoque DC)
**Fecha de pivot:** 27/03/2026 (decisión de abandonar DC)
**Enfoque actual:** Workgroup sin DC (P2601.09) — ✅ Operativo desde 15/04/2026
---
## 🎯 Objetivo de este Documento
Preservar el conocimiento técnico adquirido durante la fase con DC para:
1. **Evitar repetir errores** en futuros proyectos
2. **Documentar señales de alerta** tempranas de problemas de recursos
3. **Proveer contexto histórico** para entender por qué se adoptó el enfoque Workgroup
4. **Servir como caso de estudio** para ingeniería de sistemas y toma de decisiones técnicas
---
## 🏗️ Arquitectura Original (Descartada)
### Topología de Red Privada (10.0.100.0/24)
```
Internet
Router ISP (192.168.1.1)
└── srv-dasu (Proxmox VE) — 10.0.10.205 / Tailscale 100.116.210.36
└── vmbr1 (NAT 10.0.100.x)
├── VM 100: dc-dasuten (10.0.100.10) — Domain Controller AD DS + DNS
├── VM 101: sql-dasuten (10.0.100.11) — SQL Server 2019 Core
└── VM 102: pcv-dasu0 (10.0.100.12) — Windows 10 LTSC (cliente pruebas)
```
### Componentes Requeridos (Enfoque DC)
| Componente | VM ID | Rol | Recursos | Estado Actual |
|:---|:---:|:---|:---|:---|
| **Domain Controller** | 100 | dc-dasuten | AD DS + DNS + GPO | 🛑 Apagada (preservada) |
| **SQL Server** | 101 | sql-dasuten | SQL 2019 Enterprise | 🛑 Apagada (preservada) |
| **PC Virtual** | 102 | pcv-dasu0 | Win 10 LTSC | 🛑 Apagada (preservada) |
| **Hipervisor** | — | srv-dasu | Proxmox VE 9.1 | ✅ Operativo (solo SQL4 + PCV) |
---
## ⚠️ Causas del Fracaso
### 1. Recursos Escasos en srv-dasu
**Problema principal:** El servidor físico `srv-dasu` tenía recursos insuficientes para sostener 3 VMs simultáneas con rendimiento aceptable.
| Recurso | Disponible | Requerido (3 VMs) | Déficit |
|:---|:---|:---|:---|
| **RAM** | 15 GB total | ~20 GB (4+4+4 + host) | -5 GB |
| **vCPU** | 6 núcleos | 8+ (2+2+2 + host) | -2 vCPU |
| **Disco** | 94 GB thin | ~180 GB (50+60+50 + host) | -86 GB |
**Señales de alerta temprana (bitácoras 23-28/02/2026):**
- `23/02`: "Decisión de despliegue Server Core para optimizar recursos"
- `24/02`: "Asignación técnica de recursos aprobada (2C/2GB/50GB)" — ya limitado
- `26/02`: "Resguardo Integral Offline (Fallo parcial VM 101)" — sin espacio para backups
- `05/03`: Tailscale configurado como subnet router para `10.0.100.0/24` — complejidad añadida
### 2. Complejidad de Red con NAT
**Problema:** La red privada `10.0.100.0/24` requería:
- NAT en Proxmox (vmbr1)
- Tunneling LPF hacia red académica `10.0.10.0/24`
- Subnet router Tailscale para acceso remoto
- Reglas de firewall complejas para SQL (1433) y SSH (7022)
**Bitácora 24/02/2026:**
> "Decisión de subred privada segregada (10.0.100.x)" — se optó por aislamiento
**Bitácora 26/02/2026:**
> "Estrategia de Tunneling LPF hacia red 10.0.100.x" — complejidad creciente
### 3. Dependencia del Dominio para Autenticación
**Problema:** El sistema DASUTEN (Visual FoxPro) fue diseñado asumiendo AD DS:
- Campo `UID` vacío en `Kermet.ini` → autenticación Windows Integrated (SSPI)
- Sin dominio → sin Kerberos → sin autenticación
- GPOs requeridas para mapeos y restricciones
**Bitácora 05/03/2026 (validación con usuaria):**
> "P02 - Login Exitoso: Prueba de ingreso al sistema con credenciales de aalmiron"
**Hallazgo clave (ingeniería inversa 11/04/2026):**
> El sistema **no tiene dependencia real del AD** si se configura explícitamente `UID=sa` en `Kermet.ini`
### 4. Puntos de Falla Múltiples
| Punto de Falla | Impacto | Frecuencia |
|:---|:---|:---|
| **DC caído** | Sin autenticación → sin sistema | Alto (recursos escasos) |
| **SQL caído** | Sin base de datos | Medio |
| **NAT/Red** | Sin conectividad entre VMs | Medio-Alto |
| **Tailscale** | Sin acceso remoto DTIC | Bajo |
| **AnyDesk** | Sin fallback de acceso | Bajo |
---
## 📅 Timeline de Eventos Críticos
| Fecha | Hito | Estado | Observaciones |
|:---|:---|:---:|:---|
| **23/02/26** | Inicio: Instalación Proxmox en srv-dasu | ✅ | Hardware recibido y acondicionado |
| **23/02/26** | Decisión: Server Core para DC | ⚠️ | Optimización prematura por recursos |
| **24/02/26** | VM 100 creada (dc-dasuten) | ✅ | 2 vCPU / 2 GB RAM / 50 GB disco |
| **24/02/26** | Dashboard P2601 desplegado | ✅ | Métricas operativas en ns8 |
| **25/02/26** | VM 101 creada (sql-dasuten) | ✅ | 2 vCPU / 4 GB RAM / 60+100 GB |
| **25/02/26** | SQL Server 2019 instalado | ✅ | Autenticación mixta habilitada |
| **26/02/26** | OpenSSH en VMs Windows | ✅ | Puerto 7022 configurado |
| **26/02/26** | Backup vzdump (falla VM 101) | ⚠️ | Sin espacio en disco |
| **27/02/26** | VM 102 creada (pcv-dasu0) | ✅ | Win 10 LTSC + SSH |
| **05/03/26** | **Validación usuaria (Andrea Almirón)** | ✅ | Login exitoso, sistema operativo |
| **05/03/26** | Tailscale subnet router | ⏳ | 10.0.100.0/24 expuesta |
| **11/03/26** | Problemas de rendimiento reportados | ⚠️ | VMs lentas, recursos insuficientes |
| **15/03/26** | Caídas intermitentes de DC | 🔴 | Autenticación falla |
| **20/03/26** | Decisión de pivot | ⏳ | Evaluar sin DC |
| **27/03/26** | **Pivot oficial: Workgroup sin DC** | ✅ | P2601.09 iniciado |
| **15/04/26** | **Validación final (Workgroup)** | ✅ | Sistema 100% operativo |
---
## 🔬 Análisis de Señales de Alerta
### Señales Tempranas (23-28/02)
| Señal | Interpretación | Acción No Tomada |
|:---|:---|:---|
| "Server Core para optimizar" | Recursos insuficientes desde inicio | Reducir scope o upgrade hardware |
| "2C/2GB/50GB" | DC sub-dimensionado | Asignar más RAM al DC |
| "Fallo parcial VM 101" | Disco lleno | Limpiar o expandir storage |
| "Tunneling LPF" | Complejidad de red creciente | Simplificar a red plana |
### Señales Tardías (01-15/03)
| Señal | Interpretación | Consecuencia |
|:---|:---|:---|
| Caídas de DC | RAM insuficiente | Sin autenticación |
| Lentitud general | CPU/RAM sobre-comprometida | Experiencia de usuario pobre |
| AnyDesk requerido | Red inestable | Dependencia de terceros |
---
## 💡 Lecciones Aprendidas
### 1. "Menos es Más" (Principio ADN)
**Lección:** La complejidad debe justificarse con beneficios tangibles.
**Caso DC:** El Domain Controller añadía:
- 1 VM adicional (4 GB RAM, 2 vCPU)
- Complejidad de red (DNS, GPO, dominio)
- Punto de falla crítico
**Beneficio:** Ninguno tangible para el caso de uso (2 usuarias, 1 PC).
**Principio aplicado (Workgroup):**
- 2 VMs en vez de 3
- Red plana en vez de NAT
- SQL Auth en vez de Kerberos
### 2. Validar Recursos Antes de Comprometerse
**Lección:** Los números no mienten. Si 15 GB < 20 GB requeridos, el proyecto está en riesgo.
**Señales ignoradas:**
- RAM: 15 GB disponibles vs 20 GB requeridos
- Disco: 94 GB vs 180 GB requeridos
- vCPU: 6 núcleos vs 8+ requeridos
**Acción correctiva (Workgroup):**
- 1 VM SQL (4 GB) + 1 VM PCV (4 GB) = 8 GB
- Host: 4 GB → **12 GB total, dentro de límites**
### 3. La Complejidad de Red es un Multiplicador de Fallas
**Lección:** Cada capa de abstracción de red (NAT, tunneling, subnet routing) es un punto de falla potencial.
**Enfoque DC:**
```
PC → AnyDesk → VM → NAT → DC (auth) → SQL
```
**Enfoque Workgroup:**
```
PC → SQL (red plana)
```
**Resultado:** 4 componentes → 2 componentes
### 4. Ingeniería Inversa Antes de Asumir Dependencias
**Lección:** No asumir que el software requiere AD DS sin verificar.
**Suposición inicial:** "DASUTEN requiere dominio porque usa Windows Auth"
**Verificación (11/04/26):**
- `Kermet.ini` con `UID=sa` → SQL Auth clásica
- Sin dependencia de Kerberos
- Sin dependencia de GPOs
**Acción:** Modificar 1 archivo `.ini` en vez de mantener 3 VMs.
### 5. El Usuario Final es el Validador Definitivo
**Lección:** La validación técnica no alcanza; el usuario valida la experiencia real.
**Validación 05/03 (DC):** ✅ "Login exitoso" — pero sistema lento
**Validación 15/04 (Workgroup):** ✅ "Datos actualizados, sistema rápido"
**Diferencia:** Menos capas = más rendimiento percibido.
---
## 📊 Comparativa: DC vs Workgroup
| Métrica | DC (23/02-27/03) | Workgroup (27/03-presente) |
|:---|:---|:---|
| **VMs** | 3 (DC + SQL + PCV) | 2 (SQL + PCV) |
| **RAM total** | ~20 GB requeridos | ~12 GB requeridos |
| **vCPU** | 8+ | 6 |
| **Disco** | ~180 GB | ~140 GB |
| **Red** | NAT 10.0.100.x + tunneling | DHCP plano 192.168.1.x |
| **Autenticación** | AD DS (Kerberos) | SQL Auth |
| **Puntos de falla** | 5+ | 2 |
| **Validación usuaria** | ✅ Lento/intermitente | ✅ Rápido/estable |
---
## 🧭 Línea de Tiempo de la Decisión
### Fase 1: Optimismo Inicial (23-28/02)
> "Vamos a replicar la arquitectura enterprise en el servidor nuevo"
- Instalación de Proxmox
- Creación de VMs con recursos "mínimos viables"
- Configuración de red privada compleja
### Fase 2: Primeras Grietas (01-15/03)
> "Las VMs están lentas, el DC se cae seguido"
- Backups fallan por espacio
- DC requiere reinicios frecuentes
- AnyDesk se vuelve necesario para trabajar
### Fase 3: Evaluación (15-20/03)
> "¿Realmente necesitamos el DC?"
- Análisis de costos/beneficios
- Ingeniería inversa del sistema DASUTEN
- Descubrimiento: no hay dependencia real de AD
### Fase 4: Pivot (27/03)
> "Menos es más: eliminamos el DC"
- VMs legacy apagadas y preservadas
- Nueva VM `dasu-sql4` con enfoque Workgroup
- Red plana DHCP del ISP
### Fase 5: Validación (15/04)
> "Funciona. Rápido y simple."
- Sistema 100% operativo
- Usuaria confirma datos actualizados
- Pipeline de backups automatizado
---
## 🔗 Referencias a Bitácoras Originales
| Fecha | URL | Extracto |
|:---|:---|:---|
| 23/02/26 | `/bitacoras/2026-02-23` | "Decisión de despliegue Server Core para optimizar recursos" |
| 24/02/26 | `/bitacoras/2026-02-24` | "Subred privada segregada (10.0.100.x)" |
| 26/02/26 | `/bitacoras/2026-02-26` | "Resguardo Integral Offline (Fallo parcial VM 101)" |
| 05/03/26 | `/bitacoras/2026-03-05` | "Validación Presencial por Usuario — EXITOSO" |
| 27/03/26 | `/bitacoras/2026-03-27` | "Pivot: Enfoque Workgroup sin DC" |
---
## 📝 Recomendaciones para Futuros Proyectos
### 1. Checklist de Recursos (Pre-Proyecto)
- [ ] Calcular RAM requerida + 20% margen
- [ ] Calcular vCPU requeridos + 1 núcleo margen
- [ ] Calcular disco requerido + 30% margen
- [ ] Validar que el hardware físico cumple todos los requisitos
### 2. Principio de Complejidad Progresiva
- [ ] Empezar con la arquitectura más simple posible
- [ ] Añadir complejidad solo cuando se justifique con beneficios medibles
- [ ] Documentar cada capa de complejidad añadida
### 3. Validación de Dependencias de Software
- [ ] No asumir dependencias (AD, DNS, GPO) sin verificar
- [ ] Hacer ingeniería inversa del software antes de diseñar infraestructura
- [ ] Preguntar: "¿Qué pasa si sacamos esta capa?"
### 4. Señales de Alerta Temprana
| Señal | Acción Correctiva |
|:---|:---|
| Backups fallan por espacio | Expandir storage o reducir scope |
| VMs lentas desde el inicio | Reducir cantidad o upgrade hardware |
| Múltiples capas de red | Simplificar a red plana |
| Caídas intermitentes | Investigar recursos (RAM/CPU) |
---
## 🎓 Conclusión
El enfoque con Domain Controller **no fue un fracaso**, fue un **proceso de aprendizaje necesario** que permitió:
1. **Entender los límites del hardware** disponible
2. **Descubrir que la complejidad no era necesaria** para el caso de uso
3. **Validar que el usuario final** prioriza rendimiento sobre arquitectura "enterprise"
4. **Documentar señales de alerta** para futuros proyectos
**Principio rector:** *"La arquitectura más simple que funciona es mejor que la arquitectura 'correcta' que apenas se sostiene."*
---
**Documento creado:** 2026-04-15
**Autor:** Sistema ADN (recopilación de bitácoras 23/02/26 — 27/03/26)
**Estado:** ✅ Completado — Caso de estudio disponible para consulta