NubeHay ya varias empresas que estás ofreciendo el concepto de Plataforma como Servicio (Platform as a Service - PaaS), pero hay muy poco acuerdo sobre qué es PaaS, y cómo se comparan las distintas ofertas de PaaS entre si. Incluso la página PaaS de la Wikipedia comienza advirtiendo que la definición está llena de palabras de moda y que faltan ejemplos concretos.

Sabiendo que estamos tratando con un concepto todavía en crecimiento, en este artículo vamos a ver una breve introducción a PaaS, sus beneficios y alternativas actuales.

Definición de PaaS

Las soluciones PaaS son plataformas de software para las cuales la herramienta de desarrollo en si misma está alojada en la nube y se accede a través de un navegador web. Con PaaS, los desarroladores pueden construir aplicaciones web sin tener que instalar ninguna herramienta adicional en sus computadoras, y luego despliegan estas aplicaciones sin necesidad de tener ningún concocimiento administrativo especializado.

McKinsey & Company, en su informe "La guerra de las plataformas emergentes" del 2008, definió a PaaS como "IDEs basados en la nube que no sólo incorporan a lenguajes de programación tradicionales, sino también que incluyen herramientas para el desarrollo con mashups".

¿Por qué PaaS es diferente?

La alternativa a PaaS es desarrollar aplicaciones web usando herramientas de desarrollo de escritorio, como Eclipse o Microsoft Access, y luego desplegar manualmente estas aplicaciones a un proveedor de nube, como Amazon EC2.

Las plataformas PaaS también tienen diferencias funcionales respecto a las plataformas de desarrollo tradicionales. Estas diferencias incluyen:

  • Herramientas de desarrollo múltiples inquilinos: las herramientas de desarrollo tradicional son para un único usuario - un estudio basado en la nube debe soportar múltiples usuarios, cada uno de los cuales tiene múltiples proyectos activos.
  • Arquitectura de despliegue de múltiples inquilinos: la escalabilidad suele no ser una preocupación durante el esfuerzo inicial de desarrollo y se deja para que lo gestionen los administradores de sistemas cuando se despliega el proyecto. En PaaS, la escalabilidad de la aplicación y de sus capas de datos debe ser intrínseca a la solución (por ejemplo, el balanceo de carga y la disponibilidad tienene que ser elementos básicos de la plataforma de desarrollo).
  • Gestión integrada: las soluciones de desarrollo tradicionales no suelen preocuparse con el monitoreo del entorno de ejecución, pero en PaaS, se tiene que soportar la habilidad de monitore desde la misma plataforma de desarrollo.
  • Facturación integrada: las ofertas PaaS requieren mecanismos de facturación basados en la utilización, que son únicos para el mundo PaaS.

Falso PaaS - 4 formas de determinar si realmente es PaaS

Una solución PaaS tiene que, como mínimo, incluir los siguientes elementos:

  1. Un entorno de desarrollo basado en un navegador - si tenés que instalar algo en tu computadora para desarrollar aplicaciones, entonces no es PaaS.
  2. Despliegue transparente hacia el entorno de ejecución - idealmente, el desarrollador debería poder desplegar su aplicación PaaS con un solo click. Si hay que hablar con alguna persona para instalar a la aplicación, entonces no es PaaS.
  3. Herramientas de monitoreo y gestión - aunque las soluciones basadas en nubes son muy convenientes en cuanto a costos, puede resultar complicado gestionarlas y escalarlas sin buenas herramientas. Si hay que construir o agregar una herramienta de monitoreo propia para poder escalar la aplicación, entonces no es PaaS.
  4. Facturación basada en el uso - lo que hizo que PaaS fuera popular es que evita pagar por adelantado. Si no podés pagar con la tarjeta de crédito basándote en el uso que hacés de la plataforma, entonces no es PaaS.

Beneficios de PaaS

Los beneficios de PaaS están en la cada vez mayor cantidad de personas que van a poder desarrollar, mantener y desplegar aplicaciones web. Resumidamente, PaaS permite democratizar el desarrollo de aplicaciones web, de la misma forma en que Microsoft Access democratizó el desarrollo de aplicaciones cliente/servidor.

En la actualidad, construir aplicaciones web requiere desarrolladores expertos con 3 habilidades especializadas:

  1. Desarrollo del backend en el servidor (por ejemplo, Java / J2EE)
  2. Desarrollo del frontend en el cliente (por ejemplo, JavaScript / Dojo)
  3. Administración de sitios web

PaaS ofrece el potencial para que desarrolladores generales puedan construir aplicaciones web sin tener un expertise especializado. Esto le abre la puerta a toda una geneción de desarrolladores MS Access, Lotus Notes y PowerBuilder para que pueda comenzar a construir aplicaciones web sin una curva de aprendizaje enorme.

Recursos PaaS

Hoy en día ya hay varios ofrecimientos PaaS:

  • AppEngine de Google, basado en Python y Django, y ahora también en Java.
  • Force.com de SalesForce, basado en la infraestructura SalesForce SaaS y en el lenguaje Apex.
  • Bungee Connect, un entorno de desarrollo visual basado en Java.
  • LongJump, basado en Java / Eclipse.
  • WaveMaker, un estudio de desarrollo visual basado en Java y alojado en Amazon EC2.
Basado en What is platform as a service (SaaS)?

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw