Skip to content

Commit 868d2da

Browse files
docs: specify aws practice foundations (#76)
Closes #33 Resumen de revisión diferida: - PR fusionado en modo autónomo autorizado. - Validaciones locales y check remoto rust en verde. Co-authored-by: Joel Alvarez D. <124008575+joelalvarezduenas@users.noreply.github.com>
1 parent 4953878 commit 868d2da

5 files changed

Lines changed: 120 additions & 15 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ complementarios como `rust-devops`, `rust-api-design` y
4242
| 06 | Servicios manejados | `src/managed_services.rs` | implemented |
4343
| 07 | Serverless | `src/serverless.rs` | implemented |
4444
| 08 | Costos y FinOps | `src/finops.rs` | implemented |
45-
| 09 | AWS en la práctica | `src/aws_practice.rs` | planned |
45+
| 09 | AWS en la práctica | `src/aws_practice.rs` | draft |
4646
| 10 | GCP en la práctica | `src/gcp_practice.rs` | planned |
4747

4848
Estados posibles: `planned`, `draft`, `implemented`, `tested`,

ROADMAP.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ esperada es:
5050
| 06 | Servicios manejados | implemented |
5151
| 07 | Serverless | implemented |
5252
| 08 | Costos y FinOps | implemented |
53-
| 09 | AWS en la práctica | planned |
53+
| 09 | AWS en la práctica | draft |
5454
| 10 | GCP en la práctica | planned |
5555

5656
## Alineación RFC-0001
@@ -74,6 +74,6 @@ esperada es:
7474

7575
## Siguiente paso natural
7676

77-
Continuar con el milestone `09. AWS en la práctica`, manteniendo la regla del
78-
curso: primero conceptos transferibles, después aterrizaje por proveedor sin
79-
convertir el capítulo en catálogo de consola.
77+
Completar el milestone `09. AWS en la práctica` con el flujo restante: modelo
78+
Rust mínimo, tests, capítulo narrativo expandido, diagrama Mermaid, ejemplo
79+
ejecutable, ejercicios, soluciones y análisis de costos.

course.manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
"number": 9,
127127
"title": "AWS en la práctica",
128128
"slug": "aws-en-la-practica",
129-
"status": "planned",
129+
"status": "draft",
130130
"milestone": "09. AWS en la práctica",
131131
"document": "docs/09-aws-en-la-practica.md",
132132
"module": "src/aws_practice.rs",

docs/09-aws-en-la-practica.md

Lines changed: 111 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,119 @@
22

33
- **Curso:** rust-cloud
44
- **Semestre:** 5
5-
- **Estado:** planned
5+
- **Estado:** draft
66
- **Milestone:** 09. AWS en la práctica
7+
- **Issue:** #33
78
- **Módulo Rust:** `src/aws_practice.rs`
89

10+
## Concepto
11+
12+
AWS en la práctica es el aterrizaje de los fundamentos del curso en una
13+
plataforma concreta. No es un catálogo de servicios ni una guía de consola. Es
14+
un ejercicio de traducción: tomar una necesidad de producto y expresarla como
15+
decisiones AWS explícitas sobre cómputo, almacenamiento, red, identidad,
16+
operación, costo y frontera de responsabilidad.
17+
18+
La pregunta central no es "¿qué servicio de AWS uso?", sino "¿qué contrato del
19+
sistema necesito y qué servicio de AWS lo representa con menos deuda para este
20+
caso?".
21+
22+
## Imagen mental
23+
24+
Piensa en AWS como una ciudad con infraestructura compartida.
25+
26+
- **VPC** define calles, zonas y fronteras de tráfico.
27+
- **IAM** define credenciales, permisos y llaves de acceso.
28+
- **EC2, ECS, Lambda y servicios administrados** son formas distintas de operar
29+
trabajo.
30+
- **S3, EBS, EFS y bases administradas** son formas distintas de guardar datos.
31+
- **CloudWatch, CloudTrail y métricas** permiten investigar qué ocurrió.
32+
- **Budgets, tags y Cost Explorer** ayudan a explicar gasto y responsabilidad.
33+
34+
La ciudad ofrece muchas herramientas, pero la ingeniería sigue siendo elegir
35+
rutas, límites, dueños y señales que sostengan un sistema real.
36+
37+
## Problema
38+
39+
AWS es amplio y cambia con frecuencia. Enseñarlo como lista de productos
40+
produce estudiantes que reconocen nombres, pero no necesariamente entienden la
41+
decisión detrás de esos nombres. Además, las demos rápidas pueden ocultar temas
42+
centrales: permisos excesivos, redes públicas por comodidad, recursos sin tags,
43+
costos invisibles, datos sin ciclo de vida, dependencia innecesaria de servicios
44+
específicos y operación sin señales.
45+
46+
La enseñanza de AWS suele caer en cuatro errores:
47+
48+
- empezar por consola y no por contrato de arquitectura;
49+
- presentar servicios como equivalentes sin hablar de responsabilidad operativa;
50+
- usar credenciales amplias para avanzar rápido;
51+
- ignorar costo, tags, regiones, límites y observabilidad hasta el final.
52+
53+
Sin una base clara, el estudiante puede creer que AWS se aprende memorizando
54+
nombres de servicios, copiando diagramas de referencia o desplegando recursos
55+
sin explicar sus invariantes.
56+
57+
## Alternativas consideradas
58+
59+
1. **Curso guiado por consola.** Es vistoso y rápido, pero envejece pronto y
60+
puede enseñar clics antes que criterios.
61+
2. **Curso guiado por certificación.** Ordena vocabulario, pero prioriza
62+
cobertura de examen sobre diseño de sistemas.
63+
3. **Curso guiado por patrones transferibles.** Parte de cargas, datos, red,
64+
identidad, observabilidad y costo; después nombra servicios AWS como
65+
implementaciones posibles.
66+
67+
## Justificación
68+
69+
Este capítulo adopta la tercera alternativa. AWS aparece como proveedor
70+
concreto, pero no reemplaza el canon del curso. Cada servicio se estudia como
71+
representación de una decisión ya trabajada: modelo de servicio, cómputo,
72+
almacenamiento, VPC, IAM, managed services, serverless y FinOps.
73+
74+
La decisión conserva RFC-0001 §2: concepto antes de implementación, problema
75+
antes de herramienta, alternativas antes de elección. También mantiene
76+
RFC-0001 §10: proveedor después de fundamentos.
77+
78+
## Invariantes del capítulo
79+
80+
- AWS se enseña como traducción de fundamentos, no como catálogo.
81+
- Todo recurso debe declarar región, ambiente, dueño y propósito.
82+
- IAM debe preferir permisos mínimos y credenciales temporales cuando aplique.
83+
- Una VPC debe distinguir tráfico público, privado y dependencias externas.
84+
- La elección de cómputo debe explicar operación delegada, escalado y límites.
85+
- Los datos deben declarar durabilidad, recuperación, ciclo de vida y frontera
86+
de acceso.
87+
- Serverless debe declarar evento, timeout, concurrencia, retry e idempotencia.
88+
- Los servicios administrados no eliminan responsabilidad: cambian qué se
89+
delega y qué sigue siendo del equipo.
90+
- Toda decisión AWS debe tener señal operativa: logs, métricas, auditoría o
91+
trazas según el caso.
92+
- El costo debe ser atribuible mediante tags, unidad económica y presupuesto.
93+
- Los nombres, precios, cuotas y límites de AWS son material vivo y deben
94+
revisarse cuando se usen ejemplos fechados.
95+
96+
## Comparación educativa inicial
97+
98+
| Necesidad | Pregunta de ingeniería | Ejemplo AWS posible | Riesgo común |
99+
|-----------|------------------------|---------------------|--------------|
100+
| Ejecutar API estable | ¿Quién opera runtime, hosts y escalado? | EC2, ECS, App Runner o Lambda | Elegir por moda, no por contrato |
101+
| Publicar assets | ¿Qué durabilidad y acceso necesitan los objetos? | S3 y CloudFront | Hacer público lo que debía ser privado |
102+
| Separar red | ¿Qué debe vivir público y qué debe vivir privado? | VPC, subnets, route tables | Exponer bases o SSH por comodidad |
103+
| Acceso humano | ¿Qué permisos y duración son aceptables? | IAM Identity Center, roles | Usuarios permanentes con permisos amplios |
104+
| Procesar eventos | ¿Qué pasa si se repite el evento? | Lambda, SQS, EventBridge | Retry sin idempotencia |
105+
| Observar operación | ¿Qué señal permite investigar incidentes? | CloudWatch, CloudTrail | Logs sin retención ni correlación |
106+
| Controlar costo | ¿Quién entiende el gasto y contra qué unidad? | Tags, Budgets, Cost Explorer | Factura agregada sin dueño |
107+
108+
## Decisiones registradas
109+
110+
- El capítulo no empieza por comandos de AWS CLI ni por consola.
111+
- AWS se modela como una traducción de fundamentos a servicios concretos.
112+
- Los servicios se nombran solo cuando ayudan a explicar una decisión.
113+
- El modelo Rust mínimo deberá representar una carga AWS educativa sin
114+
depender de SDKs.
115+
- Las recomendaciones dependientes de precios, cuotas o límites concretos se
116+
consideran material vivo y no se publican sin fecha y revisión humana.
117+
9118
## Nota editorial
10119

11-
Capítulo planeado. No está marcado como `reviewed` ni `published`.
120+
Este capítulo está en borrador. No está marcado como `reviewed` ni `published`.

src/lib.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ const PLANNED_CHAPTERS: [Chapter; 10] = [
9898
Chapter {
9999
number: 9,
100100
title: "AWS en la práctica",
101-
status: ChapterStatus::Planned,
101+
status: ChapterStatus::Draft,
102102
},
103103
Chapter {
104104
number: 10,
@@ -123,12 +123,8 @@ mod tests {
123123

124124
assert_eq!(chapters.len(), 10);
125125
assert_eq!(chapters[7].title, "Costos y FinOps");
126-
assert!(
127-
chapters
128-
.iter()
129-
.skip(8)
130-
.all(|chapter| chapter.status == ChapterStatus::Planned)
131-
);
126+
assert_eq!(chapters[8].status, ChapterStatus::Draft);
127+
assert_eq!(chapters[9].status, ChapterStatus::Planned);
132128
assert_eq!(chapters[0].status, ChapterStatus::Implemented);
133129
assert_eq!(chapters[1].status, ChapterStatus::Implemented);
134130
assert_eq!(chapters[2].status, ChapterStatus::Implemented);

0 commit comments

Comments
 (0)