Una de las barreras que nos encontramos a la hora de desarrollar producto digital es la preparación de la infraestructura donde nuestro producto va a estar alojado para ponerlo a disposición del público. No es para menos, ya que es una materia compleja que afecta directamente al coste, velocidad, seguridad y disponibilidad de nuestro producto.

En Reboot pensamos que la mínima infraestructura de un producto digital a día de hoy deber constar de 2 características básicas:

  • Despliegue automático desde un repositorio de código como GitHub.
  • Disponer de un entorno de pruebas y otro producción.

Dicho así podría parecer obvio, pero resulta sorprendente el número de proyectos que empiezan a día de hoy donde esto no se cumple. La razón principal es debido a que montar estos entornos es complejo -especialmente si lo hacemos desde cero- y consume un tiempo y recursos que en las fases iniciales no se dispone.

¿Podemos montar entornos seguros, fiables y escalables sin tener perfiles DevOps especializados en el equipo? Estamos de suerte, pues actualmente existen plataformas que nos facilitan la preparación de nuestra infraestructura para poder centrarnos en desarrollar e iterar nuestro producto y estas plataformas son lo que conocemos como PaaS

¿Qué es un PaaS (Platform As A Service)?

Un PaaS es un servicio o conjunto de servicios que ofrecen los proveedores de infraestructura como Amazon Web Services o Google Cloud, donde se nos proporciona una plataforma en la cual podremos desarrollar, desplegar y administrar las aplicaciones relacionadas con nuestro producto de forma fácil e intuitiva.

A diferencia de un IaaS o, como todos lo conocemos, un servidor en la nube, el PaaS facilita enormemente el despliegue, la seguridad y la administración de nuestra infraestructura, pudiendo llegar a desplegar un servidor desde 0 con tan solo un par de clicks sin salir de la interfaz web proporcionada por el proveedor.

La forma más descriptiva de verlo es como una capa adicional por encima de los servicios de infraestructura, que nos aporta un conjunto de herramientas y funcionalidades para facilitarnos el uso de estos.

Diferencia entre SaaS / PaaS / IaaS

Ventajas de un PaaS

Algunas de las ventajas que podemos obtener de utilizar un PaaS para nuestro producto son las siguientes:

  • Reducir el tiempo de programación. Una de las principales ventajas es reducir el tiempo de desarrollo de nuestro proyecto gracias a los componentes que ya proveen la mayoría de estas plataformas y que permite establecer flujos, pipelines, integración, seguridad, etc.
  • Sin necesidad de perfiles especializados. Otra de las ventajas es la capa de abstracción que proveen estos servicios para que cualquier desarrollador pueda poner en funcionamiento una infraestructura y entornos seguros, fiables y escalables sin necesidad de contratar a un DevOps.
  • Desarrollo multiplataforma con facilidad. La mayoría de proveedores ofrecen opciones de desarrollo multiplataforma, agilizando enormemente este tipo de procesos.
  • Precios asequibles y escalables. La mayoría de estas plataformas ofrecen precios de entrada muy asequibles (incluso gratuitos), ya sea en su modalidad de pago fijo como de pago por uso, y permite escalarlo según necesidades y crecimiento de nuestro proyecto.
  • Facilidad para gestionarlo en equipos remotos o distribuidos. Gracias a que se trata de entornos en la nube, utilizar este tipo de servicios es especialmente útil para equipos remotos y distribuidos, ya que les facilita el poder colaborar en proyectos sin preocuparse de otros aspectos. También facilita enormemente las cosas cuando tenemos que hacer el onboarding de un nuevo desarrollador a nuestro equipo.
  • Administrar el ciclo de vida de las aplicaciones con eficacia. Los PaaS proporcionan todas las herramientas necesarias para abarcar el ciclo de vida completa de las aplicaciones: compilación, pruebas, implementación, administración y actualización, dentro del mismo entorno integrado.

Mejores PaaS para utilizar en nuestro producto

En el mercado actual prácticamente todos los proveedores de servicios principales disponen de un PaaS. En este artículo vamos a mencionar solo los orientados a desplegar aplicaciones web o servicios y que nosotros hemos utilizado en algún momento.

Amazon Elastic Beanstalk

Es la solución ofrecida por AWS y una de las ventajas principales es que se integra con todo el ecosistema AWS, por lo tanto si ya tenemos experiencia y nos gusta el proveedor es una muy buena opción. Eso sí, para la gente que no ha utilizado nunca AWS o que está empezando en este mundillo, seguramente sea la opción más intimidante de todas las que vamos a ver.

Su precio se basa en el uso de la plataforma y esto al principio nos puede beneficiar pero a medida que vamos añadiendo recursos y carga tenemos que ir con cuidado para no llevarnos una sorpresa a final de mes.

Google App Engine

Esta es la solución ofrecida por Google, es bastante parecida a Beanstalk aunque algo más intuitiva de usar si no nos salimos de los entornos de ejecución estándar. Si necesitamos algo que se salga de estos entornos ya tenemos que empezar a realizar algunas configuraciones adicionales. A nivel de precios también funciona con pago por uso con un tier gratuito inicial, aunque esto nos obliga a tener que controlar muy bien nuestro consumo a medida que nuestro proyecto crece.

Heroku

Es seguramente la plataforma mas famosa para este tipo de servicios y sin duda nos ofrece una experiencia mucho más amigable que las dos anteriores. Si estáis empezando Heroku es una de las mejores opciones debido a su facilidad de uso y toda la comunidad que hay detrás. En cuanto a precios dispone de máquinas gratuitas y maquinas de pago con diferentes rangos de precios desde los 7 dólares. En cuanto a las máquinas de pago, a diferencia de las de Google y Amazon, nosotros establecemos un precio mensual en función de las características que necesitemos y esto es lo que se nos va a cobrar.

Vercel

Si lo que necesitáis es un servicio donde desplegar una landing o un sitio web, Vercel es uno de los mejores, muy sencillo de utilizar y una interfaz exquisita. A nivel de precios tiene un tier gratuito muy generoso y depués tenemos que subir al plan PRO que cuesta 20 dólares al mes por usuario. La principal desventaja respecto a las otras plataformas es que es algo más limitada ya que esta pensada para desplegar webs y microservicios.

Render

Render es uno de los nuevos players que ha aparecido en el ecosistema de PaaS en los últimos años. Al igual que Heroku y Vercel se integra muy fácilmente con el repositorio de código que tengamos para poder desplegar servidores, webs estáticas, bases de datos e incluso chron jobs. Además a nivel de interfaz y usabilidad también es una de las plataformas mas amigables con una documentación sencilla y eficaz. En cuanto al precio se trata de una tarifa mensual y los planes empiezan en 7 dólares para servidores y bases de datos pero con la posibilidad de tener webs estáticas de forma gratuita.

Digital Ocean App Platform

La solución ofrecida por el proveedor Digital Ocean es muy parecida a la experiencia que proporciona Heroku pero con un modelo de precios más escalonados. Eso sí, en este caso no disponemos de ningún despliegue gratuito a no ser que se trate de una web estática. Así que si queremos desplegar un servidor tendremos que pagar 5 dólares para el más básico. Además, con la misma cuenta tenemos acceso al resto de servicios que ofrece el proveedor, esta es una de la mejores formas para tener toda nuestra infraestructura en la misma plataforma a la vez que disfrutamos de una experiencia de uso sencilla e intuitiva.

Despliegue con Digital Ocean App Platform

Ahora que hemos visto qué es un PaaS y cuáles hay en el mercado, vamos a ver lo fácil que es desplegar una API con Digital Ocean App Platform.

Primero seleccionamos el repositorio en nuestra cuenta de Github o Gitlab con el código de la API que queremos desplegar, y seleccionamos la rama en la cual está alojado. Si seleccionamos la opción de autodeploy automáticamente cada vez que se realice un push a la rama main se ejecutará el despliegue de nuestro código. Sí, es tan fácil como seleccionar una checkbox.

Digital Ocean App Platform

Después podemos añadirle las variables de entorno que sean necesarias y modificar los comandos de inicialización y puertos.

Digital Ocean App Platform

En el caso que fuera necesario, podemos añadir una base de datos a la configuración con tan solo pulsar en Add a Database.

Digital Ocean App Platform

Finalmente, seleccionamos la región donde queremos que esté nuestro servidor y le damos un nombre.

Digital Ocean App Platform

Una vez tenemos todo configurado solo nos queda seleccionar el tipo de máquina que queremos y publicar nuestra API.

Digital Ocean App Platform

Una vez desplegada podremos administrarla desde una interfaz web donde podremos ver estadísticas de uso, hacer modificaciones o añadir más recursos.

Digital Ocean App Platform

Obviamente, se trata de un ejemplo muy sencillo pero nos ayuda a visualizar el potencial de estas plataformas. Puede que más adelante hagamos un tutorial completo de cómo crear un entorno de producción para nuestro producto en fases iniciales.

Conclusiones

Como hemos visto, a día de hoy tenemos servicios que nos pueden ayudar a ser más eficientes a la hora de desarrollar productos digitales y está en nuestra manos conocerlos y saber cuándo utilizarlos. Otro ejemplo de que no es necesario reinventar la rueda constantemente o construir todo desde cero para crear un gran producto.

Por eso los PaaS nos pueden ayudar mucho no solo en fases iniciales de nuestro producto, sino también en fases más avanzadas, para poder tener una infraestructura que funcione bien a nivel técnico y que sea productiva para el equipo de desarrollo que está trabajando en el producto.