Saltar al contenido principal

4. Infraestructuras de despliegue y recursos en la nube

Para que una aplicación web pueda utilizarse desde otros equipos necesitamos desplegarla en una infraestructura accesible por red.

Esa infraestructura puede ser una máquina que administramos nosotros mismos o estar formada por recursos proporcionados por un proveedor.

Al elegir dónde desplegar una aplicación debemos valorar, entre otras cuestiones:

  • Los recursos que necesita.
  • El nivel de control que queremos tener.
  • Quién administrará el sistema.
  • Cómo puede crecer si aumenta el número de usuarios.
  • El coste y la disponibilidad necesarios.
Idea clave

Desplegar una aplicación significa preparar y poner en funcionamiento todo lo necesario para que pueda ejecutarse y ser utilizada en el entorno de destino.

4.1. Dónde podemos alojar una aplicación web​

No existe una única forma de publicar una aplicación web. Algunas alternativas habituales son:

AlternativaCaracterísticas principalesNivel de control
Servidor propioLa organización dispone y administra el hardware, el sistema operativo, la red y los servicios.Muy alto.
Hosting compartidoVarios clientes comparten un servidor gestionado por un proveedor. Normalmente ofrece un entorno previamente configurado.Bajo.
VPSMáquina virtual alojada en un proveedor que podemos administrar de forma similar a un servidor propio.Alto.
Servidor dedicadoMáquina física reservada para un único cliente o proyecto.Muy alto.
CloudRecursos que pueden aprovisionarse y modificarse bajo demanda.Variable según el servicio.

Un VPS resulta especialmente fácil de relacionar con nuestro entorno de trabajo: se parece a una máquina virtual Debian que, en lugar de ejecutarse en nuestro ordenador, se encuentra en la infraestructura de un proveedor.

Alternativas para alojar una aplicación web: servidor propio, hosting, VPS, servidor dedicado y nube
Infraestructura y tecnologías no son lo mismo

La infraestructura responde principalmente a:

¿dónde se ejecuta nuestra aplicación?

El stack tecnológico responde a:

¿qué tecnologías utilizamos para ejecutarla?

Por ejemplo, sobre un VPS podríamos instalar un sistema operativo, un servidor web, una base de datos y el entorno necesario para nuestra aplicación.

4.2. Recursos en la nube​

La computación en la nube (cloud computing) permite utilizar recursos informáticos proporcionados a través de la red y adaptarlos a las necesidades del servicio.

No significa simplemente disponer de un servidor remoto. Una infraestructura cloud se caracteriza por ofrecer recursos que pueden gestionarse con flexibilidad y, habitualmente, bajo demanda.

Entre sus características principales encontramos:

  • Autoservicio bajo demanda. Podemos crear o modificar recursos cuando los necesitamos.
  • Acceso mediante red. Los servicios se utilizan a través de mecanismos de red.
  • Recursos compartidos. La infraestructura física puede atender a múltiples clientes manteniendo separados sus recursos.
  • Elasticidad. Podemos aumentar o reducir capacidad.
  • Servicio medido. El consumo puede supervisarse y utilizarse para controlar el coste.

Recursos habituales​

En una plataforma cloud podemos encontrar, entre otros:

RecursoUtilidad
CómputoEjecutar máquinas virtuales o aplicaciones.
AlmacenamientoGuardar archivos y copias de seguridad.
RedesConectar recursos y controlar su acceso.
Bases de datos gestionadasUtilizar una base de datos sin administrar toda la infraestructura que la ejecuta.
Balanceadores de cargaDistribuir peticiones entre varias instancias.
MonitorizaciónObservar el estado y consumo de los recursos.
Principales recursos disponibles en una infraestructura en la nube

El uso de cloud puede aportar:

  • Aprovisionamiento rápido.
  • Posibilidad de ampliar o reducir recursos.
  • Acceso a servicios gestionados.
  • Menor necesidad de adquirir hardware propio.
  • Medición del consumo.

También debemos valorar:

  • El coste de los recursos utilizados.
  • La seguridad y los permisos.
  • La protección de los datos.
  • La dependencia de la conexión y de los servicios contratados.
  • La necesidad de monitorizar el consumo.
La nube no garantiza por sí sola alta disponibilidad

Utilizar un proveedor cloud no significa automáticamente que una aplicación nunca vaya a fallar.

La disponibilidad depende también de cómo diseñemos y configuremos la infraestructura.

4.3. IaaS, PaaS y SaaS​

Según la parte del entorno que administra el proveedor, podemos distinguir tres modelos habituales:

ModeloQué recibimosQué administramos principalmente
IaaSInfraestructura como máquinas virtuales, redes y almacenamiento.Sistema operativo, servicios y aplicación.
PaaSUna plataforma preparada para ejecutar aplicaciones.Principalmente la aplicación y sus datos.
SaaSUna aplicación ya desplegada y disponible como servicio.Su uso y configuración dentro de las opciones permitidas.

Para este módulo, IaaS es el modelo más fácil de relacionar con nuestra máquina Debian: seguimos administrando el sistema operativo y los servicios, aunque la máquina se ejecute en la infraestructura de un proveedor.

En PaaS administramos menos infraestructura y nos centramos más en desplegar la aplicación.

En SaaS normalmente somos usuarios de una aplicación que ya ha sido desplegada por el proveedor.

Comparación del nivel de gestión en IaaS, PaaS y SaaS

4.4. Escalabilidad​

El número de usuarios de una aplicación puede cambiar con el tiempo. Si aumenta la carga, puede ser necesario aumentar también los recursos disponibles.

La escalabilidad es la capacidad de un sistema para adaptarse a esos cambios.

Escalabilidad vertical​

Consiste en aumentar los recursos de una misma máquina:

  • Más CPU.
  • Más memoria RAM.
  • Almacenamiento más rápido o de mayor capacidad.

Podemos resumirlo como:

servidor → servidor más potente

Escalabilidad horizontal​

Consiste en utilizar varias máquinas o instancias para realizar una misma función:

1 servidor → varios servidores

Cuando varios servidores pueden atender las mismas peticiones, un balanceador de carga puede distribuir el trabajo entre ellos.

De forma simplificada:

clientes → balanceador → servidor 1 / servidor 2 / servidor 3

Comparación entre escalabilidad vertical y horizontal
Idea clave

Escalar verticalmente significa aumentar los recursos de una máquina.

Escalar horizontalmente significa aumentar el número de máquinas o instancias.

Elegir una alternativa​

No existe una infraestructura adecuada para todos los proyectos.

Antes de decidir dónde desplegar una aplicación podemos preguntarnos:

  1. ¿Qué nivel de control necesitamos?
  2. ¿Quién administrará el sistema operativo y los servicios?
  3. ¿Qué recursos necesita la aplicación?
  4. ¿Puede variar mucho el número de usuarios?
  5. ¿Qué disponibilidad necesitamos?
  6. ¿Qué coste podemos asumir?
Ejemplo

Durante el desarrollo podemos ejecutar una aplicación en nuestra máquina virtual local.

Para publicarla podríamos utilizar un VPS si queremos administrar nuestro propio sistema.

Si necesitamos crear o eliminar recursos con rapidez, una infraestructura cloud puede facilitar el crecimiento.

Si además queremos administrar menos infraestructura, podríamos utilizar una plataforma PaaS.

4.5. Para saber más​

Para saber más

Si quieres ampliar algunos de los conceptos de este apartado, puedes consultar:

Estos recursos son complementarios y no es necesario estudiarlos en profundidad para seguir la unidad.