Openshift de Red Hat: ¿Mejor que un VPS? (Review)


¿Qué es Openshift?


OpenShift es una plataforma como servicio (PaaS) que Red Hat provee para montar aplicaciones en una infraestructura operada por ellos. En resumen, se trata de una alternativa a los ya famosos Heroku o Google App Engine pero que además de correr de manera "Hosted" también puedes operar tu mismo en tu infraestructura si eso es lo que deseas (Como ocurre con OpenStack exceptuando el hecho de que éstos últimos no ofrecen una opción hospedada) ya que cuenta también con una versión enterprise e incluso una opensource (origin) que puedes probar directo en tu Fedora Linux (por solo dar un ejemplo) desde hace algunas releases... Cabe destacar que (contrario a las alternativas hosted mencionadas), Openshift es un ecosistema bastante libre que podríamos declarar como un híbrido entre lo que es la nube administrada y otras opciones como los VPS y/o los servidores dedicados.

En este review nos centraremos en la versión hosted de Openshift (mejor conocida como Openshift Online) ya que es lo más sencillo para iniciarse con Openshift y (al menos en mi opinión) ofrece lo mejor de 2 mundos: El VPS y la Nube Administrada.

Ventajas de Openshift Online

Openshift Online tiene un muy buen plan gratuito que te ofrece 3 "gears" (más adelante veremos qué es eso) conjuntando en total:

  • 3GB de storage total 
  • 1.5GB de RAM
  • Todas las horas de CPU necesarias (1-3 cores en parallel programming)
  • Toda la banda ancha que requieras

Digo que es "lo mejor de 2 mundos" porque cuenta con las características que nos encantan de las nubes administradas junto con aquellas que nos hacen sentir "en control" dentro de un VPS, algunas de las cuales podrían ser:


  • No tiene plazos forzosos (es pay-as-you-go)
  • No cobran por los snapshots
  • Las apps tienen un subdominio personalizado  y puedes usar tu TLD
  • Ofrece SSL en todos sus planes
  • Tiene acceso SSH a la consola de la aplicación
  • El código se porta y maneja mediante Git


Entre otras...

Lo mejor es que cosas como la integración del acceso SSH o Git se hacen en cuestión de segundos con 1 o 2 comandos, a diferencia de un VPS donde tendríamos que hacer un setup inicial completo que nos podría llevar varios minutos o incluso hasta unas horas... Al ser una nube administrada, en OpenShift Online no te tienes que preocupar por el sistema operativo, el rendimiento del CPU, la optimización del almacenamiento, la seguridad general del deployment u otras cosas similares. Red Hat se encarga de los servidores mientras tu solo te encargas de desarrollar y subir.

Pregunta: ¿Me conviene migrar?

Hasta aquí puede sonar bastante bueno (y lo es) pero ¿es un reemplazo para tu VPS? Depende. Según la aplicación/sitio puede resultar mejor pasarse a Openshift debido a que


  • A) No cobran por ancho de banda utilizado (transferencia) ni horas de CPU
  • B) Es una nube administrada
  • C) Las aplicaciones son auto-escalables por instancias (gears)


Lo que importa considerar es si tu aplicación necesita más CPU/RAM y ancho de banda que almacenamiento o más almacenamiento que cualquier otra cosa y actuar acorde a tus circunstancias porque... ¿Recuerdas los "gears"? veamos qué son:

Gears are secure containers for your code. Each gear is allocated CPU, memory, disk, and network bandwidth. You can use a single gear to create an entire web application complete with a private database instance. Use multiple gears to create multiple applications or configure your applications to automatically scale in response to web traffic.

So, los gears son containers con CPU, Memoria, Almacenamiento y Ancho de banda. 1 gear small (de los que vienen 3 por default en el plan gratuito) tiene:


  • CPU ilimitado (1 core, ajuste variable)
  • 512MB de RAM
  • 1GB de almacenamiento
  • Ancho de banda ilimitado


Cada aplicación que creas en Openshift Online te ocupa 1 gear de manera predeterminada. Puedes "aislarla" a ese gear, (lo que significará que siempre tendrá a la mano sólo los recursos de dicho gear) o bien, permitir que escale con el tráfico/uso, utilizando tantos gears como tengas disponibles o sólo tantos como tu quieras (haciendo que una sola use el total de recursos gratuitos o bien, los compartan entre todas las que tengas de manera conjunta o individual); Además, Openshift tiene un marketplace donde puedes adquirir interesantes "addons" para tu aplicación como pueden ser Statica, un servicio para dotar tus apps de una IP pública estática (como si fueran un VPS) o New Relic para monitoreo entre otras cosas, muchas de éstas completamente gratis o con precios y planes muy accesibles e integraciones "easy as pie". Cabe destacar que uno puede desarrollar sus propios addons para el marketplace también... Gracias a este ecosistema no hay manera de que otro hosted PaaS (heroku/app engine, etc.) te ofrezca mejores prestaciones gratuitas que Openshift Online (al menos como yo lo veo).

