Skip to content

Clase 9 — Tema 6: Patrones de Arquitectura Cloud

Resumen Ejecutivo

Inicio del Tema 6: diseño de aplicaciones en la nube y patrones específicos para cloud. El profesor repasa los conceptos fundamentales del cloud computing (virtualización, modelos de servicio, modelos de despliegue) antes de entrar en los patrones arquitectónicos. Se incide en el error típico de examen: confundir modelos de servicio con modelos de despliegue. Se traza la evolución histórica internet → cluster → grid → cloud y se explica cómo la virtualización es el habilitador tecnológico clave del cloud. ⚠️ EXAMEN: definición de cloud, virtualización, diferencia modelos de servicio vs despliegue, evolución histórica de las infraestructuras de cómputo distribuido.

Conceptos Clave

  • Cloud computing: Paradigma de desarrollo y despliegue de aplicaciones basado en la disponibilidad de servicios (hardware y software) accesibles a través de internet y consumidos como servicio. ⚠️ EXAMEN
  • Virtualización: Tecnología que enmascara las características específicas del hardware, presentando máquinas virtuales con las características deseadas. Permite homogenizar recursos heterogéneos. Es el habilitador clave del cloud. ⚠️ EXAMEN
  • Modelos de servicio (IaaS, PaaS, SaaS): Distintos niveles de abstracción del servicio cloud. ⚠️ EXAMEN — no confundir con modelos de despliegue.
  • Modelos de despliegue (público, privado, híbrido, comunitario): Dónde y cómo se despliega la infraestructura cloud. ⚠️ EXAMEN — no confundir con modelos de servicio.
  • Cluster: Conjunto de máquinas homogéneas combinadas para aumentar capacidad de cómputo.
  • Grid: Unión de múltiples clusters, potencialmente heterogéneos, con problemas de interoperabilidad.
  • Pago por uso: Característica económica clave del cloud — se paga solo por los recursos consumidos.
  • Requisitos no funcionales: Los que más fuertemente determinan la arquitectura (rendimiento, disponibilidad, escalabilidad, seguridad). ⚠️ EXAMEN

Desarrollo del Temario

1. Por qué son necesarios patrones específicos para cloud

Las aplicaciones cloud tienen características y demandas que las diferencian de las aplicaciones tradicionales (escritorio, cliente-servidor clásico):

  • Están sujetas a fuertes requisitos no funcionales: escalabilidad elástica, alta disponibilidad, tolerancia a fallos, latencia mínima.
  • Se despliegan sobre infraestructura que no controlan directamente (terceros).
  • Deben aprovechar la elasticidad del cloud (escalar hacia arriba y hacia abajo dinámicamente).

Los requisitos no funcionales son los que más fuertemente determinan la arquitectura. ⚠️ EXAMEN

2. Qué es el cloud (y qué no es)

Cloud ≠ Internet. Internet es la red de comunicaciones; cloud es un paradigma que usa internet pero va más allá.

Definición: Paradigma que permite consumir hardware y software como servicio, accesible a través de internet, con pago por uso y aprovisionamiento dinámico de recursos.

Analogía del profesor: es como pasar de la industria de fabricación de producto (compras una máquina física) a la industria de servicios (alquilas capacidad de cómputo — renting/leasing).

3. Evolución histórica hacia el cloud

Internet
   │  (conexión entre máquinas)
   ▼
Cluster
   │  Máquinas homogéneas combinadas. Sistemas operativos comunes
   │  facilitan comunicación.
   ▼
Grid
   │  Unión de clusters. Amplía ámbito geográfico.
   │  Problema: interoperabilidad entre clusters heterogéneos.
   ▼
Cloud
      Virtualización homogeniza todo. El cliente ve recursos uniformes
      con independencia del hardware real subyacente.
Infraestructura Homogeneidad Escala Problema principal
Cluster Alta (mismas máquinas) Datacenter Limitado geográficamente
Grid Baja (máquinas distintas) Multi-datacenter Interoperabilidad
Cloud Alta (virtualización) Global Gestión, costes, seguridad

