¿Qué es PaaS? Platform as a Service frente a IaaS, SaaS y Kubernetes
En resumen
- Platform as a Service (PaaS) es un modelo cloud en el que despliegas código fuente o una imagen de contenedor y el proveedor se encarga de los servidores, los sistemas operativos, las builds, los despliegues y el escalado.
- Tú sigues siendo responsable de tu código, la configuración, los secretos y los datos, y de elegir tamaños y regiones.
- Frente al IaaS gestionas menos; frente al SaaS sigues publicando tu propio software, y a diferencia de Kubernetes, muchas plataformas PaaS hacen la build de tu código fuente por ti, y la mayoría también despliega una imagen de contenedor que aportes tú.
- Para evitar el lock-in, elige un PaaS que construya imágenes de contenedor estándar a partir de un Dockerfile o de Cloud Native Buildpacks y que ejecute motores de bases de datos estándar.
Platform as a Service (PaaS) es un modelo cloud en el que entregas tu aplicación, como código fuente o como imagen de contenedor, y el proveedor la ejecuta. La plataforma hace la build, la despliega, la escala y opera los servidores, los sistemas operativos y las redes que hay debajo. Tú sigues a cargo de la aplicación, de su configuración y de sus datos.
La definición más citada viene del National Institute of Standards and Technology de EE. UU. (NIST SP 800-145). Con un PaaS despliegas tus propias aplicaciones en la infraestructura del proveedor, pero no gestionas ni controlas la infraestructura cloud subyacente, incluidos la red, los servidores, los sistemas operativos y el almacenamiento (en el original: “not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage”). Lo que sí controlas son las aplicaciones desplegadas y, en algunos casos, ajustes del entorno de hosting.
De qué se encarga un PaaS
La lista exacta varía según el proveedor, pero un PaaS completo cubre casi todo esto:
- Builds: convierte un repositorio Git en una imagen ejecutable, ya sea con buildpacks que detectan tu lenguaje o a partir de un Dockerfile que incluyes en el repositorio.
- Despliegues: publica las nuevas releases, a menudo con cada push a una rama, y guarda un historial de qué se ejecutó y cuándo.
- Escalado: para tener más réplicas o un tamaño mayor basta con cambiar un ajuste, sin instalar otro servidor.
- TLS y dominios: cada app recibe un hostname, y la plataforma emite y renueva los certificados de tus propios dominios.
- Logs y métricas: logs de ejecución y gráficas de CPU y memoria sin mantener tu propio stack de logging.
- Bases de datos gestionadas: PostgreSQL, MySQL o una caché junto a la app, con réplicas y backups como opciones.
- Servidores y sistemas operativos: aplicar parches a los hosts, sustituir el hardware que falla y mantener la red en funcionamiento.
Qué sigue siendo cosa tuya
Un PaaS te quita el trabajo de infraestructura, no la responsabilidad sobre tu producto. Sigues siendo responsable de:
- Tu código y sus dependencias, incluida la actualización de librerías cuando se publica una vulnerabilidad.
- Configuración y secretos: variables de entorno, claves de API y quién de tu equipo puede verlas.
- Tus datos: el esquema, las migraciones, activar los backups y probar una restauración.
- Dimensionamiento y coste: cuántas réplicas ejecutas y con qué plan, y la factura que resulta.
- Seguridad de la aplicación: autenticación, validación de entradas y acceso al dashboard.
- Ubicación: en qué región se ejecutan tu app y sus datos.
PaaS vs IaaS vs SaaS vs serverless vs Kubernetes
Los modelos se diferencian en lo que delegas y lo que sigues gestionando. Una comparación aproximada:
| Modelo | Lo que aportas | Lo que gestiona el proveedor | Lo que sigues gestionando tú | Uso típico |
|---|---|---|---|---|
| IaaS | Máquinas virtuales, discos, redes | Hardware, virtualización, centros de datos | Sistema operativo, runtime, despliegues, escalado, parches | Control total, software heredado o especial |
| PaaS | Código fuente o una imagen de contenedor | Servidores, SO, builds, despliegues, enrutamiento, a menudo bases de datos | Aplicación, configuración, datos | Apps web, APIs, workers |
| SaaS | Nada que desplegar | Toda la aplicación | Ajustes, usuarios y tus datos en la app | Software de gestión estándar |
| Serverless (FaaS) | Funciones | Ejecución por evento o petición, escalado según la demanda | Código de las funciones, arranques en frío, límites de tiempo y tamaño | Cargas basadas en eventos y con picos |
| Kubernetes | Imágenes de contenedor y manifiestos | Como servicio gestionado: el control plane | Nodos, deployments, ingress, configuración del escalado, CI/CD, logging | Grandes infraestructuras con un equipo de plataforma |
El IaaS te da máquinas virtuales y deja el resto en tus manos. El NIST lo describe como el aprovisionamiento de “processing, storage, networks, and other fundamental computing resources” (capacidad de procesamiento, almacenamiento, redes y otros recursos informáticos fundamentales) sobre los que ejecutas cualquier software, incluido el sistema operativo.
El SaaS está en el otro extremo: usas la aplicación terminada del proveedor en el navegador o a través de una API y no despliegas nada.
El serverless, en el sentido de funciones, ejecuta tu código como pequeñas funciones que se disparan con eventos o peticiones HTTP, y factura según la demanda real. El whitepaper sobre serverless de la CNCF señala que la mayoría de los runtimes limitan el tamaño o el tiempo de ejecución de cada función, y que el arranque tras periodos de inactividad puede ser lento. Un PaaS, en cambio, suele ejecutar tu app como un proceso siempre activo.
Kubernetes es un orquestador de contenedores, y su propia documentación dice que Kubernetes “is not a traditional, all-inclusive PaaS”, es decir, que no es un PaaS tradicional que lo incluye todo. No despliega código fuente, no hace la build de tu aplicación y no incluye bases de datos como servicios integrados. Ofrece piezas para construir plataformas. Lee PaaS vs Kubernetes para una comparación más detallada.
Cuándo encaja un PaaS
- Desarrollas apps web, APIs o background workers en un lenguaje habitual.
- En tu equipo nadie se dedica a gestionar servidores o clústeres, y prefieres no contratar a alguien para eso todavía.
- Quieres una nueva versión en producción a los pocos minutos de un merge, con los logs y las métricas ya funcionando.
- Necesitas las bases de datos, el almacenamiento y la app en un mismo sitio, con una sola factura.
Cuándo no encaja
- Necesitas un kernel personalizado, hardware especial o control a bajo nivel de la red. Te encaja mejor una máquina virtual o un servidor bare metal.
- Tu software espera acceso root, un sistema init completo o paquetes instalados con scripts del mantenedor. Un Dockerfile puede cubrir parte de esto; hay software que solo funciona bien en una VM.
- Ejecutas cargas de trabajo grandes y estables y ya tienes un equipo de plataforma. En ese punto, gestionar tu propia infraestructura puede compensar.
- Tu código se ejecuta unos segundos al día en respuesta a eventos. Una plataforma de funciones puede salir más barata.
- Tienes un requisito legal o de cumplimiento normativo que las regiones o las certificaciones del proveedor no pueden cubrir.
Cómo evaluar un PaaS
Regiones y ubicación de los datos
Comprueba dónde se ejecutan realmente la app, la base de datos, los backups y los logs, y si puedes elegirlo por servicio. Comprueba también dónde están el plano de control del proveedor y los datos de la cuenta, y en qué país tiene su sede la empresa. Si tratas datos personales de personas en la UE, ambas cuestiones importan.
Servicios incluidos
Fíjate en qué viene con la plataforma y qué necesita un tercero: bases de datos, object storage, email, CDN, logs y métricas, entornos de preview. Cada complemento de otro proveedor es un contrato más, una factura más y un subencargado del tratamiento más.
Modelo de precios
Las plataformas facturan por instancia, por segundo de ejecución, por petición o por usuario (seat), y algunas miden además el ancho de banda, los minutos de build o el volumen de logs. Calcula un mes con tus números reales, incluidos la base de datos y un segundo entorno para staging.
Portabilidad
El lock-in suele esconderse en la build y en la configuración, no en el código. Elige preferiblemente una plataforma que construya imágenes de contenedor estándar a partir de un Dockerfile o de Cloud Native Buildpacks: el lifecycle de buildpacks exporta una imagen OCI, el mismo formato que ejecutan otras plataformas de contenedores. Mantén la configuración en variables de entorno y usa motores de bases de datos estándar de los que puedas hacer un dump para restaurarlo en otro sitio. Así, irte será una migración, no una reescritura.
Dónde encaja Nodion
Nodion es un PaaS operado por Nodion GmbH desde Stuttgart (Alemania). Despliegas desde Git con un Dockerfile o con los propios Cloud Native Buildpacks de Nodion, o desde una imagen ya construida. Cada app tiene procesos, logs, métricas y dominios. Las apps de Git pueden tener entornos de preview, y Postgres, MySQL, Valkey y ClickHouse gestionados se vinculan desde la pestaña Environment de la app. Eliges la región por servicio, por ejemplo EU Central en Fráncfort. Consulta Applications para ver los detalles.
Preguntas frecuentes
¿Qué es PaaS en pocas palabras?
Un PaaS es una plataforma que ejecuta tu aplicación por ti. Subes código o una imagen de contenedor, y el proveedor hace la build, la despliega y la escala en servidores que gestiona él, así que nunca instalas ni parcheas un sistema operativo.
¿Qué diferencia hay entre IaaS, PaaS y SaaS?
Con IaaS alquilas máquinas virtuales y gestionas todo desde el sistema operativo hacia arriba. Con PaaS solo gestionas tu aplicación y sus datos. Con SaaS usas una aplicación terminada y no despliegas nada.
¿Es Kubernetes un PaaS?
No. La documentación de Kubernetes dice que no es un PaaS tradicional que lo incluya todo: no hace la build ni el despliegue de código fuente y no tiene bases de datos integradas. Ofrece piezas sobre las que se pueden construir plataformas.
¿Cómo evito el vendor lock-in con un PaaS?
Elige una plataforma que construya imágenes de contenedor estándar a partir de un Dockerfile o de Cloud Native Buildpacks, mantén la configuración en variables de entorno y usa motores de bases de datos estándar como PostgreSQL o MySQL, de los que puedas hacer un dump para restaurarlo en otro sitio.