Pero, ¿y mi proveedor de VPS? bueno, difícilmente va a superar el total de recursos gratuitos en precio considerando cómo funcionan los gears (hablando del total de RAM, CPU y banda ancha que puedes utilizar en una o varias aplicaciones sin pagar o si quiera introducir una tarjeta de crédito); Sin embargo en el apartado de almacenamiento, si ocupas bastante, los 3GB totales del plan gratuito se te van a quedar cortos y el almacenamiento puede resultar caro ya que directamente sólo tienes de 2 sopas:


  • Activar el plan silver ($20 USD/mo) y recibir 18GB de almacenamiento por default
  • Pagar $1 USD/GB al mes por almacenamiento extra a partir del plan bronze (Gratuito)


Aunque también podrías delegar tu almacenamiento a un VPS, un proveedor de base de datos como servicio (DaaS) o bien, a algún storage como Google Cloud Storage o Amazon S3 si estás manejando archivos estáticos para pagar menos, pero a la larga tienes que decidir en base a tu deployment y caso de uso... He aquí un poco más de información sobre los Gears y tipos de planes de Openshift Online:



NOTA: Cabe destacar que cuentan con planes de apoyo para startups, instituciones educativas, non-profits y proyectos opensource.

¿Dónde está el truco?

Claro que no todo es color de rosa, y por ejemplo de usar Openshift Online, tendrás que adaptarte casi al 100% a las versiones que soportan de los lenguajes de programación, bases de datos y plataformas que manejan si quieres aprovechar las ventajas de la nube administrada (aunque si quieres, puedes usar la opción "custom" y probar suerte haciendo funcionar algún lenguaje/framework o versión no oficialmente soportados); Además, el soporte técnico en las opciones no pagadas es 100% comunitario. También es importante destacar que OpenShift Online sólo ofrece como locaciones Estados Unidos y Europa para tus aplicaciones. Por otro lado, he notado que al alocar los 3 gears gratuitos a una sola aplicación, éstos se van dividiendo por "cartucho" (los cartuchos son "piezas" de tu aplicación) So, aunque la aplicación a nivel general goza de toda la RAM según los gears que haya escalado, todos los cores de CPU, y ancho de banda ilimitado en cualquier caso, en el caso del almacenamiento éste generalmente se divide en 1GB para el código y 1GB para la DB. Asumo que al llenarse uno u otro se asigna el GB adicional al espacio que lo requiera:


Así mismo como si añado otro cartucho que requiera almacenamiento (u otro gear) el GB adicional se añadirá a éste... De no permitir que la aplicación escale automáticamente, (asumiendo que le asignemos 1 solo gear por ejemplo) tanto la base de datos como el código compartirían el mismo GB... Es importante tomar esto en cuenta debido a que las diferentes bases de datos soportadas (SQLite, MongoDB, MySQL y PostgreSQL según he visto) tienen una footprint de almacenamiento por default distinta, al igual que los distintos tipos de proyectos según el lenguaje/framework que elijas.

Veredicto

Usa Openshift Online si:

  • Tu deployment se beneficiaría del total de recursos gratuitos compartidos
  • Tu aplicación usa banda ancha o CPU de manera intensiva
  • Tu deployment se beneficiaría de tener capacidades de paralell computing
  • Tu deployment se beneficiaría de tener load balancing/high availability habilitados por defecto 
  • Estás prototipando un proyecto y no quieres gastar en lo que validas tu modelo de negocio
  • Tienes una app que se beneficiaría de alguna de las ofertas/addons del marketplace
  • Tu sitio web ha subsistido bastante bien con 512MB - 1.5GB de RAM a lo largo de su vida
  • Tus costos de operación se reducen migrando a OpenShift Online en cualquiera de sus planes

No uses Openshift Online si:

  • Tu aplicación requiere una IP pública estática que de hecho vaya a tener muchísimos hits directos (ejemplo: un API sin Cloudflare)
  • Requieres múltiples aplicaciones y pagar por gears extra te sale más caro que rentar 1 VPS para ponerlas todas ahí o bien, usar App Engine (por ejemplo) donde se te permiten bastantes de forma gratuita.
  • Tu plan de storage sale más barato si haces deployment en App Engine y le pagas a Google sin preocuparte por hacer los bindings aparte (por ejemplo)
  • Requieres usar 1 versión específica de un lenguaje de programación, base de datos o plataforma no soportada de manera administrada por openshift directamente (en ese caso mejor opta por 1 VPS)
  • Necesitas una ubicación geográfica diferente a Estados Unidos o Europa para hospedar tu aplicación
  • Necesitas un entorno demasiado personalizado, casi casi "otra computadora" en la nube
Finalizando...

En el caso de las hosted PaaS, a menos que ocupes demasiadas aplicaciones y te salga más caro pagar por los gears extra, no hay manera (a como yo lo veo) de que otra plataforma como servicio hospedada te salga mejor que Openshift Online en cuanto a recursos gratuitos generales. La escalabilidad en almacenamiento es una situación completamente diferente ya que de usar Google App Engine (por ejemplo) a la larga te podría salir mejor quedarte en su ecosistema si tu app no suele sobrepasar las cuotas gratuitas de otra cosa que no sea almacenamiento (ya que sólo les pagarías por dicho almacenamiento extra). Hablando de un VPS, depende mucho del tipo de deployment que tengas, pero en muchos casos me parece que OpenShift Online puede recortar (incluso a $0) tus gastos de operación bajo diferentes escenarios. En un post futuro haré un tutorial sobre cómo iniciar con Openshift, pero mientras puedes aprender más sobre la plataforma en: