OpenShift con Symfony2: PaaS para todos [1ª Parte – introducción]

OS-ICON-02Php es uno de los lenguajes más utilizados en Internet, y cada vez más sólido, por lo que en los principales proveedores de PaaS (plataforma como servicio) están añadiendo su compatibilidad dentro de sus servicios como Windows Azure,  Google App Engine  o RedHat Openshift.

Para atraer a pequeños desarrolladores o favorecer a las startups, algunas de estas compañías ofrecen periodos de prueba gratuitos para que sin miedo, uno pueda introducirse en estos nuevos servicios. En el caso particular de Redhat Openshift, actualmente ofrecen 3 instancias small gratuitas sin límite de tiempo, una buena razón por la que me he decido a probar el servicio.

Redhat Openshift

Este producto se divide en tres infraestructuras compatibles con Java, Ruby, PHP, Node.js, Python y Perl:

  • Openshift Online: alojamiento online gratuito (hasta 3 instancias small de 1Gb de espacio)
  • Openshift Enterprise: alojamiento online de pago (
  • Openshift Origin: descárgate su software y móntalo en tu propia infrastructura hardware

Una vez nos hemos registrado, dispondremos de un panel web de control además de la posibilidad de controlar nuestras instancias por linea de comandos. Las instancias son llamadas APLICACIONES, y como he comentado, podemos tener hasta 3 pequeñas (512Mb RAM, 1 Gb de disco). Estas aplicaciones serían como un empaquetado de todo lo que necesitamos para que funcione nuestra aplicación: scripts de inicio, variables, etc… (PaaS). El sistema me recuerda mucho a cuando Amazon AWS no permitía guardar las configuraciones de los servidores y si lo reiniciabas debías de configurar un script para que volviera a descargarse código, configuraciones, etc…

En Openshift no disponemos del acceso al servidor para que podamos instalar y desinstalar a nuestro antojo, aunque tenemos acceso SSH, este está limitado a comandos básicos (suficientes para ejecutar la consola de Symfony2), pero de forma sencilla no podréis instalar módulos o programas. Si por ejemplo, queréis trabajar con base de datos, deberéis añadir un cartridge (sí, sí, como en las viejas consolas) de los disponibles (mysql, mongoDB, phpmyadmin, postgres,…)

¿Y por qué elegir Openshift?

A parte de tener “hosting” gratis, entonces ¿por qué me ha de gustar Openshift? En mi caso, por que me encantan los retos, pero creo que lo que me ha gustado es la opción de auto-escalado y su metodología de trabajo la cual nos permite organizar nuestro código: Git, Jenkins y Deploy.

Para trabajar con Openshift debemos de actuar de la siguiente manera:

  1. Programar nuestro código en nuestro repositorio Git personal
  2. Una vez terminado nuestro código y cuando está listo para subir a producción, hacemos push (técnica git-to-deploy)
    1. Build: Nuestros cambios son enviados a la rama principal y nuestro servidor particular Jenkins empieza a ejecutarlo: pruebas unitarias, documentación, codecoverage, etc…
    2. Al mismo tiempo, nos crea una nueva aplicación online (con 15 minutos de vida) para  que privemos el código antes de pasar a producción
    3. Si nuestro Build pasa todos los test sin errores el siguiente paso es Deploy.
    4. Deploy: prepara el entorno de “producción” con nuestros cambios, actualizando el código de nuestra aplicación con la rama master de git. Ojo, con reset incluido, por lo que debemos incluir en nuestros script la descarga de código ignorado en nuestro repositorio (como los /vendors), existe también una carpeta “data” donde debemos poner objetos persistentes como ficheros subidos desde nuestra aplicación web.

Si por ejemplo, ha habido un error en los test unitarios, nuestro código NO pasa a producción.

Otra de las opciones que ofrece Openshift, es el escalado de aplicaciones, nos permite que dependiendo de la carga de nuestro servidor, o si se está realizando un deploy (con la web no accesible en esos momentos), se creen automáticamente instancias nuevas (siempre y cuando tengamos Aplicaciones disponibles) o se balancee automáticamente a las instancias operativas. Eso sí, no todas las aplicaciones son compatibles con la escalabilidad, principalmente por la persistencia de datos, por lo que si nos decantamos por iniciar una aplicación a partir de una de las maquetas existentes, esta opción no estará disponible.

En la siguiente entrega, realizaremos los primeros pasos y explicaré como superar las primeras trabas del sistema.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s