
[29/07/2022] PaaS (platform-as-a-service) es una forma de computación en la nube que permite a los desarrolladores de software crear, ejecutar y gestionar aplicaciones de software fácilmente, sin preocuparse de la infraestructura subyacente. La llegada de la computación en la nube abrió la puerta a los proveedores para agrupar los bloques de construcción clave necesarios para crear una aplicación, con el objetivo de simplificar -o incluso automatizar- muchas de las tareas más complicadas y repetitivas necesarias para desplegar el código.
PaaS logra todo eso, pero con pocas excepciones, se ha convertido en un servicio disponible en nubes IaaS (infraestructura como servicio) en lugar de una oferta de nube independiente, y a menudo incluye la orquestación de contenedores Kubernetes. La computación sin servidor, un tipo de plataforma en la nube que facilita aún más el desarrollo de ciertos tipos de aplicaciones, se considera una evolución de PaaS.
[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]
La simplificación inherente a la PaaS permite un desarrollo de software más rápido y sencillo, reduciendo el alcance del trabajo de un desarrollador al ocultar los recursos subyacentes de computación, almacenamiento, base de datos, sistema operativo y red necesarios para ejecutar la aplicación. Las ofertas comerciales de PaaS cobran a los clientes por el uso de estos recursos, y a veces por la propia plataforma, ya sea por asiento o por el número de aplicaciones alojadas.
La mayoría de las herramientas PaaS ofrecen plantillas o paquetes de construcción destinados a facilitar el proceso de construcción de ciertos tipos de aplicaciones comunes, abstrayendo a los desarrolladores de un conjunto de decisiones o procesos comunes. Por ello, las opciones de PaaS se suelen calificar de "opinables", ya que proporcionan a los desarrolladores un método claramente definido, aunque algo restringido, para construir y ejecutar aplicaciones.
Definición de PaaS
Al igual que otros servicios en la nube, como la infraestructura como servicio (IaaS) y el software como servicio (SaaS), normalmente se accede a una PaaS a través de Internet, pero también puede desplegarse en las instalaciones o en un modo híbrido.
La infraestructura subyacente sobre la que se ejecutan finalmente las aplicaciones está totalmente gestionada por el proveedor de servicios. En muchos casos, el cliente puede decidir dónde se aloja la aplicación, y se le da la posibilidad de elegir el rendimiento o la seguridad de ese entorno, a menudo con un costo adicional.
Los bloques de construcción de un típico PaaS incluyen:
- Infraestructura gestionada: El proveedor gestiona los servidores, el almacenamiento, los centros de datos y los recursos de red necesarios para ejecutar su aplicación.
- Herramientas de diseño, pruebas y desarrollo: Un entorno de desarrollo integrado reúne las herramientas necesarias para crear el software, incluyendo un editor de código fuente, un compilador y un depurador. Algunos proveedores también incluyen herramientas de colaboración que permiten a los desarrolladores compartir y contribuir al trabajo de los demás.
- Middleware: Un PaaS suele incluir las herramientas necesarias para integrar varios sistemas operativos y aplicaciones de usuario.
- Sistemas operativos y bases de datos: Un PaaS proporciona los sistemas operativos para que las aplicaciones se ejecuten, así como una variedad de opciones de bases de datos gestionadas.
PaaS vs. IaaS
Para muchos, el debate PaaS vs. IaaS ha sido resuelto por el mercado, con la gran mayoría de los desarrolladores contentos de ensamblar aplicaciones ellos mismos usando bloques de construcción IaaS. No obstante, los desarrolladores que buscan la ruta más rápida al mercado pueden seguir recurriendo a PaaS en busca de velocidad y simplicidad.
Como con cualquier decisión en el desarrollo de software, esto tiene sus contrapartidas y depende de lo que una organización esté buscando lograr. Por ejemplo, una organización que ha invertido mucho en una solución PaaS concreta puede querer evitar la interrupción que supone pasar a un enfoque de desarrollo más moderno, si ese PaaS sigue permitiendo a los desarrolladores producir aplicaciones adecuadas con rapidez. En otros casos, las limitadas opciones de los desarrolladores inherentes a PaaS pueden ser realmente beneficiosas en sectores muy regulados.
Ventajas y desventajas de PaaS
Una de las mayores ventajas de utilizar un PaaS es la capacidad de crear y desplegar aplicaciones rápidamente, sin el pesado trabajo que supone configurar y mantener el entorno en el que se ejecutarán. Esto, en teoría, da a los desarrolladores la capacidad de desplegar más rápido y a intervalos más frecuentes, así como de centrarse en la lógica empresarial diferenciadora, en lugar de resolver problemas como el aprovisionamiento de la infraestructura.
Dado que el mantenimiento de una PaaS corre a cargo de un proveedor de servicios, con acuerdos de nivel de servicio y otras garantías, los desarrolladores no tienen que preocuparse de tareas tediosas y repetitivas como la aplicación de parches y las actualizaciones, y pueden confiar en que su entorno estará altamente disponible y será estable (aunque también se producen cortes).
Un PaaS también puede ser una práctica puerta de entrada a nuevas técnicas de desarrollo y lenguajes de programación nativos de la nube, sin la inversión inicial de construir un nuevo entorno.
La mayoría de los riesgos asociados al uso de una PaaS se reducen a la pérdida de control que los desarrolladores profesionales deben aceptar al entregar sus aplicaciones a un proveedor de plataformas externo. Estos riesgos incluyen la preocupación por la seguridad de la información y la residencia de los datos, el temor a la dependencia del proveedor, el rápido aumento de los costos de alojamiento y las interrupciones no programadas.
Con una PaaS, los desarrolladores tienen un margen limitado para cambiar su entorno de desarrollo, lo que puede hacer que algunos miembros del equipo se sientan encerrados. La imposibilidad de realizar cambios en el entorno, o de conseguir que el proveedor de servicios despliegue sus peticiones de características, puede llevar a las empresas a dejar de lado su PaaS y a construir su propia plataforma interna para desarrolladores.
Ejemplos de PaaS
Entre los principales proveedores de PaaS están AWS (Amazon Web Services), Google Cloud Platform, Microsoft Azure, Red Hat OpenShift y Heroku de Salesforce.
Los tres grandes proveedores de la nube -AWS, Microsoft Azure y Google Cloud- han realizado importantes inversiones para atraer a los desarrolladores a sus servicios durante la última década, reuniendo sus propios componentes de la nube en un PaaS de opinión para facilitar su adopción.
Algunas de las principales opciones de PaaS que aún se encuentran en el mercado son las siguientes:
- AWS Elastic Beanstalk: Una de las primeras opciones de PaaS, AWS Elastic Beanstalk permite una rápida implementación y gestión de aplicaciones en la nube sin tener que aprender sobre la infraestructura subyacente. Elastic Beanstalk gestiona automáticamente los detalles del aprovisionamiento de capacidad, el equilibrio de carga, el escalado y la supervisión del estado de las aplicaciones.
- Cloud Foundry: Cloud Foundry es un PaaS de código abierto regido por la Cloud Foundry Foundation (CFF). Fue desarrollado originalmente por VMware y luego transferido a Pivotal Software, una empresa conjunta de EMC, VMware y General Electric, antes de ser transferido a la CFF en el 2015. Cloud Foundry está diseñado para construir y ejecutar aplicaciones basadas en contenedores, utilizando Kubernetes para la orquestación.
- Google App Engine: Google App Engine fue otra de las primeras entradas de PaaS. Fue diseñado para apoyar el desarrollo y el alojamiento de aplicaciones web en los centros de datos gestionados por Google. Las aplicaciones se aíslan, se ejecutan y se escalan automáticamente en varios servidores.
- Microsoft Azure App Service: Microsoft Azure App Service es un PaaS totalmente gestionado que combina varios servicios de Azure en una única plataforma.
- Red Hat OpenShift: Red Hat OpenShift es una familia de ofertas de PaaS que pueden alojarse en la nube o desplegarse en las instalaciones, para crear y desplegar aplicaciones en contenedores. El producto estrella es OpenShift Container Platform, una PaaS local basada en Kubernetes para crear aplicaciones en contenedores sobre una base de Red Hat Enterprise Linux.
- Salesforce Heroku: Un PaaS temprano y muy querido, Heroku puede haber perdido su camino desde que fue adquirido por el gigante de SaaS Salesforce en el 2010, pero sigue siendo una opción popular para los desarrolladores. En la actualidad, Heroku forma parte de la plataforma más amplia de herramientas para desarrolladores de Salesforce, que admite una amplia gama de lenguajes y miles de desarrolladores que ejecutan aplicaciones en ella. En la práctica, el uso de Heroku implica construir sobre un tiempo de ejecución común desplegado en contenedores Linux virtualizados -o dynos, como los llama Heroku- repartidos en una red dyno de servidores AWS.
El auge de los PaaS sin servidor
Puede que no se asocien necesariamente con el término PaaS, pero las plataformas modernas de desarrollo de software como Vercel y Netlify han tenido un gran éxito en los últimos años, al ofrecer a los desarrolladores una experiencia elegante y una ruta sencilla para alojar sus aplicaciones.
En el fondo, estos proveedores prometen separar la tarea de desarrollo web front-end (utilizando marcos web populares como React) del trabajo de ejecutar realmente ese código en producción.
Al crear redes globales de borde sobre los principales proveedores de nube, estos proveedores ofrecen una ruta gestionada para desplegar aplicaciones web modernas, sin romper el flujo o tener que emplear un equipo de desarrollo que se preocupe de ejecutar las aplicaciones a escala.
Los principales proveedores de la nube también están presionando para ayudar a los clientes a llevar su código del contenedor a la producción más rápidamente abstrayendo las tareas operativas como el escalado, la aplicación de parches y la gestión de servidores a través de sus productos AWS Fargate, Azure Container Instances y Google Cloud Run.
Al mismo tiempo, las principales nubes también ofrecen sus propias opciones de computación sin servidor, como AWS Lambda, Google Cloud Functions y Microsoft Azure Functions. Básicamente, estas plataformas de tipo PaaS permiten a los desarrolladores tomar funciones de una biblioteca para construir los microservicios que componen las aplicaciones modernas, sin tener que considerar la infraestructura de servidor subyacente mientras codifican. Las aplicaciones sin servidor tienen la ventaja añadida de consumir cero ciclos de nube hasta que una petición del usuario las pone en marcha.
Kubernetes vs. PaaS
A pesar de su promesa, PaaS nunca se convirtió en una forma generalizada de crear aplicaciones de nivel empresarial, ya que los desarrolladores generalmente buscaban un mayor control y escalabilidad en sus propios términos. Esto nos llevó a la era de los contenedores de software y Kubernetes.
El problema con la herramienta de orquestación de contenedores Kubernetes es que se trata de una compleja tecnología de código abierto con una pronunciada curva de aprendizaje. Para los desarrolladores que superan su PaaS, y dan el paso a los contenedores orquestados por Kubernetes, la sobrecarga de la gestión de esa plataforma requiere un equipo especializado de ingenieros, renunciando a la simplicidad que un PaaS proporciona a los desarrolladores. Esta decisión puede merecer la pena a largo plazo, ya que Kubernetes ofrece una forma coherente de desplegar y ejecutar aplicaciones en prácticamente cualquier entorno, pero no debe tomarse a la ligera.
Hace tiempo que la idea de la gestión y la automatización de los contenedores ha sustituido a la PaaS, ya que los principales proveedores de plataformas, como Red Hat, VMware y los proveedores de nubes públicas, se han orientado a facilitar la adopción de contenedores y Kubernetes en los últimos años. Esto ha dado lugar a una plétora de opciones de Kubernetes gestionado, contenedores como servicio (CaaS), computación sin servidor y función como servicio (FaaS), todas ellas destinadas a aliviar la carga de la gestión de los clústeres de contenedores y a aplanar la curva de aprendizaje, sin dejar de ofrecer a los desarrolladores la flexibilidad y la portabilidad que exigen.
Nada de esto significa que PaaS esté muerto, necesariamente, pero PaaS está ciertamente evolucionando a medida que la industria cambia ampliamente hacia aplicaciones en contenedores orquestadas por Kubernetes. Siempre habrá un mercado para simplificar el desarrollo de software, pero la plataforma subyacente para hacerlo ha cambiado con los tiempos.
Basado en el artículo de Scott Carey (InfoWorld) y editado por CIO Perú