Ir al contenido

F04 — Architecture

Disenar la arquitectura dividiendo componentes deterministicos y componentes IA, documentando cada decision critica en un ADR. Cada servicio justifica su nivel de IA (0-3).


1. ADR Template (Architecture Decision Record)

Sección titulada «1. ADR Template (Architecture Decision Record)»
# ADR-NNN: [Titulo de la decision]
## Status
Propuesto | Aceptado | Deprecado | Reemplazado por ADR-XXX
## Contexto
Que situacion motiva esta decision? Que restricciones existen?
## Decision
Que decidimos y por que?
## Consecuencias
- Positivas: que ganamos
- Negativas: que trade-offs aceptamos
- Riesgos: que puede salir mal
## Alternativas Evaluadas
| Opcion | Pros | Contras | Razon de descarte |
|--------|------|---------|-------------------|
| A | ... | ... | ... |
| B | ... | ... | ... |
## AI-Specific Considerations (si aplica)
- Nivel de IA: 0/1/2/3
- Modelo(s): ...
- Costo estimado: $/mes
- Fallback deterministico: si/no, descripcion
- Latencia esperada: p50/p95

Documento central que muestra que es deterministico y que usa IA:

project/F04_architecture/ai_partition_map.yaml
partition:
deterministic_components:
- name: "Auth Service"
level: 0
justification: "Logica de autenticacion no necesita IA"
latency_p95_ms: 50
cost_per_req_usd: 0
- name: "Payment Processing"
level: 0
justification: "Regulado, debe ser 100% deterministico"
latency_p95_ms: 200
cost_per_req_usd: 0
ai_components:
- name: "Product Search"
level: 1 # RAG
justification: "Busqueda semantica mejora conversion 30%"
model: "text-embedding-3-large + reranker"
latency_p95_ms: 400
cost_per_req_usd: 0.001
fallback: "Keyword search (Elasticsearch)"
- name: "Customer Support Agent"
level: 3 # Autonomous agent
justification: "Requiere razonamiento multi-paso: consultar CRM, buscar docs, responder"
model: "Claude Sonnet 4.5"
tools: ["crm-mcp-server", "knowledge-base-mcp-server", "ticket-mcp-server"]
latency_p95_ms: 5000
cost_per_req_usd: 0.03
fallback: "Escalation to human agent"
hitl_required: true
hitl_trigger: "confidence < 70% OR action = refund > $100"
1. ¿Equipo domina Python? → Backend: FastAPI/Django
¿Equipo domina JS/TS? → Backend: Hono/NestJS/Next.js
¿Equipo domina Go? → Backend: Chi/Echo (si no es AI-heavy)
2. ¿Compliance requiere on-premise? → Infra: Container/K8s on-prem
¿Budget < $100/mes? → Infra: Serverless (Cloudflare Workers, Vercel)
¿Necesita GPU? → Infra: Container con GPU (ECS, GKE)
¿Default? → Infra: PaaS (Railway, Render, Cloud Run)
3. ¿Multiples agentes coordinados? → Orquestacion: LangGraph (stateful cycles)
¿Tareas estructuradas multi-paso? → Orquestacion: CrewAI
¿Simple prompt chain? → Orquestacion: Custom (sin framework)
4. ¿Necesita vector search? → DB: PostgreSQL + pgvector (default)
¿Volumen masivo de vectors? → DB: Qdrant / Pinecone

Para cada decision significativa, evaluar:

CriterioPesoOpcion AOpcion BOpcion C
Costo mensual25%$50$200$500
Latencia p9520%100ms50ms30ms
Skill del equipo20%AltoMedioBajo
Compliance15%OKOKRequiere ajuste
Escalabilidad10%Auto-scaleManualAuto-scale
Vendor lock-in10%BajoMedioAlto
Score ponderado100%8.27.56.1

5. NFR (Non-Functional Requirements) Template

Sección titulada «5. NFR (Non-Functional Requirements) Template»
nfr:
latency:
api_p50_ms: 200
api_p95_ms: 500
llm_p50_ms: 1500
llm_p95_ms: 3000
availability:
target: "99.5%"
rto_minutes: 30
rpo_minutes: 60
cost:
monthly_budget_usd: 500
cost_per_llm_request_max_usd: 0.05
daily_cost_alert_threshold_usd: 25
security:
owasp_llm_top10: "required"
owasp_asi_top10: "required"
data_classification: "required"
pen_test_frequency: "quarterly"
scalability:
concurrent_users: 100
requests_per_second: 50
auto_scaling: true
  • AI Partition Map documentado (que es deterministico, que es IA)
  • ADR de stack selection (adr_001_stack_selection.md)
  • ADR por cada decision de nivel AI > 0
  • Fallback strategy definida para cada componente AI
  • NFR documentados con targets cuantificables
  • Deployment track seleccionado con justificacion
  • Cost model estimado por componente
ArtefactoSoloLeanFull
adr_001_stack_selection.mdRequeridoRequeridoRequerido
ai_partition_map.yamlInformalYAMLYAML + diagrama
ADRs adicionalesNo requeridoPor componente AITodas las decisiones
Trade-off matrixNo requeridoInformalFormal
NFR documentEn configYAML basicoYAML + monitoring
  • CORE_F04_Patrones_Agenticos.md — patrones de agentes
  • CORE_F04_Stack_Selection_Framework.md — criterios de stack
  • CORE_F04_Software_Survival_Assessment.md — assessment de supervivencia
  • Schema: scripts/schemas/ai_cost_model.schema.json
  • Skill: /f04_architecture

AI-First Engineering Framework v6.5 — Phase 4: AI/Deterministic Architecture Design