Introducción a la Computación en la Nube
Esta unidad introduce qué es la computación en la nube, por qué surgió, cómo se clasifica, qué oportunidades y desafíos plantea y qué vocabulario mínimo necesitás para moverte con soltura en el resto del cuatrimestre.
1. La idea de fondo
Durante décadas, montar una aplicación significaba comprar servidores, refrigerarlos, alimentarlos, asegurarlos y rezar para que no se rompieran un domingo a las 3 de la mañana. La computación en la nube cambia esa ecuación: en lugar de poseer la infraestructura, la alquilás bajo demanda a un proveedor especializado, accedés a ella por internet y pagás solo por lo que usás.
La computación en la nube es ante todo un modelo de negocio.
La idea de fondo
El cambio no es tanto técnico como económico: en lugar de comprar y mantener hardware propio, pagás por lo que usás. Se pasa de una gran inversión inicial (CAPEX) a un gasto operativo flexible (OPEX).
Modelos de servicio
IaaSAlquilás la infraestructura cruda: servidores, red, almacenamiento.
PaaSAlquilás una plataforma lista para desplegar tu código.
SaaSUsás el software ya terminado, sin gestionar nada por debajo.
Para tener en cuenta
- Cada modelo traslada más responsabilidad (y costo operativo) al proveedor.
- La nube no siempre es más barata: conviene cuando la demanda es variable.
2. Definición formal
La definición de referencia es la del NIST (National Institute of Standards and Technology, EE. UU.), publicada en 2011. Sigue vigente porque describe el modelo en términos abstractos, no atados a un proveedor.
Definición NIST de computación en la nube.
Texto original
"Un modelo que permite el acceso ubicuo, conveniente y bajo demanda a través de la red a un conjunto compartido de recursos informáticos configurables (redes, servidores, almacenamiento, aplicaciones y servicios) que pueden ser rápidamente provistos y liberados con un esfuerzo mínimo de gestión."
Tres componentes del modelo
5 característicasAtributos esenciales que definen qué es y qué no es la nube.
3 modelos de servicioIaaS, PaaS, SaaS (y derivados modernos como FaaS).
4 modelos de desplieguePública, privada, híbrida y comunitaria.
Para tener en cuenta
- Si a una solución le falta alguna de las 5 características, técnicamente no es nube.
- "Tener un servidor en un data center" no equivale a "estar en la nube".
3. Las cinco características esenciales
Según NIST, una solución debe cumplir cinco propiedades para considerarse computación en la nube. La primera es el autoservicio bajo demanda: el usuario aprovisiona recursos cuando los necesita mediante un portal o una API, sin intervención humana del proveedor. La segunda es el acceso amplio a la red: los servicios están disponibles vía mecanismos estándar (HTTP/HTTPS, APIs REST) desde cualquier dispositivo. La tercera es la agrupación de recursos o multi-tenancy: el proveedor comparte hardware entre clientes mediante virtualización, y el cliente no ve ni controla la ubicación exacta.
La cuarta es la elasticidad rápida: la capacidad escala hacia arriba o abajo de forma ágil, idealmente automática, de modo que desde la perspectiva del cliente los recursos parecen infinitos. La quinta es el servicio medido: el uso se monitorea y se factura por consumo (CPU-hora, GB almacenados, requests, ancho de banda) con reportes detallados. Si a una solución le falta alguna de estas cinco, técnicamente no es nube, aunque viva en un data center remoto.
4. Modelos de servicio
NIST distingue tres modelos clásicos según cuánto administra el cliente y cuánto el proveedor —IaaS, PaaS y SaaS— a los que la industria sumó después dos variantes modernas que conviene presentar en el mismo movimiento: FaaS (serverless) y BaaS. La pirámide va de menos abstracción y más control (IaaS) a más abstracción y menos control (SaaS, BaaS), con FaaS como una rama de PaaS llevada al extremo del event-driven.
El proveedor entrega máquinas virtuales, discos y redes. El cliente administra el sistema operativo, el middleware, el runtime y la aplicación.
Metáfora
Como alquilar un terreno con servicios básicos: vos construís y mantenés la casa.
Según la nube
Cuándo conviene usarlo
- Migración "lift and shift" de aplicaciones existentes.
- Cargas con requisitos específicos de SO o kernel.
- Necesidad de control total sobre el entorno de ejecución.
Más detalle del modelo, productos por proveedor y cuándo conviene en el recurso VPS.
El proveedor entrega un entorno de ejecución gestionado (runtime, base de datos, middleware). El cliente solo despliega su código y sus datos.
Metáfora
Como alquilar un local comercial con instalación eléctrica, agua y aire acondicionado: solo tenés que traer tu mercadería y atender.
Según la nube
Cuándo conviene usarlo
- Equipos chicos que necesitan velocidad de desarrollo.
- Aplicaciones web/API estándar sin requisitos de bajo nivel.
- Prototipos y MVPs donde el time-to-market es lo más importante.
El proveedor entrega una aplicación lista para usar vía navegador o API. El cliente solo carga sus datos y configura el comportamiento.
Metáfora
Como reservar una mesa en un restaurante: no cocinás, no comprás los insumos, solo elegís del menú.
Ejemplos cotidianos
Cuándo conviene usarlo
- Funciones genéricas que ya están bien resueltas por el mercado (email, CRM, ofimática).
- Equipos distribuidos que necesitan colaboración inmediata.
- Casos donde no aporta valor "reinventar la rueda".
El proveedor ejecuta código en respuesta a eventos. No hay servidor que aprovisionar: subís una función, definís el disparador y se ejecuta cuando corresponde. Se factura por invocación y por tiempo de ejecución.
Metáfora
Como un taxi: aparece solo cuando lo llamás, te lleva y se va. No pagás cuando no lo usás.
Según la nube
Cuándo conviene usarlo
- Tareas event-driven: procesar un upload, responder un webhook.
- Cargas esporádicas o impredecibles.
- Glue code: pequeñas integraciones entre servicios.
Más detalle del modelo y productos por proveedor en el recurso serverless.
Más allá de los tres modelos clásicos NIST y de FaaS, hay una variante moderna que conviene tener identificada y una capa transversal que aparece en casi cualquier producto. Las plataformas BaaS (Backend as a Service, como Firebase o Supabase) llevan al extremo la lógica de SaaS aplicada al backend: integran auth, base de datos, storage y funciones en un solo SDK que el frontend consume directo. Y las redes CDN (CloudFront, Cloudflare, Fastly) no son un modelo de servicio en sí mismo: son una capa de distribución global que se monta sobre cualquiera de los modelos anteriores para servir contenido cerca del usuario.
IaaS vs SaaS: responsabilidades
IaaS
- Control total sobre SO, red y stack.
- Flexibilidad para casos atípicos.
- Cliente responsable de parches, backups, monitoreo.
- Más costo operativo y necesidad de expertise.
SaaS
- Listo para usar, sin operación.
- Actualizaciones automáticas a cargo del proveedor.
- Poca personalización y dependencia total del proveedor.
- Datos sensibles fuera del control directo del cliente.
5. Modelos de despliegue
Además del "qué" entrega la nube, importa "dónde" y "para quién" se despliega. NIST define cuatro modelos clásicos, a los que la industria suele sumar uno quinto como variante moderna. La nube pública es la más común y económica al inicio: infraestructura propiedad de un proveedor (AWS, Azure, GCP) y compartida entre múltiples clientes. La nube privada, en el otro extremo, es infraestructura dedicada a una sola organización —on-premise o tercerizada— con mayor control y compliance, pero también mayor costo.
Entre esos dos extremos aparecen las variantes mixtas: la nube híbrida combina pública y privada, moviendo datos y aplicaciones entre ambas según la sensibilidad o la carga; la nube comunitaria se comparte entre organizaciones con intereses comunes (un consorcio universitario, organismos de un mismo sector); y el multi-cloud, cada vez más adoptado, usa simultáneamente varios proveedores públicos para evitar dependencia (vendor lock-in) y aprovechar lo mejor de cada uno.
6. Una breve historia
La computación en la nube no apareció de la nada: es la evolución de varias décadas de tendencias técnicas y económicas.
- Años 60-70 · Mainframes. Cómputo centralizado con terminales tontas. Tiempo compartido entre usuarios: la idea de "alquilar cómputo" ya existía.
- Años 80-90 · Cliente-servidor. Las PCs ganan poder local y se conectan a servidores. Se descentraliza.
- Años 90-2000 · Internet y la web. Las aplicaciones se vuelven accesibles globalmente desde el navegador.
- Años 2000 · Virtualización. Múltiples sistemas operativos sobre un mismo hardware (VMware, Xen). Es la base técnica de la nube moderna.
- 2006 · Nace AWS. Amazon lanza S3 y EC2, abriendo el mercado de la nube pública tal como la conocemos hoy.
- 2010 en adelante · Madurez. Aparecen Azure, GCP y un ecosistema completo de servicios gestionados: bases de datos, IA, big data, IoT, serverless.
7. Beneficios y desafíos
Adoptar la nube no es solo una decisión técnica: implica beneficios concretos pero también nuevos riesgos y compromisos.
Beneficios vs Desafíos de la nube
Beneficios
- Conversión de CAPEX en OPEX: sin grandes inversiones iniciales.
- Escalabilidad casi instantánea ante picos de demanda.
- Alcance global: desplegar en otra región en minutos.
- Alta disponibilidad y recuperación ante desastres más simples.
- Acceso a servicios avanzados (IA, big data, IoT) listos para usar.
- Foco en el negocio, no en operación de infraestructura.
Desafíos
- Vendor lock-in: dependencia técnica y económica del proveedor.
- Seguridad y privacidad de los datos en infraestructura compartida.
- Cumplimiento normativo (GDPR, Ley 25.326, soberanía de datos).
- Latencia y dependencia de la conectividad.
- Costos descontrolados sin gobernanza ("bill shock").
- Nuevas habilidades requeridas en los equipos técnicos.
Qué suele pasar
Una empresa migra sus servidores tal cual a IaaS y termina pagando más que antes, sin haber ganado en agilidad ni en disponibilidad.
Por qué
Se replica el modelo on-premise sin aprovechar elasticidad, servicios gestionados ni reservas de capacidad. La nube cobra cada hora, todos los meses, sin importar que el servidor esté ocioso.
Cómo evitarlo
Antes de migrar, identificá qué cargas se benefician realmente de la nube (variables, estacionales, globales) y cuáles conviene dejar on-premise.
Qué suele pasar
Se usa la cuenta raíz para todo, sin crear roles ni usuarios, y se exponen claves de acceso en repositorios públicos.
Por qué
Es el camino más rápido al empezar. El problema aparece cuando alguien descubre las claves y empieza a minar criptomonedas a costa de tu cuenta.
Cómo evitarlo
Activá MFA en la cuenta raíz, usá IAM con permisos mínimos y nunca subas credenciales al control de versiones.
Casi todos los proveedores tienen capa gratuita (free tier): aprovechala para experimentar durante el cuatrimestre sin gastar un peso.
Etiquetá (taggeá) cada recurso con su proyecto, ambiente y responsable. Es la única forma escalable de saber después qué pagás y por qué.
CAPEX vs OPEX
CAPEX (modelo tradicional)
- Activo propio, amortizable.
- Costo predecible una vez comprado.
- Gran inversión inicial.
- Difícil ajustar capacidad rápido.
OPEX (modelo nube)
- Sin desembolso inicial.
- Capacidad ajustable mes a mes.
- Gasto recurrente que nunca termina.
- Puede salirse de control sin monitoreo.
8. Infraestructura física: regiones y zonas
Aunque desde el cliente la nube parezca "etérea", por detrás hay centros de datos físicos distribuidos por el planeta. Dos conceptos clave organizan esa geografía:
Ubicación geográfica donde el proveedor tiene un conjunto de centros de datos. Cada región tiene un identificador (por ejemplo, us-east-1, sa-east-1, eu-west-3).
Por qué importa
La región condiciona latencia hacia los usuarios, precio de los servicios y compliance de datos (algunas regulaciones exigen mantener los datos dentro del país).
Cuándo conviene elegirla con cuidado
- Cuando los usuarios están concentrados geográficamente.
- Cuando aplican leyes de soberanía de datos.
- Cuando el costo entre regiones cambia significativamente.
Cada región se divide en varias zonas de disponibilidad: centros de datos físicamente aislados entre sí dentro de la misma región, con energía, red y refrigeración independientes.
Metáfora
Como tener dos depósitos en barrios distintos de la misma ciudad: si se inunda uno, el otro sigue operando.
Cuándo aprovecharlas
- Para alta disponibilidad: replicar la aplicación en al menos dos AZ.
- Para tolerancia a fallos de un data center sin perder latencia.
- Para configuraciones activo-activo y bases de datos replicadas.
9. Principales proveedores
El mercado está dominado por tres grandes (los "hyperscalers"), pero el ecosistema es más amplio y diverso de lo que parece a simple vista. Conviene distinguir tres capas:
Hyperscalers globales
- Amazon Web Services (AWS): pionero y líder del mercado, con la oferta de servicios más amplia.
- Microsoft Azure: fuerte integración con el ecosistema corporativo Microsoft y con escenarios híbridos.
- Google Cloud Platform (GCP): destacado en datos, analítica e inteligencia artificial.
Otros proveedores cloud relevantes
- IBM Cloud, Oracle Cloud, Alibaba Cloud: presencia regional fuerte y nichos corporativos específicos.
VPS providers y "cloud simple"
- DigitalOcean, Linode (Akamai), Vultr, Hetzner: foco en VPS y servicios gestionados simples; precios más predecibles y curva de aprendizaje plana frente a los hyperscalers.
10. Casos de uso típicos
- Aplicaciones y sitios web escalables.
- Procesamiento de datos masivos y analítica (big data, data lakes).
- Machine learning e inteligencia artificial generativa.
- Backups, archivado y planes de recuperación ante desastres.
- Entornos de desarrollo y prueba bajo demanda.
- Streaming de contenidos y videojuegos online.
- Internet de las Cosas (IoT) y procesamiento en el borde (edge computing).
- Cargas batch puntuales: render de video, simulaciones científicas, procesamientos financieros.
11. ¿Cómo decidir si un proyecto va a la nube?
- Caracterizá la carga: ¿es constante, variable, estacional, en picos?
- Evaluá los datos: ¿hay restricciones legales sobre dónde pueden alojarse?
- Estimá el costo: compará TCO (Total Cost of Ownership) on-premise vs nube a 3-5 años.
- Mirá el equipo: ¿tenés gente que sepa operar en la nube o necesitás capacitación?
- Definí la estrategia: lift-and-shift, refactor a PaaS, rebuild cloud-native o quedarse on-premise.
12. Glosario rápido
13. Para profundizar
NIST · lectura ~15 min
La definición canónica de "computación en la nube". Corto, claro y la base teórica de toda la unidad. Imprescindible.
Ir al recursoAWS · lectura por pilares
Conjunto de buenas prácticas organizadas en 6 pilares (operación, seguridad, confiabilidad, eficiencia, costo, sustentabilidad). Útil aún si no usás AWS: los principios son universales.
Ir al recursoLectura larga · referencia académica
Libro de cabecera para cursos universitarios. Cubre fundamentos, arquitectura y patrones de diseño en la nube con un enfoque proveedor-agnóstico.
14. Cierre
La nube no es solo "alquilar servidores": es un cambio de modelo operativo y económico.
Qué hay que llevarse
Adoptar la nube redefine cómo se diseñan, despliegan y escalan los sistemas. El cambio técnico (virtualización, APIs, automatización) habilita un cambio económico (CAPEX → OPEX) y un cambio organizacional (foco en el negocio, no en la operación de fierros).
Qué viene
Unidad 2Virtualización y containerización: las dos capas técnicas que sostienen la nube por debajo.
Unidad 3Tres leyes que moldean cualquier arquitectura distribuida: Conway, Gall y CAP.
Unidad 4Metodologías ágiles y ciclo de vida del software: el proceso humano detrás de la nube.
Unidad 5Conceptos básicos de IA generativa y cómo se integra al stack cloud.
Unidad 6Aplicaciones concretas: cómo se combinan los servicios para armar un producto real.
Antes de seguir
- Asegurate de poder explicar las 5 características esenciales con tus palabras.
- Distinguí IaaS, PaaS, SaaS y FaaS con un ejemplo concreto de cada uno.
- Creá una cuenta gratuita en alguno de los tres grandes proveedores para experimentar en la unidad siguiente.
Virtualización y Containerización
En la Unidad 1 vimos qué es "la nube" como modelo. En esta unidad bajamos un nivel: ¿cómo hace técnicamente un proveedor para que muchos clientes compartan un mismo servidor físico sin pisarse? La respuesta tiene dos capas, una sobre la otra: virtualización y containerización.
1. La idea de fondo
Una computadora física es cara, ocupa espacio y consume energía. Si en cada servidor corre una sola aplicación, la mayoría del tiempo está al 10 % de uso: pagamos por capacidad que no usamos. Las dos tecnologías de esta unidad resuelven el mismo problema desde ángulos distintos: aislar varias cargas dentro de un mismo hardware para aprovecharlo bien.
Aislamiento sin desperdicio: la clave del cómputo moderno.
La idea de fondo
Tanto las máquinas virtuales como los contenedores resuelven el mismo dilema: ¿cómo hago que varias cargas convivan en una sola máquina física sin que se molesten? La diferencia está en qué nivel de la pila se virtualiza.
Dos capas, dos abstracciones
VirtualizaciónSimula hardware completo: cada VM tiene su propio sistema operativo.
ContainerizaciónComparte el sistema operativo del host: cada contenedor es solo un proceso aislado.
Para tener en cuenta
- No es "VM vs contenedor": en la nube real conviven y se complementan.
- Los contenedores ganaron protagonismo porque son livianos, rápidos y portables.
2. Virtualización
La idea de virtualización es vieja: ya estaba en los mainframes de IBM de los años 60-70 (CP/CMS, VM/370), donde se usaba para tiempo compartido entre usuarios. Lo que apareció en los 2000 fue la virtualización x86 mainstream (VMware ESX en 2001, Xen en 2003, KVM en 2007), que llevó esa idea al hardware de commodity y fue la primera respuesta seria al problema del desperdicio en servidores comunes. Permite ejecutar varios sistemas operativos completos sobre un mismo hardware, cada uno dentro de una "máquina virtual" (VM).
Emulación completa de una computadora dentro de otra. Tiene su propio sistema operativo, su propia memoria, su propio disco virtual y su propia tarjeta de red virtual. Para las aplicaciones que corren adentro, es indistinguible de un servidor físico.
Metáfora
Como dividir una casa grande en varios departamentos independientes, cada uno con su propia cocina, baño y entrada. Comparten la estructura del edificio pero internamente son autónomos.
Según la nube
Cuándo conviene usarlas
- Necesitás un sistema operativo distinto al del host (Windows sobre Linux, etc.).
- La aplicación tiene requisitos específicos de kernel o drivers.
- Necesitás aislamiento fuerte por motivos de seguridad o compliance.
El software que crea, ejecuta y administra las máquinas virtuales. Reparte CPU, memoria, disco y red entre las VMs y se asegura de que ninguna invada el espacio de otra.
Metáfora
El portero del edificio: controla quién entra, quién usa el ascensor y cuánta luz consume cada departamento.
Ejemplos comunes
Dato útil
- Los grandes proveedores de nube usan hypervisores propios optimizados (ej. AWS usa Nitro, basado en KVM).
Hypervisor Tipo 1 vs Tipo 2
Tipo 1 (bare-metal)
- Corre directamente sobre el hardware, sin SO huésped.
- Más rápido y eficiente: ideal para data centers.
- Más complejo de instalar y operar.
- Ejemplos: ESXi, Hyper-V, Xen, KVM.
Tipo 2 (hosted)
- Corre como una aplicación dentro de un SO normal.
- Fácil de instalar en tu laptop para pruebas.
- Menos eficiente: hay un SO en el medio.
- Ejemplos: VirtualBox, VMware Workstation, Parallels.
3. Containerización
Las VMs resuelven el problema del aislamiento, pero arrastran un costo: cada una lleva un sistema operativo entero adentro. Si necesitás 50 VMs para 50 microservicios, tenés 50 kernels corriendo en paralelo. Mucho desperdicio de RAM y disco. La containerización es la siguiente vuelta de tuerca: aprovecha que el sistema operativo ya está corriendo y aísla solamente los procesos.
Un proceso (o grupo de procesos) que corre sobre el kernel del sistema operativo del host, pero con su propio sistema de archivos, su propia red y sus propios límites de recursos. No tiene sistema operativo propio: comparte el del host.
Metáfora
Como un local en un shopping: usás la estructura, electricidad y aire acondicionado del edificio (kernel del host), pero adentro decorás y vendés lo que vos quieras, sin ver a los locales vecinos.
Tecnologías populares
Ventajas frente a una VM
- Arranque en milisegundos (vs minutos de una VM).
- Imagen liviana: decenas de MB vs gigabytes.
- Reproducible: la misma imagen corre igual en tu laptop, en CI y en producción.
El "molde" desde el que se levanta un contenedor: un paquete inmutable que contiene el código de la aplicación, sus dependencias, librerías del sistema mínimas y metadatos (variables de entorno, comando de arranque, puertos expuestos). Se guarda en un registry.
Metáfora
La imagen es la receta y el contenedor es el plato cocinado: con una receta podés cocinar cuantos platos quieras, y todos salen iguales.
Conceptos relacionados
- Registry: servidor donde se guardan imágenes (Docker Hub, GitHub Container Registry, AWS ECR).
- Tag: versión de una imagen (
nginx:1.27,postgres:16-alpine). - Layer: cada instrucción del Dockerfile genera una capa cacheable; las imágenes son la suma de capas.
4. VM vs Contenedor
La pregunta "VM o contenedor" no tiene una respuesta única: depende del aislamiento, la portabilidad y la velocidad que necesites.
Máquina virtual vs Contenedor
Máquina virtual
- Aislamiento fuerte (kernel propio).
- Puede correr cualquier SO.
- Arranque en minutos.
- Pesada (GB de disco, mucha RAM).
Contenedor
- Liviano (MB de disco, poca RAM).
- Arranque en milisegundos.
- Comparte kernel con el host (menor aislamiento).
- Atado al SO del host (un contenedor Linux no corre en Windows nativo).
5. Docker, el estándar de facto
Docker no inventó los contenedores —la tecnología venía desde los 2000 con cgroups y namespaces en Linux— pero los hizo accesibles a todo el mundo en 2013 con un CLI simple, un formato de imagen estándar y un registry público. Hoy es prácticamente sinónimo de "contenedor" en el día a día. Para el panorama completo de productos gestionados por proveedor (ECS, GKE, Cloud Run, Container Apps, Fly.io y el resto) y cuándo conviene cada uno, ver el recurso containers.
Docker es un conjunto de herramientas para construir, distribuir y ejecutar
contenedores. Tiene tres componentes principales: el daemon
(servicio en segundo plano que ejecuta los contenedores), el
CLI (el cliente que usás vos para darle órdenes) y el
registry (Docker Hub u otros, donde se publican las
imágenes). La pieza más importante para el desarrollador es el
Dockerfile: un archivo de texto que describe paso a paso
cómo construir una imagen. A partir de él, docker build
produce la imagen, docker run levanta un contenedor desde
ella, y docker push / pull la sube o baja de un registry.
- Creá un archivo llamado
Dockerfileen la raíz de tu app. - Empezá con una imagen base (
FROM node:20-alpine,FROM php:8.4-cli, etc.). - Copiá tu código adentro con
COPY . /app. - Instalá dependencias (
RUN composer install,RUN npm ci). - Definí el comando de arranque con
CMD ["php", "-S", "0.0.0.0:8000"]. - Construí la imagen:
docker build -t mi-app:1.0 . - Probá localmente:
docker run -p 8000:8000 mi-app:1.0 - Autenticate contra el registry:
docker login(Docker Hub) odocker login ghcr.iopara GitHub. - Subila al registry:
docker push mi-usuario/mi-app:1.0
# Ver contenedores corriendo
docker ps
# Ver TODOS los contenedores (incluso los detenidos)
docker ps -a
# Entrar a un contenedor con shell
docker exec -it <container_id> sh
# Ver logs en vivo
docker logs -f <container_id>
# Detener y eliminar un contenedor
docker stop <container_id> && docker rm <container_id>
# Limpiar imágenes, contenedores y volúmenes sin usar
docker system prune -a --volumes
Tip: en muchos comandos podés usar los primeros 3–4 caracteres del ID en lugar de pegarlo entero.
6. Persistencia y red
Por defecto, los contenedores son efímeros: cuando se eliminan, sus datos se pierden. Y están aislados de la red del host. Para apps reales necesitamos dos cosas: una forma de persistir datos y una forma de comunicar contenedores entre sí.
Para resolver la persistencia, Docker provee volúmenes:
espacios de almacenamiento gestionados por el motor que sobreviven al
ciclo de vida del contenedor. Se montan dentro de uno o varios
contenedores y los datos escritos ahí persisten aunque el contenedor se
elimine. Hay tres tipos: named volumes, gestionados por Docker y
recomendados para datos de aplicaciones; bind mounts, que mapean
un directorio del host directamente al contenedor (útil en desarrollo);
y tmpfs, almacenamiento en RAM que se pierde al reiniciar.
Un ejemplo típico: docker run -v miapp_datos:/var/lib/postgresql/data postgres:16.
Para resolver la comunicación entre contenedores, Docker crea
redes virtuales. Dentro de una misma red, cada contenedor
"ve" a los demás por su nombre de servicio en vez de por IP. Las redes
típicas son: bridge (default, red privada entre contenedores
del mismo host), host (sin aislamiento, comparte la red del
host), overlay (distribuida entre múltiples hosts, usada por
Swarm y Kubernetes) y none (aislamiento total sin red).
Así, si tu aplicación se llama web y la base se llama
db, podés conectarte desde la app a
postgres://db:5432 y Docker resuelve el nombre internamente.
7. Orquestación: cuando un solo host no alcanza
Con Docker corriendo en una máquina solucionás el "desarrollo local" y los despliegues simples. Pero en producción real necesitás varios hosts, balanceo de carga, reinicios automáticos, despliegues sin interrupción y escalado horizontal. Esa capa se llama orquestación. Una alternativa para evitar parte de esa complejidad cuando el caso de uso es event-driven y la carga es esporádica es ir directo a serverless: el proveedor decide dónde y cuándo correr tu código y vos no operás cluster.
Orquestar contenedores: del "una máquina, una app" al "muchas máquinas, una plataforma".
Qué problema resuelve
Una vez que tu aplicación tiene 5, 20 o 200 contenedores corriendo en un cluster, hace falta una pieza que decida en qué máquina arranca cada uno, reinicie los que mueren, escale los que reciben carga y los reemplace en orden al actualizar.
Capacidades típicas
SchedulingAsigna contenedores a hosts del cluster según recursos disponibles.
Self-healingReinicia o reemplaza contenedores que fallan.
Service discoveryDa nombres estables a servicios que cambian de IP.
Rolling updatesDespliega versiones nuevas sin downtime.
Para tener en cuenta
- No todos los proyectos necesitan orquestación: arrancar con un solo host y Docker Compose es perfectamente válido.
- La complejidad operativa de Kubernetes es real: tiene curva de aprendizaje empinada.
Sistema open-source desarrollado originalmente por Google, hoy mantenido por la CNCF. Es la herramienta dominante para correr contenedores en producción a escala. Maneja clusters de cientos o miles de nodos.
Conceptos básicos
- Pod: unidad mínima — uno o varios contenedores que comparten red y volúmenes.
- Deployment: declarás cuántas réplicas querés; k8s mantiene ese número.
- Service: punto de entrada estable a un conjunto de Pods.
- Ingress: regla de enrutamiento HTTP desde el exterior.
- ConfigMap / Secret: configuración y credenciales separadas del código.
Para escenarios más simples existe Docker Compose, una
herramienta de Docker para definir aplicaciones multi-contenedor en un
solo archivo YAML (compose.yaml) y levantarlas con un
comando. No reemplaza a Kubernetes, pero es el "punto dulce" para
desarrollo local, demos y producciones chicas. Un compose.yaml
típico define un servicio web (tu app), un servicio
db (Postgres) y un volumen para la base; con
docker compose up -d levanta todo configurado y conectado.
Es exactamente lo que usa este mismo proyecto Sidecar.
Docker Compose vs Kubernetes
Docker Compose
- Curva de aprendizaje plana: un archivo YAML simple.
- Perfecto para desarrollo local y CI.
- Limitado a un solo host (sin balanceo multi-nodo).
- Sin self-healing avanzado ni rolling updates.
Kubernetes
- Escala a cientos o miles de nodos.
- Self-healing, rolling updates, autoscaling.
- Curva de aprendizaje empinada.
- Costo operativo alto si lo gestionás vos mismo.
8. Errores comunes
:latest en producción
Qué suele pasar
El despliegue funciona hoy con nginx:latest; mañana sale una versión major nueva, :latest apunta a ella y tu producción se rompe sin que hayas tocado nada.
Por qué
:latest es una etiqueta mutable: lo que apunta hoy puede ser distinto mañana. Rompe la promesa de reproducibilidad de los contenedores.
Cómo evitarlo
Usá etiquetas específicas (nginx:1.27.3) o, todavía mejor, digests inmutables (nginx@sha256:abc...) en los manifiestos de producción.
Qué suele pasar
Levantás Postgres en un contenedor, cargás datos, todo funciona. Al actualizar la imagen recreás el contenedor y descubrís que perdiste todo.
Por qué
El sistema de archivos del contenedor es efímero: vive y muere con el contenedor. Sin un volumen montado, no hay persistencia real.
Cómo evitarlo
Para cualquier dato que tenga que sobrevivir, montá un volumen (-v o volumes: en compose) apuntando al directorio de datos del servicio.
Qué suele pasar
Tu app dentro del contenedor corre como root porque "es lo más simple". Una vulnerabilidad en la app permite a un atacante escapar del contenedor con privilegios totales.
Por qué
El aislamiento de los contenedores es de proceso, no completo. Si el proceso es root, en algunos escenarios puede aprovechar agujeros del kernel para afectar al host.
Cómo evitarlo
En el Dockerfile, creá un usuario sin privilegios y usá USER appuser antes del CMD. La mayoría de las imágenes oficiales modernas ya vienen así.
9. Tips y buenas prácticas
Usá multi-stage builds: tu imagen final no debería tener compiladores, paquetes de desarrollo ni código fuente. Compilá en una imagen "builder" pesada y copiá solo el binario / los artefactos compilados a una imagen final mínima (Alpine, Distroless).
Creá un .dockerignore con node_modules/, vendor/, .git/, archivos secretos. Sin él, COPY . . mete todo eso en la imagen, inflándola y exponiendo material que no debería viajar.
Configurá un healthcheck en tu Dockerfile (HEALTHCHECK) o en el compose (healthcheck:). Permite que el orquestador detecte cuándo el contenedor está "vivo pero no listo" y reaccione (reiniciar, sacar del balanceador).
10. Glosario rápido
nginx:1.27); evitar :latest en producción.
11. Para profundizar
Docker Inc. · lectura por temas
El "Get Started" oficial es la mejor forma de tener Docker andando en una tarde. Cubre instalación, primer Dockerfile, networking y volúmenes.
Ir al recursokubernetes.io · ~1 h de práctica
Recorrido guiado por los conceptos básicos de Kubernetes con un cluster sandbox en el navegador. Ideal para entender Pods, Deployments y Services sin instalar nada.
Ir al recursoAdam Wiggins · lectura ~30 min
Las 12 reglas que toda aplicación lista para contenerizar debería respetar (config por env vars, procesos sin estado, logs a stdout, etc.). Es un clásico breve y prácticamente obligatorio.
Ir al recursoDocker · sesiones de 4 h gratuitas
Terminal Docker en el navegador, sin instalar nada. Sirve para practicar comandos y experimentar con redes y clusters Swarm sin riesgo.
Ir al recurso12. Cierre
Virtualización y containerización son las dos capas técnicas que hacen posible la nube moderna.
Qué hay que llevarse
La nube no es magia: por debajo conviven hypervisores que multiplican hardware en VMs, y orquestadores que multiplican VMs en miles de contenedores efímeros. Entender estas dos abstracciones —y cuándo conviene cada una— es la base para diseñar cualquier sistema cloud-native.
Qué viene
Unidad 3Las tres leyes que rigen las arquitecturas distribuidas: Conway, Gall y CAP.
Unidad 4Metodologías ágiles y ciclo de vida del software.
Unidad 5IA generativa: vocabulario, RAG, los tres laboratorios y modelos de negocio.
Unidad 6Aplicaciones concretas: cómo se integran todas las piezas en un producto real.
Antes de seguir
- Asegurate de poder explicar en una frase la diferencia entre una VM y un contenedor.
- Probá levantar un servicio simple (nginx o postgres) con Docker en tu máquina.
- Hojeá el compose.yaml de este mismo proyecto (Sidecar): es un ejemplo real de Docker Compose en acción.
Arquitectura básica en la nube
En la Unidad 2 vimos las dos capas técnicas que sostienen la nube (virtualización y containerización). En esta unidad subimos un nivel: ¿qué principios guían las decisiones de arquitectura cuando diseñamos para la nube? Vamos a ver tres leyes empíricas que, una y otra vez, predicen por qué los sistemas distribuidos funcionan o fracasan: la Ley de Conway, la Ley de Gall y el Principio CAP.
1. ¿Por qué leyes y no recetas?
A diferencia de la Unidad 2, acá no hay comandos para copiar. Las leyes que siguen son observaciones sobre cómo se comportan los sistemas distribuidos y las organizaciones que los construyen. Conocerlas no te dice qué elegir, te dice por qué tu elección va a salir bien o mal. Diseñar arquitectura cloud sin estas leyes es como diseñar un puente sin entender de física: a veces se aguanta, pero no sabés por qué.
La arquitectura cloud está moldeada por fuerzas que no son técnicas.
La idea de fondo
La forma de tu sistema distribuido depende tanto de cómo se organiza tu equipo (Conway) y de cómo evolucionó tu producto (Gall) como de las tecnologías que elijas. Y una vez en producción, la física de las redes te obliga a hacer trade-offs (CAP) que no podés evitar.
Las tres leyes
ConwayEl sistema reflejará la estructura de comunicación de quienes lo construyen.
GallLos sistemas complejos que funcionan evolucionaron desde sistemas simples que funcionaban.
CAPEn sistemas distribuidos, no podés tener consistencia, disponibilidad y tolerancia a particiones al mismo tiempo.
Para tener en cuenta
- Son observaciones empíricas, no teoremas matemáticos: hay matices y excepciones.
- Se complementan: violarlas raramente sale gratis a mediano plazo.
2. Ley de Conway
Enunciada por Melvin Conway en 1967, antes de que existiera "la nube". Conway era programador y notó un patrón inquietante: la arquitectura del software refleja la arquitectura social del equipo que lo construye.
"Las organizaciones que diseñan sistemas están condenadas a producir diseños que copian la estructura de comunicación de dichas organizaciones." — Melvin Conway, 1967
Por qué importa en la nube
La nube favorece sistemas distribuidos: microservicios, serverless, contenedores orquestados. Cada uno de esos componentes tiene un dueño humano. Si los humanos no se comunican de forma desacoplada, los componentes tampoco lo harán. Es por eso que dos empresas con la misma stack pueden terminar con arquitecturas radicalmente distintas.
Las consecuencias en cloud
Equipos aisladosArquitectura desacoplada, microservicios bien definidos.
Equipo único y grandeMonolito o sistema con acoplamiento fuerte.
Comunicación rígidaIntegraciones pesadas, contratos fijos, APIs poco evolutivas.
Para tener en cuenta
- La "Inverse Conway Maneuver": si querés cierta arquitectura, primero diseñá los equipos que la producirán.
- Conway aplica también a la cultura: un equipo que no confía entre sí va a construir contratos defensivos.
Ejemplos de Conway en la nube
Los patrones más comunes que se ven en la práctica son cuatro. Cuando una empresa tiene equipos independientes para pagos, catálogo y usuarios, cada uno termina desplegando su propio servicio con la tecnología que mejor le sienta: pagos con AWS Lambda + API Gateway, catálogo con contenedores en EKS, usuarios con Firebase. El resultado es una arquitectura multi-cloud desacoplada, con escalado y despliegues independientes por servicio. En el otro extremo, un equipo único y grande que gestiona toda la aplicación produce un monolito en una VM. Tiene sentido organizacional —una sola reunión, una sola release— pero arrastra cuellos de botella en los deploys, escalado horizontal limitado y la fragilidad de que un bug en cualquier módulo tumba todo.
Cuando dos equipos necesitan integrarse pero la comunicación es rígida, la solución típica es una cola de mensajes (SNS/SQS, Pub/Sub) con un contrato fijo. Parece desacoplar, pero solo cambia el lugar del acoplamiento: ahora vive en el contrato del mensaje, y si un equipo lo cambia, el otro se rompe igual. Por último, cuando hay DevOps por producto —cada equipo construye, opera y monitorea su propio servicio de punta a punta— la tendencia natural es elegir servicios serverless (Lambda + DynamoDB) por equipo, con la mínima dependencia cruzada posible.
Si querés una arquitectura cloud determinada, diseñá primero la organización. Cambiar arquitectura es difícil; cambiar la estructura humana que la produce es todavía más difícil, pero es lo que sostiene el cambio técnico.
3. Ley de Gall
Enunciada por John Gall en 1975 (en Systemantics), es la ley que más arquitectos cloud ignoran y más caro pagan cuando lo hacen. Tiene tres formulaciones complementarias:
"Un sistema complejo que funciona invariablemente ha evolucionado a partir de un sistema simple que funcionaba." — John Gall, 1975
Los dos corolarios
Corolario AUn sistema complejo diseñado desde cero nunca funciona y no puede repararse para hacerlo funcionar: hay que empezar de nuevo desde un sistema simple.
Corolario BLos sistemas tienden a crecer en complejidad hasta superar la capacidad de sus diseñadores para manejarlos.
Por qué importa en la nube
La nube ofrece tantas piezas que es muy tentador armar la arquitectura "perfecta" desde el día 1: Kubernetes multi-región, service mesh, observabilidad completa, GitOps, etc. Gall predice qué va a pasar: el equipo se va a hundir operando esa complejidad antes de tener clientes que la justifiquen.
Para tener en cuenta
- "Simple primero" no significa "para siempre simple": es el punto de partida desde donde evolucionar.
- La complejidad debe responder a un problema real ya observado, no a uno anticipado.
Caso: evolución natural de monolito a serverless
- Punto de partida. Una startup lanza un MVP: monolito en una VM (EC2 o equivalente), una base de datos. Funciona, pero el equipo no puede escalar features rápido.
- Primer dolor real. El módulo de autenticación bloquea releases del resto. Se extrae a un servicio serverless (Lambda + Cognito).
- Segundo dolor real. La base de datos no escala en picos. Migran a Aurora Serverless o una base gestionada similar.
- Tercer dolor real. El monolito sigue acoplando deploys. Recién ahora dividen el resto en microservicios sobre EKS.
- Resultado. Una arquitectura cloud-native compleja que funciona, porque cada paso resolvió un problema concreto y ya validado.
Anti-patrón: la arquitectura "perfecta" del día 1
Qué suele pasar
Un equipo arranca un proyecto chico y monta de entrada Kubernetes con service mesh (Istio), GitOps (ArgoCD), monitoreo completo (Prometheus + Grafana), múltiples namespaces y un esquema de roles RBAC sofisticado. Tres microservicios. Tres.
Por qué
Se confunde "estado final de empresas grandes" con "buena práctica". Se invierte tiempo en operar la infra en lugar de validar la idea del producto.
Cómo evitarlo
Empezá con servicios gestionados simples (App Engine, Fly.io, Render, ECS Fargate). Migrá a Kubernetes cuando el equipo sea grande, las cargas heterogéneas y la portabilidad un requisito, no antes.
Caso: una API que creció bien
- Fase 1 — API simple. API Gateway + Lambda. Sin estado, sin base de datos, sin observabilidad cara. Resuelve el caso de uso original.
- Fase 2 — persistencia. Aparece la necesidad real de guardar estado. Se agrega DynamoDB. Punto.
- Fase 3 — orquestación. Una operación pasa a tener 4 pasos coordinados con reintentos. Se incorpora Step Functions.
- Fase 4 — eventos asíncronos. Un equipo tercero necesita escuchar lo que pasa. Se publica a EventBridge.
Caso real ilustrativo: Netflix empezó con un monolito en sus propios data centers. Migró a AWS de a poco, no de un día para el otro, y construyó sus herramientas famosas (Chaos Monkey, Hystrix) para aprender a operar la complejidad emergente, no para evitarla por diseño previo.
4. Principio CAP
Formulado por Eric Brewer en 2000 (conjetura) y demostrado formalmente por Gilbert y Lynch en 2002, el teorema CAP es la ley física de los sistemas distribuidos. No describe una preferencia: describe un límite que no se puede superar.
En un sistema distribuido solo podés garantizar dos de tres: Consistencia, Disponibilidad y Tolerancia a particiones.
Las tres propiedades
C — ConsistenciaTodos los nodos ven los mismos datos al mismo tiempo.
A — DisponibilidadEl sistema responde siempre, incluso si hay fallos.
P — Partition toleranceEl sistema sigue funcionando aunque se pierda la comunicación entre nodos.
El verdadero dilema en la nube
En cloud, las particiones de red son inevitables: zonas de disponibilidad caídas, latencia variable, cables submarinos cortados. Por eso P no es opcional. El verdadero dilema se reduce a: ¿Consistencia (C) o Disponibilidad (A)?
Para tener en cuenta
- El trade-off no es siempre el mismo dentro de una misma app: la facturación pide CP, el feed social pide AP.
- "Consistencia eventual" no es ausencia de consistencia: es consistencia diferida en el tiempo.
¿Por qué CA es imposible en la nube?
Qué suele pasar
Un equipo diseña sobre una base distribuida asumiendo que "la red siempre va a estar". Cuando hay una partición real (un AZ se cae, latencia explota, cable submarino), el sistema entra en un estado indefinido: datos inconsistentes y no disponibles a la vez.
Por qué
Las particiones en cloud no son una rareza: son una certeza estadística. Cualquier proveedor serio mide su SLA en porcentajes que presuponen particiones.
Cómo evitarlo
Asumí siempre que P es obligatorio. Decidí explícitamente C o A para cada componente, y documentá ese trade-off.
CP vs AP: cuándo elegir cada uno
El sistema prefiere rechazar operaciones antes que devolver datos inconsistentes. Si hay partición, los nodos del lado "minoritario" no aceptan escrituras.
Cuándo conviene
Cuando la exactitud importa más que la disponibilidad: pagos, facturación, inventario, historia clínica.
Ejemplos típicos
Ejemplo real
- Un banco no permite confirmar una transferencia si no puede verificar el saldo en todas las réplicas: prefiere "intentar más tarde" antes que duplicar el dinero.
El sistema prefiere responder siempre, aceptando que algunos clientes vean datos temporalmente desactualizados. La consistencia se alcanza después (consistencia eventual).
Cuándo conviene
Cuando la disponibilidad importa más que la exactitud inmediata: redes sociales, feeds, catálogos, recomendaciones, IoT.
Ejemplos típicos
Ejemplo real
- El carrito de compras de Amazon mantiene "agregar al carrito" disponible incluso ante fallos parciales: prefiere consolidar carritos divergentes después antes que perder una venta.
CP vs AP en producción
CP
- Datos siempre exactos.
- Razonamiento simple para el desarrollador.
- El sistema deja de responder durante particiones.
- Latencia más alta (consenso entre nodos).
AP
- Responde siempre, baja latencia.
- Escala globalmente sin coordinar.
- Los datos pueden divergir temporalmente.
- La aplicación debe manejar conflictos (last-write-wins, CRDTs, etc.).
Perfil CAP de algunos servicios cloud comunes
En el bando CP están servicios que prefieren bloquear escrituras antes que devolver datos inconsistentes: Amazon RDS con réplica síncrona, y Google Cloud Spanner, que garantiza consistencia global usando relojes atómicos al precio de rechazar escrituras en particiones graves. Del lado AP, Amazon DynamoDB ofrece consistencia eventual por defecto (con lecturas fuertemente consistentes opcionales a mayor costo), y Redis Cluster permite que los datos diverjan temporalmente entre shards. Azure Cosmos DB es un caso aparte: expone cinco niveles de consistencia configurables, dejando que el desarrollador elija dónde sentarse entre CP estricto y AP puro según el caso.
Ejemplo de uso mixto bien hecho: Netflix usa DynamoDB (AP) para su catálogo —donde lo que importa es responder rápido aunque un título tarde en propagarse— y Aurora (CP) para su facturación, donde una inconsistencia es inaceptable.
PACELC: la extensión moderna de CAP
Una crítica frecuente a CAP es que solo describe qué pasa cuando hay partición. PACELC, formulado por Daniel Abadi en 2010, completa la imagen: si hay partición (P), elegí entre A y C —ese es el caso original de CAP—; else (en operación normal, sin partición), elegí entre L (latencia) y C (consistencia). La idea es que incluso cuando la red anda bien, mantener consistencia entre nodos cuesta tiempo: sincronizar réplicas suma latencia, y muchos sistemas aceptan consistencia eventual también en estado normal para responder más rápido. DynamoDB, por ejemplo, es PA/EL: ante partición prioriza disponibilidad, y en operación normal prioriza latencia sobre consistencia estricta. Spanner es PC/EC: consistencia estricta en ambos casos, al precio de mayor latencia.
Si querés el espectro completo de productos por proveedor —tanto del lado relacional como NoSQL— y cuándo conviene cada perfil, ver el recurso database. Para los almacenes en memoria que aparecen del lado AP cuando hace falta velocidad sobre consistencia, ver el recurso cache. Y para desacoplar productores y consumidores aceptando consistencia eventual a propósito —la herramienta clave para construir sistemas AP sin perder operaciones—, ver el recurso colas de mensajes.
5. Cómo se conectan las tres leyes
Conway moldea la forma, Gall regula el ritmo, CAP define los límites.
Una historia que combina las tres
Una startup con un equipo único (Conway → monolito) lanza un MVP en una VM (Gall → empezar simple). Funciona. Al crecer, divide el equipo en pagos, catálogo y usuarios (Conway → microservicios). Cuando cada servicio se vuelve distribuido, el equipo descubre que necesita elegir entre CP (pagos) y AP (catálogo) por separado (CAP → no se puede tener las dos cosas a la vez).
Lectura combinada
- Conway te dice qué arquitectura va a salir de tu equipo actual.
- Gall te dice por dónde empezar y cómo crecer sin morir en el intento.
- CAP te dice qué trade-offs no podés esquivar una vez que el sistema vive en la nube.
6. Errores comunes derivados
Qué suele pasar
Se decide "vamos a microservicios" sin reorganizar al equipo. Resultado: microservicios artificialmente acoplados, donde cada cambio requiere reunir a cuatro personas distintas que antes estaban en la misma sala.
Cómo evitarlo
Antes de cambiar la arquitectura, cambiá la estructura de los equipos. Si no es viable cambiarla, ajustá la arquitectura a la organización real.
Qué suele pasar
Se invierte 3 meses en montar service mesh, observabilidad y CI/CD avanzado antes de tener una sola línea de producto funcionando. Cuando finalmente se construye el producto, los requerimientos ya cambiaron y la "arquitectura perfecta" no encaja.
Cómo evitarlo
Aplicá Gall: lo mínimo que funcione hoy, expandilo cuando aparezca un dolor real medible.
Qué suele pasar
Se usa la misma base de datos relacional con réplicas síncronas para todo, incluyendo módulos donde una consistencia eventual sería suficiente. Los costos explotan, la latencia sube y el throughput cae.
Cómo evitarlo
Aplicá CAP por componente: identificá qué módulos pueden ser AP y reservá CP para los que realmente lo necesitan.
7. Tips y buenas prácticas
Inverse Conway Maneuver: si querés llegar a microservicios, reorganizá los equipos primero en "células" autónomas cross-funcionales. La arquitectura va a seguir.
Documentá el trade-off CAP por componente: en el README de cada servicio, dejá explícito si es CP o AP y por qué. Evita debates eternos en code reviews.
Diseñá para el fallo, no contra el fallo. Las particiones, los timeouts y los nodos muertos no son excepciones: son la realidad operacional. Probá tu sistema con Chaos Engineering desde temprano.
8. Glosario rápido
9. Para profundizar
Melvin Conway · 1968 · lectura ~30 min
El artículo original donde Conway formula su ley. Vale la pena leerlo: es corto, claro y sorprendentemente vigente medio siglo después.
Ir al recursoJohn Gall · 1975 · libro corto y satírico
El libro de cabecera de Gall. Mezcla teoría de sistemas con humor seco. No es sobre software: es sobre por qué cualquier sistema complejo falla. Imprescindible.
Eric Brewer · 2012 · lectura ~20 min
Brewer revisita su propia conjetura 12 años después y matiza los malentendidos comunes ("CAP no significa elegir 2 de 3 de forma binaria"). Lectura obligatoria si vas a hablar de CAP en serio.
Ir al recursoMatthew Skelton, Manuel Pais · 2019 · libro
La aplicación moderna de la Ley de Conway. Propone cuatro tipos de equipos y tres modos de interacción para diseñar organizaciones que produzcan arquitecturas sanas.
10. Cierre
La arquitectura cloud no se elige: se descubre. Lo que podés hacer es no luchar contra las leyes que la moldean.
Qué hay que llevarse
Conway, Gall y CAP no son ideas opuestas a las herramientas que vimos en las unidades anteriores: son los filtros con los que conviene mirarlas. Antes de elegir Kubernetes, preguntate qué dice Conway sobre tu equipo y qué dice Gall sobre la madurez de tu producto. Antes de elegir una base de datos, preguntate qué dice CAP sobre los trade-offs que vas a asumir.
Qué viene
Unidad 4Metodologías ágiles y ciclo de vida del software: el proceso humano que produce sistemas que respetan (o ignoran) estas leyes.
Unidad 5IA generativa y cómo se integra al stack cloud moderno.
Unidad 6Aplicaciones concretas: el catálogo de piezas con las que se arma un producto real.
Antes de seguir
- Podés enunciar las tres leyes con tus palabras, sin mirar el material.
- Identificás, en un sistema que conozcas, una decisión que respeta cada una de las tres leyes.
- Identificás también una decisión que las viola, y entendés por qué duele.
Metodologías Ágiles y Ciclo de Vida del Software
Las tres unidades anteriores describieron qué es la nube, cómo se construye por debajo y qué leyes la gobiernan. Esta unidad cambia el foco: en vez de hablar de la tecnología, hablamos del proceso con el que los equipos producen software para correr en esa tecnología. Vamos a recorrer los modelos clásicos del ciclo de vida del software, entender por qué la industria los abandonó casi en masa a favor del enfoque ágil, y ver cómo esa transición prácticamente coincide con la adopción de la nube.
1. ¿Por qué hablar de metodologías en un curso de nube?
Podría parecer que el ciclo de vida del software es un tema aparte, pertenece a una materia distinta. Pero en la Unidad 3 vimos la Ley de Conway: la arquitectura del sistema refleja la estructura de comunicación del equipo que lo construye. Esa ley tiene un corolario directo y poco discutido: la arquitectura también refleja el proceso con el que el equipo trabaja. Un equipo que despliega una vez por trimestre no produce microservicios independientes; los necesita acoplados para poder coordinarlos. Un equipo que despliega varias veces por día casi inevitablemente termina con componentes pequeños y autónomos.
La nube y las metodologías ágiles crecieron juntas durante las últimas dos décadas porque resuelven, en planos distintos, el mismo problema: cómo construir y operar software complejo sin colapsar bajo su propio peso. La nube aporta la infraestructura elástica; el agilismo aporta la forma de trabajo capaz de aprovecharla. Sin una metodología iterativa, una arquitectura cloud-native termina desperdiciada; sin nube, una metodología ágil choca contra los tiempos de aprovisionamiento de hardware.
2. El ciclo de vida del software, brevemente
Construir software no es una actividad puntual sino un proceso continuo que arranca antes de la primera línea de código y termina (si es que termina) bastante después de la última. La industria llama ciclo de vida del software (SDLC, Software Development Life Cycle) al conjunto de fases que recorre una pieza de software desde su concepción hasta su retiro: definición de requisitos, análisis, diseño, implementación, prueba, despliegue, operación y mantenimiento, y eventualmente decomisado.
Lo que varía entre metodologías no son las fases en sí —cualquier proyecto real las atraviesa todas, le guste o no— sino cómo se ordenan y cuán rígida es la frontera entre ellas. Las metodologías tradicionales tratan al ciclo como una secuencia: terminada una fase, se pasa a la siguiente y no se vuelve atrás. Las metodologías modernas tratan al ciclo como un bucle: cada fase informa a las demás, y se atraviesan todas muchas veces en pequeñas iteraciones.
3. Los modelos clásicos
Cascada
El modelo cascada (waterfall) fue formalizado por Winston Royce en 1970, aunque, dato curioso, su paper original lo presentaba como un anti-patrón, no como una recomendación. Royce describía el modelo lineal —requisitos, diseño, implementación, prueba, despliegue— y explicaba inmediatamente por qué casi nunca funciona en proyectos reales. La industria, sin embargo, leyó la primera mitad del paper y adoptó la cascada como buena práctica durante las siguientes tres décadas.
La promesa de la cascada es seductora: si planificamos todo bien al principio, la ejecución se vuelve previsible. La realidad demostró que los requisitos del software cambian constantemente, que el diseño no se puede pensar completamente sin codificar, y que los errores detectados al final cuestan exponencialmente más que los detectados al principio. La cascada sigue siendo razonable en proyectos donde los requisitos son verdaderamente estables y conocidos —construir un compilador para un estándar publicado, por ejemplo, o software embebido con certificación regulatoria— pero esos casos son la excepción, no la regla.
Modelo V
El modelo V es esencialmente una cascada plegada por la mitad. A cada fase de desarrollo (requisitos, diseño de sistema, diseño detallado, código) le corresponde una fase de validación simétrica (pruebas de aceptación, integración, unitarias). Su mérito fue institucionalizar la idea de que cada decisión de diseño implica un nivel correspondiente de pruebas. Sigue siendo común en industrias con requisitos de certificación estricta —aeroespacial, médica, ferroviaria— donde la trazabilidad entre requisito y prueba es un requerimiento legal.
Modelo iterativo e incremental
Los modelos iterativo e incremental ya rompen con la linealidad: en lugar de construir todo el sistema de una vez, se construyen versiones sucesivas, cada una más completa o más refinada que la anterior. Boehm propuso en 1986 el modelo espiral, que combina iteraciones con análisis de riesgo: cada vuelta de la espiral identifica y mitiga los riesgos más graves antes de avanzar. Estas ideas fueron la base intelectual del movimiento ágil, aunque tomaron veinte años en volverse mainstream.
4. El cambio: el Manifiesto Ágil
En febrero de 2001, diecisiete profesionales del desarrollo de software se reunieron en una estación de esquí en Snowbird, Utah. Venían de metodologías distintas —algunos de Extreme Programming, otros de Scrum, otros de Crystal o DSDM— pero compartían el diagnóstico: las metodologías pesadas y documentadas heredadas de los 80 estaban produciendo software malo, tarde y caro. Tres días después salieron de ahí con un texto breve que cambió la industria: el Manifiesto por el Desarrollo Ágil de Software.
Los cuatro valores del Manifiesto Ágil (Snowbird, 2001).
El Manifiesto declara que, aunque hay valor en los elementos de la derecha, los firmantes valoran más los de la izquierda:
Valor 1Individuos e interacciones sobre procesos y herramientas.
Valor 2Software funcionando sobre documentación extensiva.
Valor 3Colaboración con el cliente sobre negociación contractual.
Valor 4Respuesta ante el cambio sobre seguir un plan.
Para tener en cuenta
- La frase "aunque hay valor en los elementos de la derecha" suele olvidarse: el manifiesto no dice que la documentación o los contratos sean malos, sino que cuando haya conflicto, gana lo de la izquierda.
El Manifiesto va acompañado de doce principios que lo explicitan. Sin enumerarlos todos, los más influyentes para el desarrollo en la nube son: la satisfacción del cliente mediante entregas tempranas y continuas; la bienvenida a cambios en los requisitos, incluso tarde en el desarrollo; la entrega frecuente de software funcionando en escalas de semanas, no meses; y la simplicidad —entendida como el arte de maximizar la cantidad de trabajo no hecho— como esencial. Si esa última frase suena a la Ley de Gall de la unidad anterior, no es coincidencia: el agilismo bebe directamente de esa tradición.
Es importante separar el agilismo como filosofía de los frameworks concretos que se inspiran en él. El Manifiesto no menciona Sprints, ni standups, ni Product Owners, ni story points. Esos son artefactos de Scrum, no del agilismo. Muchos equipos "hacen Scrum" sin entender el Manifiesto, lo que produce un teatro ceremonial sin ganancia real.
5. Scrum
Scrum es, por amplio margen, el framework ágil más adoptado de la historia. Fue formalizado a comienzos de los 90 por Ken Schwaber y Jeff Sutherland, inspirado en un paper de Takeuchi y Nonaka de 1986 ("The New New Product Development Game") que comparaba a los equipos de producto eficientes con un equipo de rugby avanzando en formación —de ahí el nombre, que significa "melé". La Scrum Guide oficial, mantenida por Schwaber y Sutherland, se reescribe cada pocos años y es notablemente breve: la última versión cabe en quince páginas.
Scrum organiza el trabajo en Sprints: iteraciones de duración fija, típicamente de dos semanas, durante las cuales el equipo produce un incremento de producto potencialmente entregable. La duración es fija para crear ritmo y predictibilidad; el contenido es variable, se ajusta a la realidad. Cada Sprint atraviesa las cuatro fases del ciclo de vida en miniatura: planificación, ejecución (que incluye diseño, código y prueba simultáneamente), entrega e inspección.
Roles
Scrum define tres roles, ni más ni menos. El Product Owner es responsable de maximizar el valor del producto: prioriza el backlog, decide qué se hace y qué no, y es la única persona con autoridad para cambiar prioridades durante la planificación. El Scrum Master no es un gerente ni un coordinador: es un facilitador que se encarga de que el proceso se respete, que el equipo no se distraiga y que los impedimentos se resuelvan. Los Developers (en la guía actual, sin más jerarquía) son las personas que construyen el incremento; el equipo es auto-organizado y multidisciplinario.
Eventos
Los rituales de Scrum son pocos y específicos. Cada uno tiene un propósito bien definido y un timebox máximo; cuando se respetan, sostienen el ritmo, cuando se relajan, el framework se desmorona en reuniones interminables.
- Sprint Planning. Al inicio del Sprint, el equipo decide qué entrega y cómo. Timebox: hasta 8 h para Sprints de un mes; proporcionalmente menos para Sprints más cortos.
- Daily Scrum. 15 minutos diarios, mismo lugar y hora. El equipo sincroniza, identifica impedimentos y ajusta el plan del día. No es un reporte de status: es coordinación entre pares.
- Sprint. El bloque de trabajo en sí, donde se construye el incremento. No es un evento, es el contenedor de todos los demás.
- Sprint Review. Al final del Sprint, se muestra el incremento a stakeholders y se recibe feedback. Es una conversación, no una presentación.
- Sprint Retrospective. El último evento del Sprint, antes del próximo Planning. El equipo inspecciona cómo trabajó, no qué construyó, y acuerda mejoras concretas.
Artefactos
Scrum tiene tres artefactos. El Product Backlog es la lista priorizada de todo lo que podría hacerse en el producto, propiedad del Product Owner. El Sprint Backlog es el subconjunto que el equipo se compromete a hacer en el Sprint actual. El Incremento es la suma de todos los elementos completados en el Sprint, sumados a los anteriores, que cumplen la Definition of Done (DoD): el conjunto de criterios que determinan cuándo algo se considera realmente terminado, no solo "funcionando en mi máquina".
6. Kanban
Si Scrum nació en la industria del software, Kanban nació en una fábrica. Toyota lo desarrolló en los 50 como parte de su sistema de producción (Toyota Production System) para visualizar el flujo de trabajo y limitar el inventario en curso. David Anderson lo adaptó al desarrollo de software a fines de los 2000, manteniendo sus principios centrales: visualizar el trabajo, limitar el trabajo en progreso y gestionar el flujo.
A diferencia de Scrum, Kanban no impone iteraciones de duración fija ni roles especiales. El equipo mantiene un tablero (físico o digital) con columnas que representan los estados del trabajo —típicamente "por hacer", "en progreso", "en revisión", "hecho"— y mueve las tareas de izquierda a derecha. La regla central es el WIP limit (work in progress): cada columna tiene un máximo de tareas que puede contener. Si la columna está llena, no se puede empezar nada nuevo hasta que algo termine. Suena trivial pero es profundamente transformador: obliga al equipo a terminar antes que empezar, lo que reduce drásticamente el tiempo de ciclo y expone los cuellos de botella.
Scrum y Kanban no son alternativas excluyentes. Muchos equipos usan Kanban dentro de un Sprint de Scrum (a veces se le llama "Scrumban"), o Scrum para producto y Kanban para soporte y operaciones. La elección suele depender del tipo de trabajo: cuando el trabajo es predecible y se puede planificar en bloques, Scrum funciona bien; cuando llega de forma continua e impredecible —incidentes, bugs, pedidos de stakeholders— Kanban es más natural.
Scrum vs Kanban
Scrum
- Cadencia fija (Sprints), buena para trabajo planificable.
- Roles y ceremonias definidas: framework prescriptivo.
- Rígido frente a interrupciones no planificadas.
- Curva de adopción mayor: hay que aprender el framework.
Kanban
- Flujo continuo, ideal para soporte y trabajo reactivo.
- Curva plana: tres reglas (visualizar, limitar WIP, gestionar flujo).
- Sin ritmo natural: requiere disciplina para no postergar entregas.
- Menos estructura para coordinar equipos grandes.
7. Más allá de Scrum y Kanban
El ecosistema ágil tiene más actores que vale conocer aunque sea superficialmente. Extreme Programming (XP), creado por Kent Beck a fines de los 90, se enfoca en prácticas técnicas concretas —programación en pares, desarrollo guiado por pruebas (TDD), integración continua, refactoring constante— y es históricamente la fuente de muchas de las prácticas de ingeniería que hoy damos por sentadas. Mientras Scrum se ocupa del proceso, XP se ocupa de cómo escribir el código.
Lean Software Development, popularizado por Mary y Tom Poppendieck, traduce los principios del Lean manufacturing al software: eliminar desperdicio, amplificar el aprendizaje, decidir lo más tarde posible, entregar lo más rápido posible, empoderar al equipo, construir integridad, ver el todo. Es menos un framework y más una filosofía transversal.
SAFe (Scaled Agile Framework) intenta escalar el agilismo a organizaciones grandes con muchos equipos. Es controvertido: sus detractores argumentan que reintroduce la jerarquía y la documentación pesada que el Manifiesto rechazaba, vestidas con vocabulario ágil. Si te cruzás con él en un trabajo, vale la pena leerlo con espíritu crítico antes de comprarlo entero.
8. Cascada frente a Ágil
Después de recorrer ambos mundos vale resumir el contraste central. Ninguno es universalmente mejor: cada uno encaja en contextos distintos. Lo que pasó en la práctica es que los contextos donde encaja la cascada se redujeron a un puñado de nichos, mientras que los contextos donde encaja el agilismo crecieron hasta cubrir prácticamente todo el desarrollo web, móvil y cloud-native.
Cascada vs Ágil
Cascada
- Plan detallado por adelantado; previsibilidad aparente.
- Buena para requisitos rígidos y certificación regulatoria.
- Costo enorme cuando los requisitos cambian (y cambian).
- Feedback solo al final, cuando ya es tarde para corregir.
Ágil
- Entrega frecuente, feedback temprano y constante.
- Adaptación natural a cambios de requisitos.
- Plan a largo plazo menos preciso; difícil para contratos cerrados.
- Exige cultura y disciplina; sin ellas degenera en caos disfrazado.
9. Ágil y la nube: por qué se necesitan mutuamente
La adopción masiva del agilismo durante los 2000 y la adopción masiva de la nube durante los 2010 no son eventos independientes: cada uno alimentó al otro. El agilismo prometió entregas frecuentes; sin nube, "frecuente" significaba cada pocos meses, limitado por los tiempos de aprovisionamiento de hardware en data centers propios. Con nube, esos tiempos se redujeron a minutos, lo que permitió cumplir la promesa original: entregar software funcionando "frecuentemente, de un par de semanas a un par de meses, con preferencia por la escala más corta", como dice el segundo principio del Manifiesto.
A su vez, la nube necesita del agilismo para no desperdiciar su potencial. Una arquitectura de microservicios elásticos operada por un equipo que despliega una vez por trimestre es un mal uso de la infraestructura: paga la complejidad de los microservicios sin cobrar el beneficio de la independencia de despliegue. La cultura de DevOps —que en su núcleo es la fusión de desarrollo y operaciones en equipos autónomos, con automatización fuerte de la cadena de despliegue— es el puente entre ambas realidades: arquitectura cloud-native + proceso ágil + automatización operacional.
Las prácticas concretas que hicieron esto posible son hoy estándar de la industria: integración continua (CI), donde cada cambio se integra al tronco principal varias veces al día y se valida automáticamente; despliegue continuo (CD), donde cada cambio que pasa CI se despliega automáticamente a producción; infraestructura como código (IaC), donde la infraestructura se define en archivos versionados como cualquier otro código; y observabilidad, donde se mide el comportamiento del sistema en producción y los datos retroalimentan las próximas iteraciones. La trazabilidad de esas decisiones suele apoyarse en diagram as code (Mermaid, PlantUML, D2), para que los diagramas que documentan la arquitectura cambien junto con el código que documentan en lugar de quedar congelados en un PNG colgado en algún wiki. Cada una de estas prácticas, por separado, era difícil antes de la nube; con nube, son lo normal.
10. Errores comunes
El agilismo es probablemente el conjunto de ideas más malentendido de la industria del software. Estos son los tres errores que se repiten en proyectos reales con mayor consistencia, y los que más vale anticipar.
Qué suele pasar
El equipo adopta los eventos —daily, planning, review, retro— pero ignora el espíritu del Manifiesto. El Product Owner es un proxy del jefe, las dailies son reportes de status, las retros no producen cambios y los Sprints terminan con trabajo a medio hacer arrastrado al siguiente.
Por qué
La parte ceremonial es fácil de copiar; la parte cultural —confianza, autonomía, foco en valor— no. Se confunde "hacer Scrum" con "tener Scrum".
Cómo evitarlo
Antes de adoptar el framework, leer el Manifiesto. Si los valores no resuenan con la organización, Scrum no va a funcionar; mejor admitirlo que disfrazarlo.
Qué suele pasar
El Sprint termina y el equipo, presionado por el siguiente, salta directamente al Planning. "Esta vez no hacemos retro porque vamos atrasados". Tres meses después, los mismos problemas siguen apareciendo cada Sprint.
Por qué
La retrospectiva es el único mecanismo formal de mejora del proceso. Sin ella, el equipo construye software pero no aprende a construirlo mejor.
Cómo evitarlo
Cualquier acción concreta y medible que salga de una retro debe tener responsable y fecha. Sin eso, son catarsis grupal disfrazada de mejora continua.
Qué suele pasar
Management compara la "velocity" (story points por Sprint) entre equipos o exige que crezca trimestre a trimestre. El equipo responde inflando estimaciones para "mejorar" sin trabajar más.
Por qué
Velocity es una medida interna para que el equipo se autorregule, no un KPI gerencial. Cuando se vuelve métrica de evaluación, se distorsiona inmediatamente (ley de Goodhart: "cuando una métrica se vuelve objetivo, deja de ser una buena métrica").
Cómo evitarlo
Medir outcome (impacto en el usuario, métricas de producto) en lugar de output (cantidad de tareas terminadas). Una feature que mueve un KPI vale más que diez que no mueven nada.
11. Buenas prácticas
Empezá con el proceso más simple que pueda funcionar: una pizarra Kanban con tres columnas, sin Sprints, sin roles ceremoniales. Agregá ritual solo cuando aparezca un dolor real (Ley de Gall aplicada al proceso, no solo a la arquitectura).
Hacé explícita la Definition of Done. Pongan en un documento corto y visible qué significa "terminado" en este equipo: ¿incluye tests automatizados?, ¿documentación?, ¿deploy a staging?, ¿feature flag activado? Las discusiones repetidas sobre "¿está hecho o no?" suelen señalar una DoD ausente o ambigua.
Cerrá cada retrospectiva con una sola acción concreta, con dueño y fecha. "Mejorar la comunicación" no es una acción; "Pedro va a configurar las notificaciones del CI en el canal de Slack antes del próximo Planning" sí lo es.
Probá pair programming en partes críticas del código (autenticación, lógica de facturación, integraciones con terceros). Dos personas leyendo cada línea producen menos bugs y propagan conocimiento más rápido que cualquier ronda de code review.
Invertí temprano en una pipeline de CI/CD básica: build, tests automáticos, deploy a staging en cada commit a la rama principal. No hace falta que sea sofisticada; cualquier mejora frente al deploy manual del viernes paga sus costos en semanas.
12. Glosario rápido
13. Para profundizar
agilemanifesto.org · lectura ~5 min
El texto fundacional, traducido a decenas de idiomas. Cabe en una página y todavía vale releerlo una vez por año. Incluye los cuatro valores y los doce principios.
Ir al recursoscrumguides.org · lectura ~30 min
La fuente canónica de Scrum, mantenida por sus creadores. Quince páginas. Cualquier discusión sobre "qué dice Scrum" debería empezar acá.
Ir al recurso2018 · estudio basado en datos de miles de empresas
Investigación empírica sobre qué prácticas separan a los equipos de alto rendimiento de los demás. Define las famosas "métricas DORA" (deploy frequency, lead time, change failure rate, MTTR). Lectura clave para entender DevOps moderno.
David J. Anderson · 2010 · libro
El libro que adaptó Kanban del manufacturing al software. Explica de dónde viene, por qué funciona y cómo introducirlo en un equipo sin romper lo que ya funciona.
14. Cierre
Esta unidad cierra el bloque fundamental del curso. Empezamos con qué es la nube como modelo económico, bajamos a las dos capas técnicas que la sostienen, subimos a los principios que moldean la arquitectura, y terminamos con el proceso humano que produce el software que corre sobre todo eso. Las cuatro unidades no son temas independientes sino capas de un mismo edificio: ninguna funciona sin las demás.
Lo que sigue es el bloque aplicado: la Unidad 5 entra al gran consumidor actual de esa infraestructura —la IA generativa— y la Unidad 6 muestra cómo se combinan todas las piezas vistas para armar un producto real, como puente directo al challenge final.
La nube no se "implementa", se cultiva: con tecnología elástica, arquitectura modular y procesos iterativos que se alimentan mutuamente.
Construir bien software para la nube exige las tres patas a la vez: infraestructura preparada (Unidades 1 y 2), principios respetados (Unidad 3) y proceso que aproveche ambos (Unidad 4). Cualquiera de las tres en aislamiento produce sistemas frustrantes: nube sin agilismo es nube cara y subutilizada; agilismo sin nube es velocidad limitada; ambos sin entender Conway, Gall y CAP son un colapso anunciado.
Qué viene
Unidad 5Conceptos básicos de IA generativa: tokens, RAG, los tres laboratorios y modelos de negocio alrededor de los LLMs.
Unidad 6Aplicaciones concretas: el catálogo de piezas (auth, pagos, mailing, storage, agentes) con el que se arma el prototipo del challenge final.
Antes de seguir
- Tomá un proyecto real (propio o de un trabajo) y mapealo contra las cuatro unidades del bloque fundamental: ¿qué decisiones encajan bien?, ¿cuáles violan alguna ley?
- Probá una herramienta nueva: levantá una app simple con Docker Compose, deplegala a un servicio gestionado, configurá CI/CD básico. Cada uno te tomará un fin de semana y cubre prácticamente todo lo visto.
- Leé al menos uno de los recursos canónicos de cada unidad. La diferencia entre saber el nombre y entender la idea está en los textos originales.
Conceptos básicos de IA
Esta unidad sale del territorio estricto de infraestructura para mirar de cerca al gran consumidor actual de esa infraestructura: la inteligencia artificial generativa. Vamos a ordenar el vocabulario que circula desordenado en cualquier conversación sobre IA, bajar al detalle técnico de cómo funcionan los modelos grandes de lenguaje, repasar a los tres laboratorios que dominan el mercado occidental y terminar con los modelos de negocio que están naciendo alrededor de todo esto. La motivación, además, es práctica: hoy una parte enorme del cómputo en la nube se va a entrenar e inferir modelos de IA, y entender el vocabulario es la mitad del trabajo para entender la economía.
1. La pirámide conceptual
En la conversación pública los términos inteligencia artificial, machine learning, deep learning y LLM suelen usarse como sinónimos, pero describen niveles distintos de una misma jerarquía. La forma más limpia de ordenarlos es como círculos concéntricos: el de afuera contiene a todos los demás, y cada uno hacia adentro es un subconjunto más específico del anterior. Tenerlos separados ayuda a discutir con precisión: no toda IA es machine learning, no todo ML es deep learning, y no todo deep learning produce un LLM.
En el círculo más amplio está la Inteligencia Artificial (IA): todo el campo que estudia cómo construir sistemas que realicen tareas asociadas a la inteligencia humana, ya sea razonar, percibir o decidir. Un motor de ajedrez basado en reglas y un asistente conversacional moderno son ambos IA, pero técnicamente tienen muy poco en común. Adentro de IA aparece el Machine Learning (ML), que es el subconjunto donde el sistema aprende patrones a partir de datos en lugar de seguir reglas escritas a mano. Adentro de ML está el Deep Learning (DL), que es el ML basado en redes neuronales con muchas capas —de ahí lo de "profundo"—. Y dentro del DL aparece la familia de los modelos generativos, una aplicación específica del DL enfocada en producir contenido nuevo: texto, imágenes, audio, código. Los LLMs (large language models) son la variante de modelos generativos especializada en texto.
IA > ML > DL > LLMs: una jerarquía de subconjuntos, no de sinónimos.
Analogía didáctica
La IA es como la medicina; el ML es como la cardiología; el deep learning es una técnica quirúrgica específica; los LLMs son una operación particular que aprendiste a hacer. Permite mostrar que un médico no es necesariamente cardiólogo, y un cardiólogo no necesariamente opera.
Cómo se relacionan los niveles
IACampo amplio, incluye sistemas basados en reglas y en aprendizaje.
MLSubconjunto de IA donde el sistema aprende patrones de datos.
DLSubconjunto del ML basado en redes neuronales con muchas capas.
LLMsAplicación del DL para generar texto nuevo a partir de un prompt.
Para tener en cuenta
- Confundir los niveles lleva a discusiones torcidas: "¿esto es IA?" suele ser una pregunta mal planteada; mejor preguntar a qué nivel pertenece.
- Existen sistemas de IA que no son ML (motores de reglas) y sistemas de ML que no son DL (regresión lineal, árboles de decisión).
2. Tipos de aprendizaje
Dentro del machine learning hay varias maneras de que un modelo aprenda, y cada una se elige según qué tipo de datos tenemos y qué problema queremos resolver. La división clásica reconoce cuatro grandes familias: aprendizaje supervisado, no supervisado, por refuerzo y, más recientemente, auto-supervisado. Esta última categoría es relativamente nueva en el discurso público y es, sin embargo, la que sostiene a los LLMs modernos.
En el aprendizaje supervisado entrenamos al modelo con pares input → output conocidos. Un clasificador de spam recibe miles de mails ya etiquetados como "spam" o "no spam" y aprende a generalizar. Lo mismo ocurre con un clasificador de imágenes médicas que aprende a separar tumores malignos de benignos a partir de un conjunto de imágenes etiquetadas por médicos. El costo principal acá es el etiquetado: necesita personas (o procesos) que digan cuál es la respuesta correcta para cada ejemplo.
En el aprendizaje no supervisado el modelo encuentra estructura en datos sin etiquetas. Lo típico es la segmentación de clientes —agrupar usuarios por comportamiento similar sin decirle al modelo qué grupos esperar— y la detección de anomalías, donde el sistema aprende qué es "normal" y marca lo que se desvía. Es la herramienta natural cuando no sabemos a priori qué buscar.
El aprendizaje por refuerzo entrena al modelo a través de recompensas. El agente toma una acción, recibe una señal positiva o negativa, y ajusta su política. AlphaGo aprendió a jugar Go ganando y perdiendo partidas contra sí mismo; los robots de control aprenden a caminar cayéndose miles de veces. En los LLMs aparece bajo la sigla RLHF (reinforcement learning from human feedback), donde humanos puntúan respuestas del modelo y ese feedback se usa para refinarlo después del pre-entrenamiento.
Finalmente, el aprendizaje auto-supervisado es el truco central del pre-entrenamiento de los LLMs modernos: el modelo genera sus propias etiquetas a partir de los datos crudos. La tarea típica es "predecir la siguiente palabra de un texto dado el contexto anterior". Internet entera es el conjunto de entrenamiento, y la etiqueta de cada fragmento es, literalmente, la palabra que aparece a continuación. No requiere etiquetadores humanos, lo que permite escalar a billones de palabras de manera viable.
Los cuatro tipos de aprendizaje, lado a lado
Supervisado
- Datos etiquetados (input → output conocido).
- Ejemplos: detección de spam, clasificación de imágenes médicas.
- Caro: el etiquetado humano no escala bien.
No supervisado
- Encuentra estructura sin etiquetas.
- Ejemplos: segmentación de clientes, detección de anomalías.
- Difícil de evaluar: ¿el clúster encontrado es útil?
Por refuerzo
- Aprende por recompensas tras cada acción.
- Ejemplos: AlphaGo, robots, RLHF en LLMs.
- Diseñar la función de recompensa es la parte difícil.
Auto-supervisado
- El modelo genera sus propias etiquetas (predecir la siguiente palabra).
- Ejemplos: pre-entrenamiento de GPT, Claude, Gemini.
- Requiere cantidades masivas de datos y cómputo.
3. Conceptos clave para entender LLMs
Si vas a leer documentación, papers o pricing pages de modelos de lenguaje, hay un puñado de términos que aparecen una y otra vez. Vale dedicarles dos párrafos a cada uno: con esos siete u ocho conceptos ya podés conversar técnicamente sobre cualquier LLM moderno y entender por qué cuesta lo que cuesta.
Un token es la unidad mínima que procesa el modelo. No es exactamente una palabra: puede ser una sílaba, un signo de puntuación o una secuencia de caracteres frecuente. Como regla práctica, 1.000 tokens equivalen aproximadamente a 750 palabras en inglés; en español la proporción es algo peor por la riqueza morfológica del idioma, alrededor de 600 palabras por 1.000 tokens. Todo se factura en tokens —entrada y salida— y todos los límites del modelo se expresan en tokens, así que conviene tener la noción internalizada.
Los parámetros son los pesos numéricos que componen la red neuronal. Más parámetros generalmente implican más capacidad pero también más costo de entrenamiento e inferencia. Los modelos frontera actuales tienen cientos de miles de millones (e incluso billones) de parámetros; cada uno es un número flotante, así que el solo hecho de cargar uno de estos modelos en memoria requiere terabytes de RAM repartidos en clústeres de GPUs o TPUs.
La ventana de contexto (context window) es la cantidad máxima de tokens que el modelo puede "ver" simultáneamente: incluye el prompt del usuario, las instrucciones del sistema, el historial de la conversación y la respuesta que está generando. Hoy los modelos top manejan entre 200.000 y 2.000.000 de tokens, lo que permite poner libros enteros o repositorios completos como contexto antes de hacer una pregunta.
Una distinción central a la hora de pensar costos es la de inferencia versus entrenamiento. Entrenar un modelo frontera cuesta decenas o cientos de millones de dólares y consume meses de cómputo en clústeres dedicados. Ejecutarlo después —responder a un prompt, lo que se llama inferencia— cuesta fracciones de centavo por consulta. Esta asimetría es la clave para entender los modelos de negocio: quien entrena modelos juega un juego de capital intensivo de pocos jugadores; quien los consume vía API juega un juego de costo marginal bajísimo y volumen alto.
El fine-tuning es la práctica de re-entrenar un modelo base con datos específicos de una tarea o dominio. Si tu empresa tiene miles de tickets de soporte resueltos, podés afinar un modelo para que responda con el tono y la jerga propios; si tu dominio es legal, podés afinarlo sobre jurisprudencia. Es más caro que usar el modelo base como está, pero menos que entrenar desde cero.
Los embeddings son la representación numérica —en forma de vector de cientos o miles de dimensiones— de un texto, una imagen u otro dato. Su propiedad clave es que contenidos semánticamente similares producen vectores cercanos, lo que permite buscar "por significado" en lugar de "por palabra exacta". Son la base de los buscadores semánticos modernos y, como vamos a ver enseguida, de RAG.
4. RAG en profundidad
De todos los conceptos anteriores, RAG (Retrieval Augmented Generation) merece una sección propia porque es, lejos, la técnica más usada hoy para que los LLMs respondan con información específica que no estaba en su entrenamiento: documentación interna de una empresa, apuntes de clase, manuales técnicos, jurisprudencia, historia clínica. Es también el primer proyecto serio que cualquier estudiante puede armar en un fin de semana y entender de punta a punta.
Por qué existe RAG
Los LLMs tienen tres limitaciones inherentes que RAG ayuda a resolver. La primera es el conocimiento desactualizado: el modelo solo sabe lo que vio durante el entrenamiento; todo lo posterior a su knowledge cutoff es invisible. La segunda es la falta de información privada: no conoce los documentos internos de tu empresa, tus apuntes, ni nada que no esté en internet público. La tercera son las alucinaciones: cuando no sabe algo, los LLMs tienden a inventar respuestas plausibles antes que admitir ignorancia. RAG mitiga las tres porque le entrega al modelo el contexto relevante antes de pedirle que responda.
Cómo funciona, paso a paso
RAG tiene dos fases bien diferenciadas: una de indexación, que se hace una sola vez por cada documento, y otra de consulta, que se ejecuta cada vez que el usuario hace una pregunta. La fase de indexación es la inversión inicial; la fase de consulta es la que se ejecuta en tiempo real.
- Cargar los documentos. PDFs, páginas web, transcripciones, lo que sea relevante para el dominio.
- Chunking. Partir cada documento en fragmentos pequeños (típicamente 200 a 1.000 tokens). Demasiado grandes y la búsqueda pierde precisión; demasiado chicos y se pierde contexto.
- Generar embeddings. Convertir cada fragmento en un vector numérico usando un modelo de embeddings (text-embedding-3 de OpenAI, voyage-3 de Voyage AI, gemini-embedding de Google).
- Guardar en una base vectorial. Almacenar los vectores junto con el texto original en pgvector, Pinecone, Qdrant, Chroma o equivalentes.
- Embedding de la pregunta. Convertir la pregunta del usuario en un vector usando el mismo modelo de embeddings que se usó en la indexación.
- Búsqueda por similitud. Encontrar los N fragmentos más cercanos al vector de la pregunta (típicamente entre 3 y 10).
- Construcción del prompt. Armar un prompt que le pase al LLM la pregunta junto con los fragmentos recuperados como contexto adicional.
- Generación. El LLM responde basándose en los fragmentos recibidos, idealmente citando las fuentes para que el usuario pueda verificar.
RAG es como darle al modelo un examen a libro abierto.
El LLM es el estudiante —sabe razonar y escribir bien— y el sistema de recuperación es quien le pasa el libro abierto en la página correcta antes de cada pregunta. Sin RAG, el estudiante tiene que responder de memoria; con RAG, responde con la fuente delante.
Para tener en cuenta
- RAG no le enseña nada nuevo al modelo: solo le entrega información en el prompt. Si querés que el modelo "absorba" conocimiento, lo que buscás es fine-tuning, no RAG.
- La calidad del RAG depende más del retrieval que del LLM: con un LLM mediocre y buen retrieval podés tener respuestas excelentes; con un LLM top y mal retrieval, respuestas elegantes pero equivocadas.
Caso concreto: RAG sobre apuntes y bibliografía
Es un proyecto ideal para construir en un fin de semana y entender el pipeline completo. La idea: armar un asistente que responda preguntas sobre los PDFs de las materias, citando la página exacta de cada respuesta. Los materiales de entrada son los que cualquier estudiante tiene a mano: PDFs de la bibliografía obligatoria, apuntes propios y de compañeros en Word, Markdown o Google Docs, diapositivas de clase en PPTX, transcripciones de grabaciones si las hay, y exámenes y guías de ejercicios anteriores.
Stack mínimo recomendado para un RAG casero
Opción simple (gratis o casi)
- Lectura de PDFs: PyPDF o pdfplumber.
- Chunking: RecursiveCharacterTextSplitter de LangChain.
- Embeddings: text-embedding-3-small de OpenAI (~$0.02 por 1M tokens).
- Base vectorial: Chroma local, file-based, sin servidor.
- LLM: Claude Haiku, Gemini Flash o GPT-5 Mini.
- Interfaz: Streamlit en ~50 líneas de Python.
Opción robusta
- Lectura de PDFs: Unstructured.io o LlamaParse.
- Chunking: chunking semántico con LlamaIndex.
- Embeddings: voyage-3-large, mejor calidad.
- Base vectorial: pgvector en Supabase o Pinecone gestionado.
- LLM: Claude Sonnet, Gemini Pro o GPT-5.
- Interfaz: Next.js + Vercel AI SDK.
Empezá con el stack simple completo antes de optimizar cualquier parte. Es mucho mejor tener un pipeline end-to-end funcionando con Chroma + Streamlit + Haiku, y después reemplazar pieza por pieza, que pasar tres semanas eligiendo "la mejor base vectorial" antes de tener un solo embedding generado.
5. Los tres jugadores: ChatGPT, Gemini y Claude
Tres laboratorios dominan hoy el mercado occidental de modelos frontera, y conviene presentarlos en paralelo porque cada uno persigue una estrategia distinta. Las tres compañías compiten por los mismos benchmarks y, en apariencia, por los mismos clientes, pero el contexto institucional, las alianzas y los productos donde se diferencian son sorprendentemente distintos.
ChatGPT (OpenAI)
OpenAI fue fundada en 2015 con una estructura institucional poco común: una organización sin fines de lucro controla a una con fines de lucro "capeada" (capped-profit), donde los retornos a inversores tienen un techo definido. Sus modelos actuales son la familia GPT-5, con el flagship GPT-5.5 lanzado en abril de 2026, junto con variantes Mini y Nano para casos de menor complejidad. El diferenciador histórico de OpenAI es el first mover advantage: ChatGPT, lanzado en noviembre de 2022, fue el producto que masificó la IA generativa y todavía hoy es la referencia de mercado en cantidad de usuarios. Su alianza estratégica más importante es con Microsoft, que invirtió alrededor de 13 mil millones de dólares e integra los modelos en Azure, Copilot y Office. Los productos principales son ChatGPT para el consumidor final y la API de OpenAI para developers, complementados con Codex, Sora (video) y herramientas para agentes.
Gemini (Google / DeepMind)
Google DeepMind es la división de IA de Alphabet, formada por la fusión de Google Brain y DeepMind en 2023. Sus modelos actuales son Gemini 3 Pro y Gemini 3.1 Pro como flagships, junto con Flash y Flash-Lite para casos más simples y de menor costo. El diferenciador es la integración profunda con el ecosistema Google —Search, Workspace, Android, Chrome— y la mayor ventana de contexto del mercado (hasta 2 millones de tokens), apoyada en el acceso privilegiado a TPUs propios. Los productos principales son la app Gemini, las integraciones en Workspace (Docs, Gmail, Sheets) y Vertex AI para empresas. La ventaja estructural es triple: chips propios (TPUs), datos propios (Search, YouTube) y distribución propia (Android está en miles de millones de dispositivos).
Claude (Anthropic)
Anthropic fue fundada en 2021 por ex-empleados de OpenAI, los hermanos Dario y Daniela Amodei. Sus modelos actuales son Claude Opus 4.7 (lanzado en abril de 2026) como flagship, junto con Sonnet 4.6 y Haiku 4.5 para distintos balances entre capacidad y costo. El diferenciador es el foco fuerte en AI safety y en alineamiento usando una técnica propia llamada Constitutional AI; además, Claude se posicionó muy bien en tareas de programación, agentes de larga duración y trabajo profesional. Las alianzas incluyen inversiones de Amazon (~8 mil millones de dólares) y Google, lo que se traduce en disponibilidad tanto en AWS Bedrock como en Google Vertex AI. Los productos principales son Claude.ai para el consumidor, la API de Anthropic, Claude Code (CLI para desarrollo) y extensiones como Claude para Excel y Chrome.
Comparación lado a lado
Una tabla resumen ayuda a tener el panorama en una sola pantalla. Los números cambian rápido —cada laboratorio re-precia varias veces por año—, pero la forma del posicionamiento es razonablemente estable.
Precios y modelos referencia al 2026-04-01. Cambian varias veces por año: verificar en las páginas oficiales antes de citar.
| Dimensión | ChatGPT (OpenAI) | Gemini (Google) | Claude (Anthropic) |
|---|---|---|---|
| Modelo flagship 2026 | GPT-5.5 | Gemini 3.1 Pro | Claude Opus 4.7 |
| Precio API (in/out por 1M tokens) | $5 / $30 | $2 / $12 | $5 / $25 |
| Ventana de contexto | 1M tokens | Hasta 2M tokens | 1M tokens |
| Aliado cloud | Microsoft Azure | Google Cloud (propio) | AWS + Google Cloud |
| Hardware preferido | NVIDIA GPUs | TPUs propios + GPUs | AWS Trainium + NVIDIA |
| Foco diferencial | Producto masivo, tooling para agentes | Multimodalidad, ecosistema Google | Seguridad, código y agentes empresariales |
| Suscripción consumer | ChatGPT Plus (~USD 20/mes) | Google AI Pro / Ultra | Claude Pro (~USD 20/mes) |
Los precios y modelos cambian rápido. Antes de dar la clase o tomar una decisión técnica, verificá las cifras abriendo las páginas oficiales (openai.com/api/pricing, ai.google.dev/pricing, anthropic.com/pricing). El rate card es solo una parte: prompt caching, batch processing y elección de modelo pueden cambiar el costo real en un orden de magnitud.
6. Modelos de negocio en IA
Alrededor de estos modelos creció un ecosistema con varios patrones de monetización conviviendo al mismo tiempo. Conviene presentarlos como una taxonomía y discutir los trade-offs: cada modelo de negocio refleja una posición distinta en la cadena de valor, desde quien entrena los pesos hasta quien arma una experiencia de usuario sobre la API de un tercero. Para el listado de proveedores que exponen modelos vía API gestionada (Bedrock, Vertex AI, Azure OpenAI, Claude API, OpenAI, Gemini) y cuándo conviene cada uno, ver el recurso integración con IA.
Modelos directos (los grandes laboratorios)
El primer grupo son los modelos que aplican los laboratorios mismos sobre sus propios productos. El más visible es la API as a Service en formato pay-per-token: se cobra por consumo, con precios distintos para input y output (por ejemplo, GPT-5.5 a 5 dólares de input y 30 de output por millón de tokens). Es el modelo dominante de OpenAI, Anthropic y Google para developers. Para el consumidor existe la suscripción consumer: acceso "ilimitado" (con límites razonables) por una mensualidad fija, normalmente alrededor de USD 20 al mes; ahí entran ChatGPT Plus, Claude Pro y Google AI Pro. Para empresas grandes hay planes enterprise con seguridad, auditoría, mayores límites y SSO. Y atravesando todos los segmentos aparecen los tiered models: ofrecer el mismo producto con modelos de distintas capacidades a distintos precios —Pro, Pro+, Ultra—.
Modelos sobre infraestructura
El segundo grupo monetiza el cómputo necesario para entrenar e inferir. El cloud + IA bundling es la jugada de los hyperscalers: AWS Bedrock, Google Vertex AI y Azure AI Foundry venden los modelos como parte de su oferta cloud y capturan margen sobre el cómputo además del modelo en sí. El GPU as a Service es la jugada de empresas como CoreWeave, Lambda Labs o Crusoe, que alquilan capacidad de cómputo a startups que no pueden firmar contratos de largo plazo con NVIDIA. Y una jugada particular es la de open weights + servicios: Meta libera Llama gratis, pero se beneficia indirectamente de la adopción y de tener una IA optimizada para sus propios productos (Instagram, WhatsApp).
Modelos de producto sobre IA (la capa de aplicación)
El tercer grupo es donde nace la mayor cantidad de startups: productos cuyo core es IA pero que no entrenan modelos propios. AI-native SaaS agrupa a productos como Cursor (programación), Perplexity (búsqueda), Notion AI o Granola (notas de reuniones); suelen cobrar por usuario por mes con tiers según uso. Las AI features sobre SaaS existente son la jugada inversa: incumbents que agregan IA a productos consolidados como upsell —Salesforce Einstein, HubSpot AI, Atlassian Intelligence—. El outcome-based pricing es el modelo más emergente y polémico: se cobra por resultado, no por uso (agentes de soporte que cobran por ticket resuelto, por ejemplo); alinea incentivos pero es difícil de medir. Finalmente, los marketplaces y agregadores —OpenRouter, Replicate— agrupan modelos de distintos proveedores y capturan margen por ruteo, comparación y conveniencia.
El stack de IA tiene tres capas y cada una tiene su propia economía.
Quien entrena modelos juega un juego de capital intensivo, pocos jugadores y márgenes inciertos. Quien provee la infraestructura juega el viejo juego del cloud, con márgenes conocidos y volumen. Quien construye productos sobre las APIs juega un juego de innovación rápida, costo marginal bajo y diferenciación basada en producto, no en pesos del modelo.
Para tener en cuenta
- Las tres capas pueden coexistir en una misma empresa (Google y Microsoft juegan en las tres), pero rara vez con la misma estrategia: cada capa exige una operación distinta.
- Como desarrollador, la pregunta práctica suele ser en qué capa querés competir: armar un wrapper sobre la API es barato pero defendible solo por producto; entrenar un modelo es defendible por el modelo pero carísimo.
Hasta acá vimos cómo se compone un sistema con IA generativa cuando el modelo se limita a responder: recibe prompt, devuelve texto. La próxima generación de productos da un paso más y construye agentes: LLMs equipados con herramientas (tools) que actúan en el mundo —leen archivos, consultan bases, llaman APIs, mandan mensajes—. La forma estándar de exponer esas herramientas se llama MCP (Model Context Protocol), publicado por Anthropic a fines de 2024. La Unidad 6 retoma este hilo con foco en cómo se construyen agentes IA en producción y cuándo conviene usar MCP frente a tool calling directo.
7. Errores comunes
El vocabulario de IA es nuevo y se presta a confusiones que vale anticipar. Estos son los dos errores que aparecen con más frecuencia cuando alguien empieza a integrar LLMs en un sistema real.
Qué suele pasar
El equipo decide que necesita "que el modelo aprenda nuestra documentación" y arranca un proyecto de fine-tuning costoso y largo, cuando en realidad un RAG con la misma documentación habría resuelto el 90% del problema en una semana.
Por qué
Suena intuitivo que "enseñarle al modelo" sea mejor que "darle contexto". En la práctica es al revés: el fine-tuning ajusta estilo y tono, no incorpora hechos nuevos de forma confiable. RAG entrega los hechos verificables en cada consulta.
Cómo evitarlo
Probá RAG primero, siempre. Solo considerá fine-tuning cuando RAG funcione bien y necesites mejorar el tono, el formato o casos de uso muy repetitivos donde el contexto es siempre el mismo.
Qué suele pasar
Se asume que "cada usuario nos cuesta X" cuando en realidad un usuario que abre una conversación larga con contexto de un millón de tokens cuesta diez veces más que uno que hace tres preguntas cortas. Los costos reales se descubren cuando llega la primera factura mensual de la API y triplica el estimado.
Por qué
El pricing es por token, no por usuario, y el output suele costar entre 3 y 6 veces más que el input. La variabilidad de uso entre usuarios es enorme y se concentra en una long tail que distorsiona el promedio.
Cómo evitarlo
Instrumentá desde el día uno tokens de input y output por usuario, por endpoint y por modelo. Aplicá prompt caching y elegí el modelo más chico que cumpla la tarea antes de optimizar precio del modelo grande.
8. Para profundizar
Google · 2017 · ~15 páginas
El paper que introdujo la arquitectura Transformer, base de prácticamente todos los LLMs modernos. Denso pero corto; si vas a leer un solo paper de IA, leé este.
Ir al recursoMeta AI · 2020 · ~20 páginas
El paper que dio nombre a RAG y formalizó la combinación de retrieval + generación. Útil para entender de dónde viene la técnica antes de mirar implementaciones modernas.
Ir al recursoAnthropic · 2022 · ~30 páginas
Describe la técnica propia de Anthropic para alinear modelos sin etiquetado humano masivo. Útil para entender en qué se diferencia Claude del resto a nivel de método de entrenamiento.
Ir al recursoAplicaciones concretas de la nube
En las cinco unidades anteriores recorrimos qué es la nube, cómo se virtualiza el cómputo, qué leyes rigen las arquitecturas distribuidas, qué metodologías permiten construir con ese material y, por último, cómo se integra la inteligencia artificial al mismo stack. Esta unidad cierra el arco mirando la pregunta práctica: ¿cómo se combinan todas esas piezas para construir un producto real? Vamos a recorrer el stack típico de una aplicación moderna, los servicios que casi cualquier producto necesita para hablar con sus usuarios y cobrarles, las plataformas que aceleran drásticamente el time-to-market y la forma de documentar lo que se va a construir. La motivación es directa: en pocos días vas a tener que diseñar e implementar tu propio prototipo, y este es el mapa que conecta los conceptos del curso con el catálogo de servicios disponibles.
1. De los conceptos al producto
Hay un salto incómodo entre saber qué es la computación en la nube y usar la nube para resolver un problema concreto. La teoría te da el vocabulario —IaaS, PaaS, SaaS, contenedores, regiones, eventual consistency— pero cuando te sentás frente a una idea de producto la pregunta es siempre la misma: ¿con qué piezas la armo?. Las decisiones se vuelven menos sobre conceptos y más sobre tradeoffs específicos: si elijo Stripe en vez de Mercado Pago pierdo cobertura local pero gano integración global; si uso Firebase me ahorro armar auth pero quedo atado a Google Cloud; si voy serverless pago por uso pero asumo cold starts.
La buena noticia es que casi todas las aplicaciones modernas se construyen combinando un puñado de servicios estándar. Hay un menú bastante estable de piezas —cómputo, base, storage, auth, canales de comunicación, pagos, integración con IA— y la mayoría del trabajo arquitectónico consiste en elegir una opción de cada categoría según el problema. Una vez que se internaliza ese menú, diseñar un nuevo producto se parece más a armar un lego conocido que a inventar algo desde cero. Esta unidad presenta el menú pieza por pieza.
Una aplicación cloud no es un servicio nuevo: es la composición de servicios existentes.
La idea de fondo
La pregunta interesante no es "¿qué construyo desde cero?" sino "¿qué combino?". El diferencial de tu producto vive en la lógica que pegás sobre los servicios, no en reimplementar lo que ya está resuelto (auth, pagos, mensajería). Saber qué hay en el catálogo es la mitad del trabajo de diseño.
Para tener en cuenta
- El catálogo de la pestaña Recursos de este curso es exactamente ese menú: cada item es una pieza típica de una aplicación moderna.
- Diseñar un prototipo es elegir 3 o 4 piezas del catálogo y articularlas; rara vez hace falta inventar una categoría nueva.
2. El stack típico de una app moderna
Casi cualquier aplicación que se monta hoy comparte un esqueleto de servicios. No todos están siempre presentes, pero el patrón se repite con tanta frecuencia que conviene tenerlo memorizado como punto de partida. Cuando alguien describe una idea de producto —"un marketplace para artesanos", "un bot que reserva turnos", "un dashboard de ventas"— se puede recorrer mentalmente el esqueleto y ya empezar a anticipar qué piezas va a necesitar y dónde van a estar los puntos sensibles.
El esqueleto típico tiene siete capas y todas resuelven preguntas distintas. Dónde corre el código se resuelve con un VPS, un container en una plataforma gestionada, o funciones serverless según cuánto control y cuánta comodidad queramos. Dónde guardamos datos estructurados se resuelve con una base de datos gestionada. Dónde guardamos archivos se resuelve con object storage. Quién es el usuario se resuelve con un servicio de autenticación. Cómo le hablamos al usuario fuera de la app con email transaccional y/o mensajería. Cómo cobramos con una pasarela de pagos. Y cómo entregamos contenido cerca del usuario con un CDN. Después aparecen capas opcionales según el caso: cache para acelerar lecturas, colas para desacoplar trabajos pesados, integración con IA cuando el producto tiene un componente conversacional o de análisis automático.
Una forma útil de pensar el stack es como una línea de montaje donde cada servicio cumple un rol específico y las decisiones de arquitectura están en cómo se comunican entre sí. La línea típica es: el navegador del usuario habla con el CDN (que cachea los assets estáticos), el CDN reenvía al backend si hace falta lógica dinámica, el backend valida la sesión contra el servicio de auth, lee y escribe en la base de datos, sube archivos al object storage, encola tareas pesadas en una cola, dispara correos o mensajes para notificar al usuario y, si corresponde, cobra a través de la pasarela de pagos.
3. Identidad y cobro: los servicios al usuario
De todas las piezas del stack, dos suelen aparecer en cualquier producto que tenga usuarios humanos del otro lado: autenticación y, si hay monetización directa, pagos. Las dos son territorio resuelto por la industria hace tiempo y, sin embargo, las dos son lugares donde un equipo bien intencionado puede meterse en problemas serios si decide reinventar la rueda.
Autenticación
Manejar usuarios y sesiones parece simple: registro, login, recuperación de contraseña, sesión persistente. En la práctica es uno de los componentes con más superficie de ataque y más casos borde: hash correcto de contraseñas, verificación de email, MFA, login social con proveedores externos, manejo de tokens, expiración de sesiones, invalidación, sincronización entre dispositivos, recuperación cuando el usuario perdió el segundo factor. Hacer todo eso bien lleva meses; hacerlo medio bien suele terminar en una filtración de credenciales.
Por eso la recomendación práctica es delegar: usar un servicio de autenticación gestionado como Auth0, Clerk, AWS Cognito o Supabase Auth, o aprovechar la auth integrada de un BaaS como Firebase. El proveedor se encarga del flujo completo, expone un SDK para el frontend y emite tokens que tu backend valida. El tradeoff es lock-in: salir después de Auth0 implica re-migrar usuarios y reescribir el flujo.
Pagos
Cobrar online tiene la misma lógica: el cumplimiento PCI-DSS, la integración con tarjetas y bancos, la disputa de chargebacks y el manejo de fraude son tareas que llevan años de inversión y certificación. La decisión real al elegir una pasarela de pagos es entre opciones globales (Stripe, Square) que dan cobertura amplia y APIs limpias, y opciones locales (Mercado Pago, dLocal, Ualá Bis) que tienen mejor adopción en países específicos y soportan métodos como Rapipago, Pix o transferencias inmediatas. Para audiencia argentina típicamente conviene Mercado Pago; para vender a clientes globales, Stripe.
Qué suele pasar
Para "ahorrar un paso" al usuario, alguien decide guardar el número de tarjeta o un token sensible en la base de datos del producto. A las semanas hay una auditoría, una filtración o simplemente una multa de tu adquirente.
Por qué
El estándar PCI-DSS regula con detalle qué se puede y qué no se puede almacenar; cumplirlo desde cero es carísimo. La pasarela existe para que vos nunca veas el dato sensible: solo manejás un token opaco emitido por el proveedor.
Cómo evitarlo
Usar las APIs de tokenización que vienen incluidas en cualquier pasarela. Lo único que guardás en tu base es el token devuelto por el proveedor; el dato sensible nunca toca tus servidores.
4. Hablarle al usuario sin que entre a tu app
Una vez que el usuario está registrado y eventualmente paga, el producto necesita comunicarse con él en momentos donde no está usando activamente la aplicación: confirmar un signup, mandar un recibo, recordarle un turno, avisarle que su pedido salió. Hay tres canales principales y cada uno tiene su lógica propia: correo electrónico, mensajería instantánea (típicamente WhatsApp o Telegram en Latam) y notificaciones push dentro de la app.
El correo transaccional se delega a un servicio de mailing como Postmark, Resend o SendGrid. Estos proveedores se ocupan de la entregabilidad —reputación de IP, autenticación SPF/DKIM/DMARC, manejo de bounces y complaints—, cosas que mandando mails desde tu propio SMTP no escalan más allá de unos cientos por día. El correo es el canal por defecto para comunicación no urgente: bienvenidas, recuperación de password, notificaciones, recibos, resúmenes periódicos.
La mensajería en cambio se reserva para comunicación urgente o conversacional. WhatsApp tiene tasas de apertura cercanas al 90% y permite bots interactivos; el costo por mensaje es órdenes de magnitud más alto que el mail. Twilio, MessageBird, 360dialog son los proveedores típicos para WhatsApp Business; Telegram ofrece su Bot API gratis y es ideal para prototipos. SMS sigue vivo donde hace falta llegar a usuarios sin smartphone o donde la verificación por número de teléfono es obligatoria.
Empezá siempre por mail transaccional. Es 10 a 50 veces más barato que WhatsApp por mensaje, no requiere alta como Business Account y cubre la mayoría de los casos. Sumá WhatsApp cuando tengas evidencia de que la audiencia no lee el correo o cuando la conversación bidireccional sea parte central del producto (un bot de turnos, una atención al cliente).
5. Datos más allá de la base relacional
En la Unidad 3 vimos que el dato típico de una aplicación vive en una base de datos relacional o documental: filas, columnas, índices, consistencia gestionada por el motor. Pero en cualquier producto real aparecen dos tipos de datos que no encajan en una base y que necesitan su propia infraestructura: archivos y datos externos que no son nuestros.
Object storage para archivos
Cualquier app con uploads necesita un lugar para archivos: avatares, documentos, PDFs subidos por el usuario, fotos de evidencia, videos grabados. Guardar archivos en la base relacional es un error clásico (infla las tablas, complica los backups, encarece las queries). El patrón correcto es separar: el archivo binario va a un servicio de object storage como S3, Cloud Storage, R2 o un Supabase Storage; la base de datos guarda solamente la referencia (path, URL, key) junto con los metadatos del archivo (tamaño, tipo, fecha, dueño).
Object storage tiene además una propiedad útil para servir contenido público: cada bucket puede exponerse detrás de un CDN, de manera que las imágenes se sirven desde el nodo más cercano al usuario sin tocar tu backend. El flujo típico para un upload es: el frontend pide una URL firmada al backend, sube directamente al bucket usando esa URL, y avisa al backend con la key del archivo subido. El backend nunca recibe el binario completo, solo el metadato.
Scraping para datos externos
Hay productos cuyo valor depende de información que vive en sitios web ajenos sin API: precios de la competencia, listados de eventos culturales, publicaciones inmobiliarias, contenido público para armar un buscador o para alimentar un RAG. Cuando no hay feed oficial, la alternativa es scraping: navegar y parsear el HTML como lo haría un usuario humano, pero programáticamente.
El stack típico de scraping va de menor a mayor complejidad: una librería como BeautifulSoup o Scrapy para sitios estáticos, un browser headless como Playwright o Puppeteer para sitios que renderizan con JavaScript, y un servicio gestionado como Bright Data o ScrapingBee cuando hace falta rotar proxies o resolver CAPTCHAs a escala. La complejidad real no suele ser técnica sino legal y operativa: cumplir términos de uso del sitio fuente, mantener el scraper cuando el HTML cambia, evitar bans por volumen.
6. Acelerar con plataformas todo-en-uno
Hasta acá presentamos cada pieza del stack por separado. Esa aproximación —elegir un servicio por categoría— da el máximo control y la mejor portabilidad, pero también pide más tiempo de integración: cada componente tiene su SDK, sus credenciales, su lógica de autenticación, su modelo de costos. Para muchos productos —sobre todo MVPs, prototipos y herramientas internas— el tiempo importa más que el control. Para esos casos existen plataformas que integran varias piezas en un mismo proveedor: BaaS y low-code.
BaaS: el backend como producto
Una plataforma de Backend as a Service como Firebase, Supabase o Convex te entrega en un único SDK auth, base de datos (con sync en tiempo real, en muchos casos), object storage, funciones serverless, hosting estático y notificaciones push. El cliente —web, iOS, Android— habla directamente con los servicios usando el SDK; del lado del producto solo modelás el dominio y la UI. Una app que armada pieza por pieza llevaría dos semanas suele estar funcionando en un día con BaaS.
El tradeoff es lock-in. Salir de Firestore o Convex después suele ser reescribir, no migrar: las queries, el modelo de datos y los patrones de sincronía son muy específicos. Supabase mitiga esto porque por abajo es PostgreSQL estándar, lo que facilita salirse eventualmente; Firebase está más fuertemente atado a Google Cloud. El otro tradeoff es el costo a escala: el pricing por reads/writes/egress se acumula rápido si el producto crece.
Low-code: ni siquiera escribir el SDK
Las plataformas low-code y no-code —Bubble, Webflow, Retool, FlutterFlow, las más recientes Lovable y v0— llevan la lógica un paso más allá: en vez de escribir código contra un SDK, armás la aplicación arrastrando componentes en una interfaz visual o describiéndola en lenguaje natural. Para casos como herramientas internas (un CRM simple, un panel de admin), MVPs para validar una idea o automatizaciones entre SaaS, es la opción más rápida. Para productos con lógica compleja, performance crítica o requisitos de portabilidad, no es viable.
Stack pieza por pieza vs plataforma todo-en-uno
Stack pieza por pieza
- Control total: cada pieza es la mejor de su categoría.
- Portabilidad: cambiar un componente no obliga a reescribir el resto.
- Más tiempo de integración: cada SDK tiene su lógica propia.
- Más superficie operativa: backups, monitoreo, billing en varios proveedores.
Plataforma todo-en-uno (BaaS / low-code)
- Time-to-market muy corto: días en vez de semanas.
- Una sola facturación, un solo SDK, un solo proveedor.
- Lock-in fuerte: salir es reescribir, no migrar.
- Pricing puede dispararse a escala.
7. Agentes IA en producción
La Unidad 5 introdujo los LLMs y RAG: el modelo recibe un prompt, eventualmente acompañado de contexto recuperado de una base vectorial, y devuelve texto. Ese patrón cubre buena parte de los productos con IA actuales (chatbots, asistentes de búsqueda, generadores de contenido). Pero hay una segunda generación de productos donde el LLM no solo responde: actúa. Lee archivos, consulta bases de datos, llama APIs, edita código, manda mails, agenda reuniones. Es lo que se conoce como agentes: un LLM más una caja de herramientas (tools) que puede invocar a voluntad para resolver una tarea.
Construir un agente requiere dos cosas además del modelo: exponer las tools (funciones que el modelo puede llamar, cada una con su schema de input/output) y manejar el bucle de razonamiento (el modelo decide qué tool llamar, recibe el resultado, decide si necesita otra, hasta que considera resuelta la tarea). Cada proveedor de LLM tiene su API de tool calling: OpenAI lo llama function calling, Anthropic lo llama tool use. Funcionan parecido y se programan a mano para cada agente.
MCP: el protocolo estándar para tools
El problema con armar tools a mano es que cada agente queda atado a las suyas y no son reutilizables. Si un equipo expone un acceso a su base de datos como tool para su agente propio, y otro equipo quiere darle al suyo el mismo acceso, tiene que reimplementar la integración. MCP (Model Context Protocol), publicado por Anthropic a fines de 2024, resuelve eso: estandariza cómo un cliente (Claude Code, Claude Desktop, Cursor, Windsurf, Zed) descubre y llama tools expuestas por un server MCP. Cualquier cliente compatible puede usar cualquier server compatible.
En la práctica, MCP permite "agentizar" un LLM con tools propias sin escribir glue code para cada cliente. Hay servers oficiales listos para filesystem, GitHub, Slack, Postgres, Google Drive, Sentry y otros; cualquier equipo puede escribir uno propio para su dominio. Para un prototipo del challenge, MCP es interesante cuando el producto es un asistente que necesita actuar sobre los datos del docente, del alumno o de la institución: leer submissions, consultar calificaciones, redactar devoluciones.
Un chatbot responde; un agente actúa. La diferencia es tener tools.
El primer paso al diseñar un producto con IA es preguntarse si alcanza con un LLM puro (toma prompt, devuelve texto) o si el modelo necesita ejecutar acciones en el mundo. Si la respuesta es la segunda, vas a estar construyendo un agente, y vas a necesitar pensar el set de tools que le exponés.
Para tener en cuenta
- Los agentes amplifican errores: si una tool ejecuta una acción destructiva, el modelo puede invocarla incorrectamente. Diseñar el set de tools incluye decidir cuáles requieren confirmación humana.
- MCP es la opción estándar cuando ya tenés varios clientes o querés que terceros extiendan tu app; para un agente único con dos tools, el tool calling nativo del proveedor alcanza.
8. Documentar lo que vas a armar
La última pieza del puente entre concepto y producto no es técnica sino documental. Antes de tirar el primer container, conviene haber escrito dos documentos cortos que después facilitan la construcción y el mantenimiento: el PRD (Product Requirements Document) y el ADR (Architectural Decision Record). Los dos son centrales para la entrega del challenge final del curso.
PRD: qué vamos a construir
El PRD define el producto antes de pensar en cómo construirlo: qué problema resuelve, para qué usuario, con qué alcance, con qué criterio de éxito. No es un documento largo —una a tres páginas bien escritas alcanzan— pero es el filtro que evita construir cosas que nadie necesita. Atlassian tiene una guía canónica para escribir PRDs que es la referencia incluida en la pestaña Bibliografía de este curso.
ADR: por qué construimos así
El ADR registra las decisiones arquitectónicas importantes: para cada elección de stack (qué base de datos, qué auth, qué cómputo, qué pasarela de pagos), por qué la elegimos, qué alternativas evaluamos y qué tradeoffs aceptamos. Su valor real aparece seis meses después, cuando alguien (vos mismo, otro desarrollador) abre el proyecto y necesita entender por qué el sistema es como es. AWS publica una prescriptive guidance sobre ADRs que también está en la pestaña Bibliografía.
Diagram as code: el diagrama que no se desactualiza
Un ADR sin diagrama es difícil de leer; un diagrama subido como PNG a Confluence es difícil de mantener. La solución es diagram as code: lenguajes textuales como Mermaid, PlantUML o D2 que se renderizan automáticamente y viven en el repo junto al código. Mermaid en particular tiene la ventaja de que GitHub lo renderiza directo en cualquier archivo Markdown, así que un diagrama de arquitectura metido en el README se ve sin ningún paso adicional. Para el ADR del challenge, un diagrama Mermaid bien hecho vale por varios párrafos de prosa.
9. Caso integrador: bot de WhatsApp para turnos
Para terminar de bajar a tierra todo lo anterior, repasemos un caso completo a nivel de diseño. El producto es un bot de WhatsApp que permite a un consultorio médico recibir y gestionar turnos sin que la secretaria atienda teléfono. El paciente conversa con el bot en lenguaje natural ("hola, quiero un turno con la doctora para la semana que viene a la tarde"), el bot interpreta la intención, propone horarios disponibles, registra la reserva y manda un recordatorio por mail el día previo. Es un caso simple pero combina cinco piezas distintas del catálogo y obliga a tomar decisiones reales.
Las piezas elegidas y por qué
Canal de entrada: messaging (Twilio para WhatsApp Business). Twilio porque tiene buena documentación, proceso de alta razonablemente rápido y SDK en todos los lenguajes. Alternativa descartada: 360dialog (más barato a escala pero proceso de alta más lento).
Interpretación del lenguaje: AI integration (Claude Haiku). Haiku porque es más que suficiente para extraer intención y entidades de un mensaje corto, y cuesta una fracción de Sonnet u Opus. Alternativa descartada: GPT-5 Mini (similar precio pero el equipo ya tiene experiencia con la API de Anthropic).
Persistencia: database gestionada (Supabase Postgres). Supabase porque viene con Postgres real, dashboard incluido y nivel gratis suficiente para el prototipo. Alternativa descartada: Firestore (más rápido para empezar pero peor para queries por fecha y disponibilidad).
Recordatorios: mailing transaccional (Resend). Resend porque la API es simple, el nivel gratis cubre los 3.000 mails mensuales esperados y la integración desde Node es de cinco líneas. Alternativa descartada: mandar el recordatorio por WhatsApp (más caro por mensaje y, para un simple recordatorio diario, no aporta).
Cómputo: serverless (Vercel Functions). Vercel porque hostea también el panel web de administración del consultorio (que es Next.js), así que un solo deploy cubre web + webhooks de WhatsApp. Alternativa descartada: un contenedor en Fly.io (más control pero más overhead para algo que recibe pocos eventos al día).
El flujo, en un diagrama
El siguiente es el diagrama Mermaid que iría dentro del ADR. En GitHub se renderiza automáticamente; en otras plataformas se puede incluir el SVG generado.
sequenceDiagram
participant U as Paciente (WhatsApp)
participant T as Twilio
participant F as Vercel Function
participant C as Claude Haiku
participant DB as Supabase
participant R as Resend (día previo)
U->>T: "quiero turno la semana que viene a la tarde"
T->>F: webhook con el mensaje
F->>C: extraer intención + fecha/hora
C-->>F: { intent: "reservar", preferencia: "tarde, próxima semana" }
F->>DB: consultar disponibilidad
DB-->>F: horarios libres
F->>T: enviar opciones al paciente
T->>U: "tengo martes 16hs o jueves 18hs"
U->>T: "martes"
T->>F: webhook con confirmación
F->>DB: crear turno
F->>T: confirmar al paciente
Note over R,U: 24h antes del turno
R->>U: recordatorio por mail
El diagrama vive en el repo junto al ADR; cualquier cambio en el flujo se traduce en un commit que toca también el diagrama.
Lo que faltaría discutir en el ADR completo
Este es solo el esqueleto del walk-through. Un ADR real para este producto tendría que cubrir también: cómo se autentican las requests de Twilio para que nadie pueda simular un mensaje, cómo se manejan los conflictos cuando dos pacientes piden el mismo horario al mismo tiempo, qué pasa si Claude devuelve una interpretación errónea, qué se hace si el paciente quiere cancelar, dónde se loguean los mensajes para auditoría futura. Cada una de esas preguntas es una decisión arquitectónica que merece quedar registrada.
Tu propio dominio: registrarlo en nic.ar y apuntarlo a DigitalOcean
Llegado el challenge, tu prototipo va a vivir en algún lado: un
Droplet de DigitalOcean, una función serverless,
una plataforma de hosting. Pero ese "algún lado" tiene una dirección IP cruda
—algo como 164.92.130.45— que nadie va a tipear ni recordar.
Esta unidad es un apéndice práctico que cierra el último kilómetro: cómo
sacar un dominio propio en nic.ar (el registro de los
dominios .ar) y cómo delegar su DNS a DigitalOcean
para que tuproyecto.com.ar apunte a tu servidor. Es el paso que
convierte un experimento de clase en algo que podés mandar por WhatsApp y que
se ve profesional.
1. De la IP al nombre: qué resuelve el DNS
Toda máquina en internet se identifica por una dirección IP. Las personas, en
cambio, recordamos nombres. El DNS (Domain Name System) es la
capa que traduce un nombre legible —google.com,
tuproyecto.com.ar— a la IP donde realmente vive el servicio. Es,
en esencia, la guía telefónica de internet: vos pedís un nombre y el sistema te
devuelve el número al que hay que llamar. Cada vez que el navegador abre una
URL, lo primero que hace —antes de pedir una sola línea de HTML— es preguntarle
al DNS "¿a qué IP corresponde este nombre?".
Esa traducción no la hace un único servidor mágico, sino una cadena de
delegación jerárquica. Hay servidores raíz que saben quién maneja
cada extensión (.com, .ar), servidores de cada
extensión que saben quién maneja cada dominio puntual, y finalmente los
servidores autoritativos de tu dominio, que son los que realmente
contienen las respuestas: "el nombre www.tuproyecto.com.ar está
en la IP tal". Sacar un dominio y configurarlo es, en el fondo, decidir
quién va a ser autoritativo por tu nombre y qué respuestas va
a dar.
El sistema distribuido que traduce nombres de dominio legibles a las direcciones IP donde corren los servicios.
Metáfora
Es la agenda de contactos del planeta: vos guardás "Mamá" y el teléfono sabe a qué número marcar. Si cambiás de servidor (de número), actualizás la agenda y todo el mundo sigue llamando al mismo nombre.
Las tres piezas que vas a tocar
2. Anatomía de un dominio .ar y el rol de nic.ar
Un dominio se lee de derecha a izquierda, de lo más general a lo más
específico. En www.tuproyecto.com.ar: .ar es el
TLD (dominio de nivel superior de país, Argentina),
.com.ar es la zona comercial dentro de ese país,
tuproyecto es el nombre que vos elegís y registrás, y
www es un subdominio que vos definís libremente
una vez que sos dueño del nombre. Lo que comprás en nic.ar es la parte
tuproyecto.com.ar; todo lo que cuelga a la izquierda
(www, api, blog) lo creás vos sin pagar
nada más.
nic.ar es el registro oficial de los dominios bajo
.ar, operado por el Estado argentino. Es el único lugar donde se
registra un .ar: no hay revendedores como sí los hay para
.com. La zona más común es .com.ar (uso
general/comercial, la opción por defecto) y se registra sin más requisito que
estar dado de alta en el sistema; otras como .gob.ar,
.edu.ar o .org.ar exigen acreditar que sos esa clase
de entidad. Desde 2014 el registro es pago (una tarifa anual
baja, del orden de unos pocos miles de pesos según la zona) y se renueva todos
los años: si no pagás, el dominio se libera.
.ar, .com, .org). Los terminados en país, como .ar, se llaman ccTLD.
3. Registrar el dominio en nic.ar
El alta es íntegramente online y se hace con tu identidad fiscal: nic.ar usa autenticación del Estado, así que entrás con tu cuenta de Mi Argentina o con Clave Fiscal de AFIP. No hace falta más que eso y un medio de pago. El flujo es corto y rara vez cambia en lo esencial, aunque la interfaz exacta del sitio puede variar con el tiempo.
- Entrá a
nic.are ingresá con Mi Argentina o Clave Fiscal de AFIP. La primera vez te crea automáticamente el "usuario" del registro asociado a tu identidad. - Buscá el nombre que querés (ej.
tuproyecto) y elegí la zona (.com.arpara el caso general). El sistema te dice si está disponible. - Agregalo y pagá la tarifa anual. Recién cuando el pago se acredita el dominio queda registrado a tu nombre.
- Entrá a la administración del dominio ya registrado: ahí vas a ver la sección de servidores DNS (o "delegación"). Por defecto suele venir con los DNS del propio nic.ar.
- Anotá que más adelante (paso del punto 5) vas a reemplazar esos nameservers por los de DigitalOcean. Por ahora, dominio comprado: listo.
El dominio es independiente de dónde corra tu app. Podés registrarlo hoy aunque el prototipo todavía no exista: el nombre queda reservado a tu nombre y después lo apuntás a donde sea. Para el challenge conviene sacarlo temprano, así no dependés de la propagación a último momento.
4. ¿Quién resuelve tu DNS? nic.ar vs DigitalOcean
Una vez registrado, el dominio necesita un juego de nameservers que respondan por él. Tenés dos caminos. Podés usar el DNS que provee nic.ar y cargar los registros directamente en su panel; o podés delegar los nameservers a un proveedor externo —en nuestro caso DigitalOcean— y manejar toda la zona desde ahí. Para un proyecto que ya vive en DigitalOcean, delegar el DNS al mismo proveedor es lo más cómodo: tenés Droplet, registros y, si sumás un balanceador o un certificado, todo en un solo panel.
DNS en nic.ar vs DNS delegado a DigitalOcean
Usar el DNS de nic.ar
- Un solo lugar: comprás y configuras los registros en el mismo panel.
- No tenés que tocar la delegación de nameservers.
- Panel más limitado; menos integrado con tu infraestructura cloud.
- Si movés todo a otro proveedor, el DNS queda separado del resto.
Delegar a DigitalOcean
- DNS, Droplet, balanceadores y certificados en un único panel.
- Se integra con
doctly la API para automatizar. - Hay que configurar la delegación de nameservers en nic.ar (un paso extra, una vez).
- El DNS de DigitalOcean es gratis pero atado a tu cuenta del proveedor.
5. Apuntar el dominio a DigitalOcean
Acá está el corazón de la unidad y el paso que más confunde la primera vez. La idea es de dos lados: primero le decís a DigitalOcean "voy a manejar este dominio acá" (y DO te entrega sus nameservers), y después volvés a nic.ar y le decís "delegá este dominio a estos nameservers". Recién cuando nic.ar publica esa delegación, el mundo empieza a preguntarle a DigitalOcean por tu nombre.
- En el panel de DigitalOcean, andá a Networking → Domains y agregá tu dominio tal cual lo registraste:
tuproyecto.com.ar. Opcionalmente, asocialo a tu Droplet para que cree los registros básicos solo. - DigitalOcean asume que vos vas a delegarle el dominio y usa siempre sus tres nameservers:
ns1.digitalocean.com,ns2.digitalocean.com,ns3.digitalocean.com. - Volvé a la administración del dominio en nic.ar, a la sección de servidores DNS / delegación.
- Borrá los nameservers que venían por defecto y cargá los tres de DigitalOcean. nic.ar exige al menos dos; cargá los tres.
- Guardá. nic.ar publica la nueva delegación y arranca la propagación (de minutos a varias horas). A partir de ahí, los registros los gestionás en DigitalOcean, no en nic.ar.
Delegar nameservers y crear registros son dos cosas distintas y van en ese orden.
La idea de fondo
La delegación (en nic.ar) decide quién responde por tu dominio. Los registros (en DigitalOcean) deciden qué responde. Si delegás a DigitalOcean pero no cargás ningún registro, tu dominio resuelve "a la nada": el servidor autoritativo existe pero no tiene respuestas.
Para tener en cuenta
- Mientras la delegación propaga, parte del mundo te ve apuntando a nic.ar y parte a DigitalOcean. Es normal y transitorio.
- Una vez delegado a DigitalOcean, los registros que tengas cargados en el panel de nic.ar dejan de tener efecto.
6. Crear los registros DNS en DigitalOcean
Con la delegación hecha, DigitalOcean es autoritativo por tu dominio y ahora sí cargás los registros que dicen a qué IP va cada nombre. Los que vas a usar casi siempre son pocos. Un registro A apunta un nombre a una IPv4 (tu Droplet); un AAAA hace lo mismo para IPv6; un CNAME es un alias que apunta un nombre a otro nombre; un MX dice qué servidor recibe el correo del dominio; y un TXT guarda texto libre, típico para verificaciones de propiedad y registros de email (SPF, DKIM).
Para una app web típica alcanza con dos registros. Un registro A en el
apex del dominio (el nombre "pelado",
tuproyecto.com.ar, que en los paneles se escribe como
@) apuntando a la IP del Droplet, y un CNAME para
www que apunte al apex, de manera que www.tuproyecto.com.ar
y tuproyecto.com.ar lleven al mismo lugar. Si asociaste el dominio
a un Droplet al crearlo, DigitalOcean ya te dejó algo parecido armado.
# A record en el apex (@) → IP del Droplet
doctl compute domain records create tuproyecto.com.ar \
--record-type A --record-name @ \
--record-data 164.92.130.45 --record-ttl 3600
# www como alias del apex
doctl compute domain records create tuproyecto.com.ar \
--record-type CNAME --record-name www \
--record-data @ --record-ttl 3600
Lo mismo se hace con clicks en Networking → Domains; doctl sirve para dejarlo reproducible o scripteado. El TTL en segundos define cuánto cachean los resolvers cada respuesta.
Qué suele pasar
Se intenta apuntar tuproyecto.com.ar (el apex) con un CNAME hacia otro nombre —por ejemplo el host de un servicio de hosting— y el dominio queda roto, sin resolver el correo o devolviendo errores intermitentes.
Por qué
El estándar DNS no permite un CNAME en el apex conviviendo con otros registros obligatorios (como NS y SOA, que siempre viven ahí). El CNAME, por definición, dice "para este nombre, mirá ese otro y nada más", y eso choca con esos registros.
Cómo evitarlo
En el apex usá siempre un registro A (o AAAA) con la IP directa. Dejá los CNAME para subdominios como www. Si necesitás apuntar el apex a un nombre, DigitalOcean no lo soporta de forma nativa: poné la IP.
7. Verificar que todo quedó bien
Antes de declarar victoria, conviene chequear dos cosas por separado, en el
mismo orden en que las configuraste: primero que la delegación
haya propagado (que el mundo le pregunte a DigitalOcean por tu dominio), y
después que los registros respondan la IP correcta. Las
herramientas dig y nslookup hacen exactamente las
consultas que hace un navegador, pero te muestran la respuesta cruda.
# ¿Qué nameservers responden por el dominio? Deberían ser los de DigitalOcean
dig NS tuproyecto.com.ar +short
# → ns1.digitalocean.com.
# ns2.digitalocean.com.
# ns3.digitalocean.com.
# ¿A qué IP resuelve el dominio? Debería ser la del Droplet
dig tuproyecto.com.ar +short
# → 164.92.130.45
# Preguntando directo al nameserver de DO, sin esperar caches intermedios
dig @ns1.digitalocean.com tuproyecto.com.ar +short
Si dig NS todavía muestra los nameservers de nic.ar, la delegación no terminó de propagar: esperá. Si muestra los de DigitalOcean pero dig del dominio no devuelve IP, falta cargar el registro A.
Qué suele pasar
Se cambia la delegación, no anda al toque, y se empieza a tocar todo —borrar registros, recrearlos, cambiar nameservers de nuevo— convencido de que algo está mal configurado, cuando en realidad solo faltaba esperar la propagación.
Por qué
Los resolvers de todo el mundo cachean las respuestas según el TTL. Un cambio puede tardar de minutos a varias horas en verse en todos lados, y cada cambio nuevo reinicia el reloj y suma confusión. El navegador y el sistema operativo también cachean por su cuenta.
Cómo evitarlo
Configurá una vez, verificá con dig (que evita el caché del navegador) y esperá. Si vas a migrar un dominio que ya está en uso, bajá el TTL de los registros unas horas antes para que el cambio se vea más rápido.
Con el dominio resolviendo a tu Droplet, el último paso para que se vea profesional es el HTTPS. Un certificado gratuito de Let's Encrypt (vía Certbot en el Droplet, o el balanceador gestionado de DigitalOcean) se emite en minutos y valida la propiedad justamente a través del DNS que recién configuraste. Sin certificado, el navegador va a marcar tu sitio como "no seguro".
8. Cierre: del prototipo a una URL que se puede compartir
Recapitulando el camino completo: registrás tuproyecto.com.ar en
nic.ar pagando la tarifa anual, agregás el dominio en DigitalOcean y tomás sus
tres nameservers, volvés a nic.ar a delegar el dominio a esos nameservers,
cargás en DigitalOcean un registro A en el apex hacia la IP de tu Droplet y un
CNAME para www, verificás con dig que la delegación y
la resolución estén bien, y rematás con un certificado HTTPS. El resultado es
una dirección propia, memorable y segura, en lugar de una IP cruda.
Para el challenge, esto es lo que separa "tengo un prototipo corriendo en una IP" de "tengo un producto que puedo mostrar". No es obligatorio para que la solución funcione, pero un dominio propio comunica seriedad y te obliga a cerrar el último tramo del despliegue —el que casi nadie practica hasta que lo necesita en serio—. Si seguiste las seis unidades anteriores ya sabés elegir las piezas; esta unidad te dio la dirección donde ponerlas.
Recursos cloud
Catálogo de tecnologías típicas que aparecen al diseñar una arquitectura en la nube. Cada bloque incluye productos equivalentes por proveedor y cuándo conviene usarlo.
Ai
Integración con IA
Servicios gestionados que exponen modelos de lenguaje, visión, audio y multimodales mediante APIs HTTP. Permiten agregar capacidades de IA a una aplicación —resumir texto, clasificar imágenes, transcribir audio, generar contenido— sin entrenar modelos ni operar GPUs. La elección entre proveedores depende de calidad, latencia, costo por token y políticas de privacidad de datos.
Productos por nube
Cuándo conviene
- Procesamiento de lenguaje natural: resumen, clasificación, extracción.
- Generación de contenido asistida (texto, imágenes, código).
- Asistentes conversacionales sobre datos propios (combinado con RAG).
Cuándo no conviene
- Tareas donde el costo por token o la latencia matan el caso de uso (un modelo local más chico puede alcanzar).
- Datos sensibles que no pueden salir de tu infraestructura: revisar política de retención del proveedor o usar opciones on-prem.
- Problemas que se resuelven mejor con una regla determinista o una query SQL.
MCP — Model Context Protocol
Protocolo abierto publicado por Anthropic a fines de 2024 que estandariza cómo un agente IA accede a herramientas y fuentes de datos externas. Es la forma canónica de agentizar un LLM: en vez de hardcodear cada tool dentro del prompt o del código del cliente, exponés cada capacidad como un server MCP (un filesystem, una base, una API SaaS, una tool propia de tu dominio) y cualquier cliente compatible la puede usar. Lo que le da al modelo dos cosas que el chat plano no tiene: acción (ejecutar cosas en el mundo real) y contexto fresco (datos al momento, no congelados en el corpus de entrenamiento).
En el ecosistema
Cuándo conviene
- Tu prototipo es un agente IA que necesita actuar sobre algo (leer/escribir archivos, consultar bases, llamar APIs) y no solo conversar.
- Querés que un cliente existente (Claude Desktop, Cursor) pueda usar las tools propias de tu dominio sin escribir glue code para cada cliente.
- Trabajás con varios LLMs distintos y necesitás que compartan el mismo set de tools.
- Separar el "agente" del "acceso a datos" por seguridad: el server MCP corre con sus credenciales y expone solo lo que decidiste.
Cuándo no conviene
- Chatbot con prompt fijo sin necesidad de acción externa: alcanza con la API directa de un LLM.
- Una sola integración chica y aislada: implementar MCP es overkill, una función directa hace lo mismo.
- Cuando la latencia es crítica: cada hop MCP suma overhead respecto de llamar la API directa.
RAG / Bases de conocimiento
RAG (Retrieval-Augmented Generation) es el patrón arquitectónico para que un modelo de lenguaje responda con conocimiento específico de tu dominio sin reentrenarlo: se indexan documentos en una base vectorial, se recupera lo relevante en tiempo de consulta y se le pasa al modelo como contexto. Las bases de conocimiento gestionadas automatizan todo el pipeline (extracción, chunking, embeddings, índice, búsqueda) y exponen una API simple de "preguntá".
Productos por nube
Cuándo conviene
- Chatbots que responden sobre documentación interna de la empresa.
- Asistentes que citan fuentes para reducir alucinaciones del modelo.
- Búsqueda semántica en grandes corpus (papers, manuales, contratos).
Cuándo no conviene
- Corpus chiquito que entra en el prompt: meté el contenido directo y ahorrás toda la pipeline.
- Datos que cambian en tiempo real: el índice queda atrás y devuelve respuestas viejas.
- Cuando necesitás lookup exacto (matchear un código, un ID): una DB con búsqueda full-text es más simple y precisa.
Compute
Containers y orquestación
Forma estándar de empaquetar una aplicación junto con sus dependencias en una unidad portable que corre igual en cualquier lado: tu laptop, un VPS, un cluster gestionado o serverless. Docker es el formato dominante; arriba se construyen capas de orquestación que deciden dónde y cuántas instancias correr. Es la pieza que hace que los conceptos de PaaS, IaaS y serverless se mezclen y combinen.
Empaquetado
Orquestación gestionada
Orquestación self-host
Cuándo conviene
- Aislar dependencias y lograr que "dev == staging == prod" sin sorpresas.
- Microservicios o varios servicios independientes que se despliegan a distinto ritmo.
- Despliegues reproducibles y rollbacks atómicos (cambiás la tag del image).
- Escalado horizontal automático según carga.
Cuándo no conviene
- App monolítica chica con un solo proceso: un VPS o un servicio serverless suele alcanzar.
- Equipo sin experiencia operando containers en producción: la curva de Kubernetes en particular es muy empinada.
- Cuando el costo y la complejidad operativa del cluster superan al producto que aloja.
Serverless / Functions as a Service
Modelo de cómputo donde el proveedor ejecuta código en respuesta a eventos sin que el cliente administre servidores. Pagás por invocación y por tiempo de ejecución; cuando no hay tráfico, no hay costo. Es el extremo opuesto del VPS en el espectro "control vs comodidad".
Productos por nube
Cuándo conviene
- Tareas event-driven: procesar un upload, responder un webhook, programar un cron.
- Cargas esporádicas o impredecibles.
- Glue code: pequeñas integraciones entre servicios.
Cuándo no conviene
- Workloads largos: casi todas tienen límite de tiempo (15 min en Lambda) que no se puede mover.
- Cold starts críticos: el primer request después de inactividad puede tardar varios segundos.
- Conexiones persistentes (WebSockets de larga duración, sesiones stateful en memoria).
- Costo a escala: con muchas invocaciones por segundo, un container o VPS resulta más barato y predecible.
VPS — Virtual Private Server
Un VPS es una máquina virtual con recursos asignados (CPU, RAM, disco, red) que corre dentro de un servidor físico compartido con otros clientes. Desde el punto de vista del usuario es indistinguible de un servidor dedicado, pero por debajo el hardware se reparte mediante virtualización. Es el primer escalón "real" del cómputo en la nube y la forma más común de empezar a desplegar aplicaciones cuando ya no alcanza con un hosting compartido.
A diferencia de un servicio gestionado tipo PaaS, el VPS te entrega un sistema operativo "crudo": vos instalás lo que necesites (base de datos, nginx, runtime de tu lenguaje) y vos lo mantenés actualizado.
Productos por nube
Cuándo conviene
- Hospedar aplicaciones web con tráfico moderado y predecible.
- Entornos de prueba o desarrollo aislados, fáciles de destruir y recrear.
- Servicios que corren 24/7 (bots, APIs, scrapers, workers).
- Cuando necesitás control total del sistema operativo o paquetes del sistema.
Cuándo no conviene
- Cargas con picos muy variables: una función serverless responde mejor.
- Si no tenés interés en operar (parchar, actualizar, monitorear), un PaaS te ahorra dolor.
- Para sitios estáticos: un CDN o un bucket de objetos es más barato y rápido.
Data
Cache
Servicios de almacenamiento en memoria de alta velocidad para guardar temporalmente datos consultados frecuentemente. Reducen latencia de respuesta y descargan la base de datos primaria. El patrón típico es "buscar en cache → si no está, consultar la base, guardar en cache, devolver". La política de expiración (TTL, LRU) determina cuánto vive cada entrada.
Productos por nube
Cuándo conviene
- Aplicaciones con alto ratio de lecturas sobre los mismos datos.
- Sesiones de usuario y datos de autenticación (consulta rápida en cada request).
- Resultados costosos de calcular: rankings, agregaciones, respuestas de IA.
- Rate-limiting y contadores distribuidos.
Cuándo no conviene
- Datos que cambian con cada request: el hit rate va a cero y el cache es overhead puro.
- Cuando necesitás consistencia estricta y no podés tolerar lecturas levemente desactualizadas.
- Datasets chicos que ya están en memoria del proceso o cerca de la DB local.
- Cuando agregás una capa más sin medir: la invalidación es famosa por ser una de las cosas difíciles.
Bases de datos gestionadas
Bases de datos como servicio: el proveedor se encarga de instalación, backups, parches, alta disponibilidad y escalado. El cliente sólo crea la base, define el esquema y consume. La división típica es entre relacionales (SQL, fuerte consistencia, joins) y NoSQL (clave-valor, documental, columnar, grafos), según el patrón de acceso esperado.
Productos por nube
Cuándo conviene
- Cuando no querés operar tu propia base (parches, backups, failover).
- Para aprovechar features como réplicas automáticas, point-in-time recovery, escalado vertical sin downtime.
- Cuando importa la consistencia y los costos operativos pesan más que los costos por GB.
Cuándo no conviene
- Cargas muy predecibles a gran escala donde una base operada por vos sale notablemente más barata.
- Necesitás versiones específicas, extensiones o configs que el servicio gestionado no permite (PostGIS exótico, parches custom).
- Casos con latencia ultra-baja en la misma máquina: el hop de red al servicio gestionado puede ser inaceptable.
Colas de mensajes
Servicios que permiten que distintos componentes se comuniquen de forma asíncrona: un productor pone mensajes en una cola, uno o varios consumidores los procesan a su ritmo. Desacopla en el tiempo (el productor no espera) y permite manejar picos de carga sin que se pierdan requests. Hay variantes según el patrón: cola simple (un consumidor), pub/sub (varios consumidores reciben el mismo mensaje) y streaming (cola con retención larga y replay).
Productos por nube
Cuándo conviene
- Tareas que no necesitan respuesta inmediata (envío de mails, generación de PDFs, procesamiento batch).
- Suavizar picos de carga: el consumidor procesa a su ritmo aunque entren miles de mensajes por segundo.
- Integrar sistemas que evolucionan a velocidades distintas.
Cuándo no conviene
- Operaciones que sí o sí necesitan respuesta sincrónica al usuario.
- Sistemas chicos donde una llamada HTTP directa alcanza: agregar cola es over-engineering.
- Cuando el orden estricto importa de punta a punta: la mayoría son at-least-once y reentregan o reordenan.
Object Storage
Almacenamiento de archivos (objetos) accesibles por HTTP, pensado para escalar a petabytes con costo bajísimo por GB. A diferencia de un filesystem no hay un árbol real de carpetas —solo un "bucket" con claves planas— y a diferencia de una base de datos no hay queries: cada objeto se lee o escribe entero por su key. Es la base para backups, assets estáticos, data lakes y cualquier cosa que sea "muchos archivos, leídos relativamente poco".
Productos por nube
Cuándo conviene
- Assets estáticos: imágenes, videos, PDFs, JS bundles servidos vía CDN.
- Backups y snapshots de bases de datos o sistemas.
- Uploads de usuarios (avatares, documentos, archivos adjuntos).
- Data lakes y archivos analíticos sobre los que después corre Spark, BigQuery, Athena.
- Cuando necesitás "muchos GB baratos" más que "queries rápidas".
Cuándo no conviene
- Datos relacionales o que requieren queries complejas: para eso hay base de datos.
- Acceso aleatorio de baja latencia dentro de un archivo: el costo por request y la latencia suman.
- Archivos chiquitos y muy frecuentes: el costo por operación puede dominar al costo de almacenamiento.
- Cuando necesitás semántica POSIX (locks, permisos finos, append): un filesystem en red (EFS, Filestore) encaja mejor.
Scraping y extracción de datos
Herramientas y servicios para recolectar datos desde sitios web que no exponen API: navegación headless, parsing de HTML/JSON, lectura de PDFs, rotación de proxies y resolución de CAPTCHAs. El espectro va desde un script propio con una librería ligera hasta plataformas gestionadas que se ocupan de la infraestructura "alrededor" del scraping. Es la fuente de datos típica cuando la información que necesitás vive en la web pero su dueño no la expone como feed.
Por tipo de herramienta
Cuándo conviene
- El sitio no tiene API pública y esos datos son críticos para tu producto.
- Monitoreo de precios, stocks o cambios en sitios de la competencia.
- Armar datasets de entrenamiento, indexación o búsqueda a partir de la web.
- Alimentar un agente IA con contenido web actualizado en cada ejecución.
Cuándo no conviene
- Existe API oficial o feed estructurado: siempre es más rápido, robusto y barato.
- El sitio prohíbe scraping en sus términos, o el caso de uso pisa cuestiones legales (datos personales, reventa).
- Volumen tan alto que necesitás infra de proxies y solver de CAPTCHAs: probablemente conviene comprar el dataset.
- Cuando el sitio cambia el HTML cada dos semanas: el costo de mantenimiento del scraper supera el valor.
Operations
CI/CD
Pipelines automáticos que se disparan al hacer push: corren tests, buildean artefactos (imágenes Docker, paquetes, builds estáticos) y despliegan. CI (Continuous Integration) es la parte de "verificar que el cambio no rompe nada"; CD (Continuous Delivery / Deployment) es la parte de "subirlo a un ambiente". Es la pieza que une el código con la infraestructura cloud: sin CI/CD prolijo, todo lo demás se vuelve frágil.
Hospedado por el git provider
Standalone
CI/CD implícito (push-to-deploy)
Cuándo conviene
- Cualquier proyecto con más de una persona: evita el clásico "anda en mi máquina".
- Releases frecuentes donde no querés que un humano repita 30 pasos manuales cada vez.
- Cuando tenés tests automáticos que querés ejecutar en cada commit.
- Despliegues a múltiples ambientes (dev → staging → prod) con promoción controlada.
- Auditoría: cada release queda registrada con quién, cuándo y qué cambió.
Cuándo no conviene
- Scripts personales o prototipos descartables: el setup pesa más que el beneficio.
- Cuando el pipeline se vuelve más complejo y frágil que el código que valida (señal de over-engineering).
Diagram as Code
Lenguajes textuales para describir diagramas (flujos, secuencia, arquitectura, ER, gantt, máquinas de estado) que se renderizan automáticamente a SVG o PNG. La gracia es que el diagrama vive en el repo: cambia junto al código, se versiona, se revisa en pull requests y se regenera en CI. Reemplaza al patrón clásico de "subir un PNG a Confluence y nunca más actualizarlo".
Herramientas
Cuándo conviene
- Diagramas que tienen que evolucionar con el código (arquitectura, flujos de la API, máquinas de estado).
- READMEs y docs técnicas: GitHub renderiza Mermaid embebido directamente en Markdown.
- Pipelines que generan documentación automática a partir de schemas, OpenAPI o Terraform.
- Cualquier diagrama que vaya a ser revisado o modificado por más de una persona.
Cuándo no conviene
- Diagramas muy visuales o artísticos para presentaciones: una herramienta WYSIWYG es más rápida.
- Layout pixel-perfect: estos lenguajes optimizan claridad, no estética fina.
- Cuando el equipo no programa: pedirle a un PM que aprenda Mermaid suele no funcionar.
Observabilidad
Conjunto de prácticas y servicios para entender qué está pasando dentro de un sistema en producción a partir de su comportamiento externo. Tres pilares clásicos: logs (qué pasó), métricas (cuánto y cuándo) y traces (cómo se conectaron las operaciones a través de múltiples servicios). Los servicios gestionados centralizan estos datos y los hacen consultables, alertables y visualizables.
Productos por nube
Cuándo conviene
- Sistemas distribuidos con múltiples servicios (microservicios, serverless).
- Diagnóstico de problemas que no se reproducen localmente.
- Alertas tempranas sobre anomalías de latencia, errores o uso de recursos.
Cuándo no conviene
- Apps muy chicas o prototipos donde un log a stdout y un dashboard básico alcanzan.
- Cuando el costo por GB ingestado o por host monitoreado se vuelve dominante respecto del valor operativo.
- Si nadie mira las métricas ni atiende las alertas: termina siendo ruido caro que se ignora.
Services
Servicios de Autenticación
Sistemas gestionados que se encargan de registro, login, recuperación de contraseña, MFA, integraciones con proveedores externos (Google, GitHub, Apple) y emisión de tokens. Encapsulan toda la complejidad de manejar credenciales y sesiones, exponiendo SDKs o APIs simples para integrar al frontend o backend. Implementar esto desde cero es un agujero de seguridad esperando suceder; usar un servicio gestionado es casi siempre la opción correcta.
Productos por nube
Cuándo conviene
- Cualquier aplicación que necesite gestionar usuarios y sesiones.
- Cuando se requiere MFA, login social u OIDC sin escribir todo el flujo.
- Para cumplir compliance (SOC2, GDPR) sin implementarlo internamente.
Cuándo no conviene
- Lock-in fuerte: salirse de Auth0/Cognito suele ser reescribir, no migrar.
- A escala, el costo por MAU se vuelve dominante y conviene evaluar alternativas open-source autohospedadas (Keycloak, Authentik).
- Cuando necesitás control total del flow criptográfico o estás en un sector con regulación específica que el proveedor no cubre.
BaaS — Backend as a Service
Plataformas que integran en un único SDK las piezas de servidor más comunes: autenticación, base de datos (típicamente con sync en tiempo real), almacenamiento de archivos, funciones, hosting de frontend, notificaciones push y, a veces, analytics y crash reporting. El cliente (web, iOS, Android) habla directo con los servicios; del lado del producto, vos solo modelás dominio y UI. Es el extremo "comodidad" del espectro IaaS/PaaS para casos donde no querés armar cada pieza por separado.
Plataformas
Caso de uso: Firebase
La plataforma BaaS más establecida. Integra Authentication (login social, MFA, OTP), Cloud Firestore (DB documental con sync en tiempo real), Realtime Database (clave-valor sincronizado), Cloud Storage (objetos), Cloud Functions (serverless), Hosting (estático con CDN), Cloud Messaging (push), Crashlytics, Analytics, Remote Config y App Check. El caso típico es una app móvil donde la sincronía en tiempo real y el time-to-market importan más que la portabilidad. Alternativas más recientes —Supabase (sobre PostgreSQL), Convex (con queries reactivas), PocketBase (un solo binario)— resuelven el mismo problema con tradeoffs distintos.
Cuándo conviene
- MVPs y prototipos donde necesitás auth + DB + storage andando en un día.
- Apps móviles con sincronía en tiempo real (chats, dashboards colaborativos, multijugador casual).
- Equipos sin perfil de backend dedicado: el SDK habla directo desde el cliente.
- Cuando querés delegar push, analytics y crash reporting al mismo proveedor.
Cuándo no conviene
- Lock-in fuerte: salir de Firestore o Convex suele ser reescribir, no migrar. Si pensás multi-nube o portabilidad, descartalo.
- Pricing impredecible a escala: reads/writes y GB egress se acumulan rápido. Modelá costos antes.
- Queries relacionales complejas (JOINs, transactions multi-entidad): NoSQL limita los patrones. Supabase mitiga esto usando Postgres por abajo.
- Workloads pesados que pegan a los límites de las funciones del proveedor (cold starts, timeouts, memoria).
Low Code / No Code
Plataformas que permiten armar productos digitales —apps web, apps móviles, automatizaciones, dashboards internos— con interfaces visuales en lugar de escribir código. Llevan al extremo la idea de SaaS: el proveedor se ocupa de hosting, base de datos, autenticación, despliegues y escalado, y vos solo modelás el dominio y la UI. Son el punto más cómodo (y menos flexible) del espectro "control vs comodidad".
Por tipo de producto
Cuándo conviene
- Prototipos y MVPs para validar una idea sin invertir semanas de desarrollo.
- Herramientas internas (CRMs simples, dashboards, formularios) que no justifican un equipo dev dedicado.
- Automatizaciones entre SaaS ya existentes (Slack ↔ Sheets ↔ correo).
- Equipos no-técnicos que necesitan iterar rápido sobre su propia herramienta.
Cuándo no conviene
- Productos con lógica de negocio compleja o requisitos de performance estrictos.
- Casos donde el lock-in del proveedor es un riesgo: migrar fuera suele ser reescribir de cero.
- Volúmenes altos: el pricing por usuario / registro / ejecución se vuelve caro rápido.
Email transaccional
Servicios para enviar emails de aplicación —confirmaciones de signup, recuperación de password, OTPs por mail, notificaciones de eventos, recibos de pago— sin tener que operar tu propio servidor SMTP ni pelearte con la entregabilidad. Manejan reputación de IP, autenticación (SPF, DKIM, DMARC), bounces, complaints y dashboards. Es distinto del email marketing (newsletters, campañas masivas), que tiene su propia lógica de listas, segmentación y compliance — aunque varios proveedores cubren los dos casos.
Proveedores
Cuándo conviene
- Cualquier producto con signup/login: bienvenida, verificación, reset de password.
- OTPs por mail cuando WhatsApp/SMS es overkill o el usuario no tiene celular accesible.
- Notificaciones de eventos (mensaje nuevo, comentario, cambio de estado, alerta).
- Recibos, facturas o resúmenes periódicos del producto.
Cuándo no conviene
- Volúmenes muy bajos y casuales: tu propio SMTP de Gmail/Workspace alcanza al principio.
- Cuando lo que necesitás son campañas, segmentación o automations de marketing: usá una herramienta dedicada (Mailchimp, ConvertKit, Brevo).
- Cuando la urgencia importa más que el costo: WhatsApp/SMS tienen tasa de apertura mucho más alta.
- Audiencias muy jóvenes que no chequean email: la notificación in-app o push rinden más.
Mensajería con usuarios (WhatsApp, Telegram, SMS)
APIs y plataformas para enviar y recibir mensajes en los canales que la gente ya usa: WhatsApp, Telegram, SMS, Messenger. Sirven tanto para notificaciones unidireccionales (turnos, OTPs, alertas de envío) como para conversaciones bidireccionales (bots de soporte, agendamiento, e-commerce). El alta de WhatsApp Business requiere aprobación del proveedor y de Meta; Telegram y SMS son más directos pero tienen audiencia y costos distintos según país.
Por canal y proveedor
Cuándo conviene
- OTPs y verificación de identidad por SMS o WhatsApp.
- Notificaciones transaccionales urgentes que el usuario espera ver pronto (turnos, envíos, alertas).
- Bots conversacionales para soporte, agenda o e-commerce sobre WhatsApp o Telegram.
- Audiencias que usan poco el email pero sí WhatsApp todos los días (típico en Latam).
Cuándo no conviene
- Comunicación de bajo valor / alto volumen: el costo por mensaje suma y el usuario lo siente intrusivo.
- Marketing masivo sin opt-in claro: Meta y los carriers banean rápido, y la reputación de tu número se quema.
- Cuando un email transaccional alcanza: es 10–50× más barato y más fácil de operar.
- Productos que no necesitan urgencia: una notificación in-app suele rendir igual.
Pagos online
Servicios SaaS que cobran dinero en nombre de tu producto: integran tarjetas, wallets y bancos, manejan el cumplimiento PCI-DSS, los chargebacks y la disputa de fraude. Te ahorran armar pasarelas propias y certificarte para guardar datos de tarjeta. La elección suele dividirse entre opciones globales (cobertura amplia, pricing predecible, integración estándar) y opciones locales de Latam (mejor para tarjetas regionales y métodos como Rapipago, Pix o transferencias inmediatas).
Globales
Latinoamérica
Cuándo conviene
- Cualquier producto que cobre online: one-time, suscripciones, marketplace, donaciones.
- Cuando necesitás compliance PCI-DSS sin construirlo vos.
- Para cobros locales en Latam donde Stripe no opera o tiene comisiones altas: MercadoPago, dLocal.
- Cuando querés delegar la disputa de fraude y los chargebacks al proveedor.
Cuándo no conviene
- Volúmenes muy altos con márgenes finos: las fees (2.9% + USD 0.30 típicas) se comen el margen y conviene negociar tarifas directas con el adquirente.
- Productos puramente offline o transferencias bancarias locales sin componente digital.
- Cuando la regulación local exige integración directa con un banco específico (salud, educación pública).
CDN / Edge
Red de servidores distribuidos por todo el mundo que cachean contenido (archivos estáticos, respuestas HTTP, hasta funciones serverless) y lo sirven desde el nodo más cercano al usuario. Reduce latencia, descarga al origen y suele incluir defensa contra DDoS y WAF. La línea entre "CDN" y "edge computing" se está borrando: hoy varios proveedores permiten correr código en el borde, no solo cachear bytes.
Productos por nube
Cuándo conviene
- Sitios o apps con usuarios distribuidos geográficamente.
- Assets estáticos pesados (imágenes, videos, JS bundles) que se piden muchas veces.
- Absorber picos de tráfico sin escalar el origen.
- Capa de defensa DDoS / WAF / bot mitigation (Cloudflare, Akamai vienen con eso).
- Personalización ligera por geo (idioma, redirects, headers) sin pegar contra el origen.
Cuándo no conviene
- Contenido 100% dinámico y personalizado por usuario sin posibilidad de cachear.
- Servicios internos sin tráfico público (un CDN no aporta).
- Volúmenes bajos donde el ahorro no compensa la complejidad de invalidación de cache.
Bibliografía
Lecturas recomendadas que cubren transversalmente los temas del curso. Ordenadas por orden de aparición temática, de lo más conceptual a lo más técnico-operativo.
NIST · 2011 · lectura ~15 min
La definición canónica de "computación en la nube" que usamos durante toda la materia. Corto, claro y vigente. Base teórica de la Unidad 1.
Ir al recursoPrentice Hall · 2013 · referencia académica
Libro de cabecera para cursos universitarios de cloud. Fundamentos, arquitectura y patrones con enfoque proveedor-agnóstico.
AWS · documentación viva por pilares
Buenas prácticas en 6 pilares (operación, seguridad, confiabilidad, eficiencia, costo, sustentabilidad). Aunque está hecho para AWS, los principios son universales.
Ir al recursoMelvin Conway · 1968 · lectura ~30 min
Artículo original donde Conway enuncia su ley. Breve, claro y vigente medio siglo después. Base de la Unidad 3.
Ir al recursoJohn Gall · 1975 · libro corto y satírico
Libro de cabecera de la Ley de Gall. Teoría de sistemas con humor seco; obligatorio para entender por qué fallan los sistemas complejos.
Eric Brewer · 2012 · lectura ~20 min
Brewer revisita su propia conjetura 12 años después y matiza los malentendidos comunes ("CAP no significa elegir 2 de 3 de forma binaria"). Lectura obligatoria para hablar de CAP en serio.
Ir al recurso17 firmantes · Snowbird · 2001
Texto fundacional, cabe en una página y vale releerlo una vez por año. Incluye los cuatro valores y los doce principios.
Ir al recurso2018 · estudio basado en datos de miles de empresas
Investigación empírica sobre las prácticas que separan a los equipos de alto rendimiento. Define las métricas DORA (deploy frequency, lead time, change failure rate, MTTR).
Adam Wiggins · lectura ~30 min
Las 12 reglas que toda aplicación lista para contenerizar debería respetar (config por env vars, procesos sin estado, logs a stdout). Clásico breve y prácticamente obligatorio.
Ir al recursoO'Reilly · 2017 · referencia moderna
El libro de referencia contemporáneo sobre sistemas distribuidos. Cubre con profundidad replicación, particionamiento, consistencia (incluido CAP y PACELC), procesamiento batch y stream. Complementa a Erl con un enfoque más operativo y actualizado.
Meta AI · 2020 · ~20 páginas
El paper que dio nombre a RAG y formalizó la combinación de retrieval + generación, base de la sección de RAG en la Unidad 5. Útil para entender de dónde viene la técnica antes de mirar implementaciones modernas.
Ir al recursoAnthropic · 2022 · ~30 páginas
Describe la técnica propia de Anthropic para alinear modelos sin etiquetado humano masivo. Útil para entender en qué se diferencia Claude del resto a nivel de método de entrenamiento (referenciado en la Unidad 5).
Ir al recursoAnthropic · 2024 en adelante · documentación viva
Spec oficial del protocolo estándar para exponer tools a LLMs (Unidad 6). Incluye guías para escribir un server MCP propio y catálogo de clientes y servers compatibles.
Ir al recursoPara el challenge final
Guías de referencia para escribir los dos documentos que pide la entrega final del curso (PRD y ADR).
Atlassian · lectura ~20 min
Guía práctica de Atlassian para escribir un Product Requirements Document: qué secciones incluir, cómo plantear el problema, cómo definir alcance y criterios de éxito. Es la referencia que vas a usar para el PRD del challenge.
Ir al recursoAWS · lectura ~30 min
Guía de AWS sobre cómo capturar y mantener decisiones arquitectónicas usando ADRs. Cubre estructura típica de un ADR (contexto, decisión, consecuencias), cuándo escribir uno y cómo integrarlo al ciclo de vida del proyecto. Referencia para el ADR del challenge.
Ir al recursoTrabajo Final
En este challenge final vas a llevar a la práctica los conceptos del curso diseñando un prototipo de producto que combine varios servicios cloud, y documentando tanto qué problema resuelve como qué decisiones arquitectónicas tomaste para resolverlo.
Tres URLs: PRD, ADR y prototipo funcional desplegado.
- PRD — qué producto querés construir y para quién. Google Doc, Notion, Confluence, lo que prefieras, con permiso de lectura público.
- ADR — qué stack cloud elegiste y por qué. Mismo formato libre; idealmente con un diagrama de la arquitectura.
- Prototipo — link a la app desplegada y andando, no a un repositorio.
PRD — Product Requirements Document
Documento corto (1 a 3 páginas) que define qué querés construir y para quién, antes de pensar en cómo. Debe cubrir como mínimo: problema que resolvés, usuario objetivo, qué hace y qué no hace el prototipo (alcance), criterios de éxito mínimos para considerarlo terminado. El formato es libre — lo que importa es la claridad. La pestaña Bibliografía tiene la guía canónica de Atlassian sobre PRDs.
Si nunca escribiste un PRD, copiá estos cinco bloques en un Google Doc y completalos. Es el piso aceptable para el challenge.
1. Problema
Un párrafo. Qué duele hoy y a quién. Evitá "no existe X": el problema es la necesidad, no la ausencia de tu producto.
2. Usuario objetivo
Persona concreta, no "todos". Nombre, contexto, restricción que tiene hoy. Ejemplo: "Médica con consultorio particular en CABA, atiende ~40 pacientes por semana, hoy gestiona turnos a mano por WhatsApp".
3. Lo que SÍ hace el prototipo
3 a 5 bullets. Cada bullet es una capacidad observable. Ejemplo: "El paciente puede pedir un turno conversando en lenguaje natural", "El sistema confirma horario y guarda la reserva".
4. Lo que NO hace (alcance descartado)
Lo que cualquiera podría asumir que está y no está. Ejemplo: "No cobra el turno, no maneja varias profesionales, no integra con calendario externo". Esta sección es la que más previene scope creep.
5. Criterio de éxito
Una métrica o escenario observable que diga "esto terminó". Ejemplo: "Un usuario tester puede sacar, confirmar y recibir recordatorio de un turno completo sin intervención manual".
ADR — Architecture Decision Record
Documento que registra las decisiones arquitectónicas importantes del prototipo: para cada elección de stack (base de datos, auth, cómputo, integraciones), por qué la elegiste, qué alternativas evaluaste y qué tradeoffs aceptás. El objetivo es que en 6 meses (o cuando otra persona lo abra) se entienda por qué el sistema es como es y no de otra manera. Para diagramar la arquitectura podés usar cualquiera de las herramientas del recurso Diagrams (Mermaid es la más simple). La pestaña Bibliografía tiene la prescriptive guidance de AWS sobre ADRs.
Cada decisión importante del stack tiene una entrada con estos cinco campos. Para este challenge alcanzan 3 a 5 entradas — una por cada pieza que justifica una elección consciente. Recordá: una decisión es interesante cuando había al menos una alternativa razonable.
Título
Corto y específico. Ejemplo: "ADR-002 · Usar Supabase Postgres para persistencia".
Estado
Una palabra: propuesto, aceptado, superado por ADR-N. Para el challenge típicamente es "aceptado".
Contexto
Qué problema resolvés con esta elección. Restricciones que te condicionan (presupuesto cero, latencia esperada, audiencia argentina, etc.).
Decisión
Qué elegiste y por qué esta. Mencioná las alternativas que evaluaste (al menos una) y por qué quedaron descartadas.
Consecuencias
Qué tradeoff aceptás. Qué te facilita la decisión, qué te complica, en qué escenario futuro podría dejar de servirte. Esta sección honesta es la que distingue un ADR útil de un brochure.
Prototipo
Aplicación mínima que demuestre la integración de algunos recursos cloud del catálogo (pestaña Recursos). Esperable que use varios servicios distintos combinados de manera coherente: no es una demo de cuántos servicios podés conectar, sino una solución al problema definido en el PRD. La interfaz puede ser mínima (un chat web simple, un formulario, un panel, un bot de mensajería) — el foco está en mostrar la integración del stack y que funcione end-to-end.
El prototipo tiene que estar accesible desde la fecha de entrega y durante al menos las dos semanas siguientes (el período en que la cátedra lo va a evaluar). Si usás un servicio que "duerme" por inactividad (Render free, Fly.io free, etc.), aclaralo en el ADR y dejá un disclaimer en la app: "puede tardar 30s en despertar la primera vez".
Modalidad y entregas intermedias
- Modalidad. Trabajo en parejas (idealmente) o individual. Grupos de 3 solo con aval del docente. La idea de la pareja es replicar la dinámica real de un equipo chico discutiendo decisiones arquitectónicas — escribir un ADR solo es menos ejercicio.
- Hito 1 — PRD + ADR (semana N-3). Entregás los dos documentos para feedback antes de empezar a construir. La cátedra devuelve comentarios en una semana. Este hito no se califica, pero es obligatorio: sin él no se acepta el hito 2.
- Hito 2 — Prototipo desplegado (semana N). URL funcionando, junto con la versión final del PRD y ADR (que pudieron haber cambiado tras el feedback). Acá se califica todo el conjunto.
Cómo se evalúa
Rúbrica orientativa
PRD — 30%
- Problema bien definido.
- Usuario objetivo concreto.
- Alcance y no-alcance explícitos.
- Criterio de éxito observable.
ADR — 30%
- 3 a 5 decisiones documentadas.
- Cada una con alternativa evaluada.
- Tradeoffs reconocidos honestamente.
- Diagrama de arquitectura incluido.
Prototipo — 40%
- Funciona end-to-end.
- Integra ≥ 3 servicios distintos del catálogo.
- Resuelve el escenario del PRD.
- Accesible durante el período de evaluación.
Condiciones de viabilidad
Esta sección es importante: el challenge está pensado para que no tengas que gastar plata. Si tu propuesta no entra en los tiers gratuitos, replanteala antes de empezar a construir. Estas son las restricciones reales que conviene anticipar.
Para la infraestructura base preferimos DigitalOcean: tiene precios predecibles, panel simple, todos los servicios que necesita un prototipo y los USD 200 de crédito del GitHub Student Pack alcanzan de sobra para los dos meses del challenge. Pedí el pack antes de arrancar.
- Cómputo (VPS): DigitalOcean Droplet (desde USD 4/mes, Ubuntu listo en 1 minuto).
- Serverless / event-driven: DigitalOcean Functions (free tier de 90.000 GB-segundos por mes).
- Base de datos: DigitalOcean Managed Databases (Postgres, MySQL o Redis administrados; backups automáticos).
- Object storage: DigitalOcean Spaces (compatible con S3, CDN incluido, USD 5/mes por 250 GB).
Cuando algo no entra en DO o querés cero tarjeta:
- Auth: Supabase Auth, Clerk free, Auth0 free.
- Mailing transaccional: Resend free (3.000 mails/mes), Postmark trial.
- IA / LLMs: Google AI Studio (Gemini gratis sin tarjeta), Groq, OpenRouter con créditos iniciales.
- Mensajería: Telegram Bot API (100% gratis y abierto).
- WhatsApp Business API: aprobación de Meta y verificación de Business pueden tardar semanas, y cobra por conversación. Para el prototipo usá Telegram (mismo patrón conversacional, gratis e instantáneo).
- Pasarela de pagos en producción: requieren KYC, cuenta bancaria habilitada y CUIT. Para el prototipo usá Mercado Pago en modo sandbox: tiene SDK en todos los lenguajes, simula pagos sin plata real y es el estándar de hecho para audiencia argentina. No agregues otras pasarelas (Stripe, dLocal, etc.) — sumarían fricción sin valor para el alcance del challenge.
- AWS / GCP / Azure: piden tarjeta internacional incluso para el free tier y tienen una curva de aprendizaje empinada. Para este challenge preferimos DigitalOcean (ver bloque verde) y, si necesitás algo que DO no tenga, los servicios sin tarjeta listados arriba.
- Dominio propio: no hace falta. Usá el subdominio que te da el proveedor (
tu-app.vercel.app,tu-app.fly.dev).
Ejemplos de prototipos posibles
No tenés que elegir uno de estos: son ideas de stacks distintos para inspirarte. Podés combinar piezas de varios o proponer algo propio. Si tomás un ejemplo como base, cambiá al menos una pieza del stack y justificá la sustitución en el ADR — copiarlo tal cual no suma.
-
Chat sommelier de vinos
Interfaz web mínima de chat donde el usuario describe lo que le gusta (uvas, ocasión, comida) y un agente IA recomienda vinos consultando una base de conocimiento con descripciones reales.
Stack sugerido: DigitalOcean Managed Postgres con pgvector para el RAG, DigitalOcean Functions para los endpoints, Gemini en AI Studio para el LLM (gratis sin tarjeta).
AI integration RAG Authentication Serverless -
Ecommerce con WordPress
Tienda online sobre WordPress + WooCommerce. El foco está en el stack cloud subyacente: hosting, pasarela de pago, CDN para los assets, mails transaccionales de confirmación.
WordPress sobre un DigitalOcean Droplet (one-click app), Mercado Pago en modo sandbox para el checkout y assets en DigitalOcean Spaces con su CDN incluido.
VPS Payments CDN Mailing -
Web scraper de eventos culturales
Job programado que extrae eventos (recitales, ferias, museos) de varios sitios y los muestra unificados en una página pública actualizada a diario. Sin login.
Stack sugerido: DigitalOcean Functions con scheduled trigger diario para el scraper, Managed Postgres para los eventos, sitio público también en Functions. Elegí sitios cuyos términos permitan scraping (o un dataset semilla / RSS público) y documentá la elección en el ADR.
Scraping Serverless Database CDN -
Bot de mensajería para sacar turnos
El paciente saca turno conversando por mensajería con un bot. Una IA interpreta los mensajes en lenguaje natural, una base guarda los turnos y se manda un recordatorio por mail el día previo.
Para el prototipo usá Telegram Bot API (gratis e inmediato). WhatsApp Business sumalo en una segunda iteración si querés.
Messaging AI integration Database Mailing Serverless -
Seguimiento de envíos con fotos
App liviana para un emprendimiento de logística: el repartidor sube una foto al entregar el paquete, el cliente recibe notificación y puede ver el historial autenticándose.
Stack sugerido: DigitalOcean Spaces para las fotos, Managed Postgres para envíos e historial, Functions para los endpoints, Telegram Bot API para las notificaciones, Supabase Auth (o equivalente) para login.
BaaS Object storage Messaging Authentication -
Plataforma mínima de cursos con video
Sitio donde el docente sube clases en video y el alumno paga para acceder. Videos servidos desde object storage detrás de un CDN, mails al inscribirse y al completar el curso.
Stack sugerido: DigitalOcean Spaces para los videos (CDN incluido), Managed Postgres para inscripciones, Functions para los endpoints, Mercado Pago sandbox para el checkout, Resend para los mails. Usá videos cortos / samples para no consumir todo el storage.
BaaS Payments Object storage CDN Mailing -
Asistente IA conectado vía MCP avanzado
Agente IA (Claude Desktop o uno propio) con tools custom expuestas vía MCP que consulta y actúa sobre datos del docente: lee entregas de alumnos, consulta base de calificaciones, redacta devoluciones.
Los datos pueden ser mock (no hace falta integrar con sistemas reales de la institución); lo evaluado es la arquitectura del agente y la exposición de tools por MCP.
AI integration MCP Database Authentication
Antes de empezar a diseñar el stack, ojeá las dos guías de la pestaña Bibliografía (Atlassian sobre PRD y AWS sobre ADR): te ahorran reinventar el formato y te muestran ejemplos reales. Y cuando tengas el ADR, no dejes el diagrama afuera — un diagrama bien hecho con Mermaid o D2 vale por varios párrafos de prosa.