4. La virtualización como habilitador del cloud

La virtualización permite:

  1. Partir una máquina física en múltiples máquinas virtuales (VMs), cada una con su propio SO, memoria y CPU configurables.
  2. Homogenizar recursos heterogéneos: el cliente ve siempre una interfaz uniforme sin importar el hardware real.
  3. Exprimir recursos: múltiples VMs en un único servidor físico → mayor utilización.
  4. Elasticidad: crear y destruir VMs dinámicamente según la demanda.

El cliente no ve ni le importa dónde corre su VM físicamente. Solo configura las características que necesita (Ubuntu 22.04, 4 vCPUs, 8GB RAM) y el proveedor lo satisface. ⚠️ EXAMEN

5. Modelos de servicio vs modelos de despliegue

Error típico de examen: confundir ambos. ⚠️ EXAMEN

Modelos de servicio (QUÉ se ofrece)

Modelo Qué gestiona el proveedor Qué gestiona el cliente Ejemplo
IaaS (Infrastructure as a Service) Hardware, red, virtualización SO, middleware, apps, datos AWS EC2, Azure VMs
PaaS (Platform as a Service) IaaS + SO + middleware + runtime Apps y datos Heroku, Google App Engine
SaaS (Software as a Service) Todo Solo configuración y uso Gmail, Salesforce, Office 365

Modelos de despliegue (DÓNDE se despliega)

Modelo Descripción
Público Infraestructura del proveedor, compartida entre clientes
Privado Infraestructura dedicada a una organización (on-premise o en datacenter propio)
Híbrido Combinación de público y privado
Comunitario Compartido entre organizaciones con intereses comunes

6. Patrones de arquitectura cloud (introducción)

Las aplicaciones cloud deben diseñarse con patrones que aprovechen las características del cloud y mitiguen sus limitaciones. Los principales (a desarrollar en el resto del tema):

  • Patrón de reintentos: Las llamadas a servicios remotos pueden fallar transitoriamente. Reintentar con backoff exponencial.
  • Circuit Breaker: Detectar fallos repetidos y "abrir el circuito" para evitar cascadas de fallos.
  • CQRS (Command Query Responsibility Segregation): Separar las operaciones de lectura de las de escritura.
  • Event Sourcing: Almacenar el historial de eventos en lugar del estado actual.
  • Sidecar / Ambassador: Añadir funcionalidades a un servicio sin modificarlo (proxy, logging, auth).
  • Throttling / Rate Limiting: Controlar la tasa de peticiones para proteger recursos compartidos.

El vídeo 7 de 11 de la plataforma cubre bastante del tema. La clase complementa con las ideas más relevantes para el examen.

Preguntas de Autoevaluación

  1. ¿Por qué las aplicaciones cloud necesitan patrones específicos que no se usan en aplicaciones de escritorio?
  2. Define cloud computing. ¿Qué lo diferencia de simplemente tener servicios accesibles por internet?
  3. ¿Qué es la virtualización y por qué es el habilitador tecnológico clave del cloud?
  4. Traza la evolución histórica: internet → cluster → grid → cloud. ¿Qué problema resuelve cada paso?
  5. ¿Qué diferencia un cluster de un grid? ¿Por qué el grid tiene problemas de interoperabilidad?
  6. ⚠️ EXAMEN: Distingue modelos de servicio de modelos de despliegue. Da dos ejemplos de cada tipo.
  7. ¿Qué gestiona el proveedor y qué gestiona el cliente en IaaS, PaaS y SaaS respectivamente?
  8. ¿Qué modelo de despliegue usaría una empresa que necesita mantener datos sensibles en sus propios servidores pero quiere escalar en picos con recursos externos?
  9. ¿Por qué los requisitos no funcionales determinan la arquitectura más que los funcionales?
  10. Nombra tres patrones de arquitectura específicos de cloud y explica brevemente el problema que resuelve cada uno.