Openness@Microsoft

Openness@Microsoft es el medio para mantener una comunicación sana y continua entre la comunidad de código abierto, donde se permite hablar abierta y honestamente acerca de los diferentes temas de interoperabilidad, como son UNIX, Linux, Windows, entre ot

Empezando en grande con PHP en Windows Azure

Empezando en grande con PHP en Windows Azure

  • Comments 4
  • Likes

Microsoft ofrece la solución de cloud computing más completa del mercado, cubriendo IaaS, PaaS y SaaS, en nube pública y privada, y bajo el principio de apertura e interoperabilidad. Los servicios de IaaS y PaaS se ofrecen bajo Windows Azure y, por supuesto, el software libre es soportado y bienvenido en este servicio.

Azure Web Sites y su Galería

Una de las características actualmente en modalidad de Vista Previa en Windows Azure es Azure Web Sites. Web Sites es un servicio de PaaS que soporta ASP.NET, PHP y Node.js. Bajo esta modalidad, una aplicación Web se puedes implementar (desplegar) a Windows Azure y puede beneficiarse de las características del servicio como monitoreo, escalación, disponibilidad geográfica, respaldos, entre otros. Como cualquier servicio de nube, esta aplicación solamente paga lo que consume y lo que es aun mejor, tiene una capa de uso gratuita para sus pruebas.

Para aquellos desarrolladores que trabajan con Drupal, Joomla, Wordpress y otras aplicaciones PHP populares, Microsoft hace disponible una galería dentro de Windows Azure que facilita la creación de sitios Web basados en estos CMS y frameworks populares. Si estás buscando una manera rápida de empezar con sitios Drupal, Joomla, Wordpress y similares, y poder escalar para grandes cargas en el futuro, Windows Azure es la mejor solución. Puedes seleccionar MySQL o SQL Server (también ofrecido en la nube, cuando es soportado por la aplicación) y definir los nombres, usuarios y otros parámetros del sitio. Estarás en línea en segundos.

Pero, ¿qué pasa si tienes una aplicación compleja ya existente? Este fue el escenario que probé hace pocos días, cuando participé en el PGDay Ecuador 2012 con una charla sobre nuevas oportunidades de interoperabilidad para PostgreSQL en la plataforma de cloud computing de Microsoft.

 

 

Deployment de aplicaciones PHP propias

Ya que Windows Azure soporta (a la fecha) PHP 5.3 y 5.4, puedes desplegar una aplicación PHP arbitraria en la nube. Yo elegí una aplicación grande y compleja: Quipux, un software libre para gestión documental basado en Orfeo y enteramente escrito en PHP. Quipux es una aplicación muy popular en el Ecuador, donde es utilizada por el gobierno para la correspondencia cero papeles. En mi escenario, pensé en tener Quipux ejecutándose sobre una plataforma de cloud computing que, de ser necesario, pudiera escalar para atender más peticiones y así poder potencializar las capacidades de esta solución de software libre en una plataforma global.

Por supuesto, Windows Azure podía cumplir con esta tarea.

El primer paso fue crear un sitio Web. Pero, en vez de seleccionar la Galería, seleccioné la opción de Creación rápida. Definí un nombre para la aplicación, y en segundos estaba operativa mi instancia. El código de la aplicación podía ser desplegado por Git, TFS, Web Deploy o FTP, pero elegí Git ya que lo utilizo frecuentemente en mis proyectos de GitHub. Ya tenía Git instalado en mi equipo con Windows 8 (gracias al cliente de GitHub para Windows) y simplemente cloné el repositorio vacío. En este repositorio copié el código de la aplicación.

Quipux utiliza PostgreSQL como base de datos. Tengo varias opciones para conectarme a una base de datos en Windows Azure, como por ejemplo un worker role. Pero quería aprovechar para mostrar otra característica de Windows Azure y esta es el feature de Virtual Machines. Bajo este feature, puedo crear máquinas virtuales (IaaS) incluyendo, por ejemplo, Ubuntu 12.04. Elegí una instancia modesta, de casi 2 GB de RAM, definí las credenciales y nombre de la máquina y en minutos ya estaba corriendo. Me aseguré de habilitar el acceso a los puertos 22 y 5432 para SSH y PostgreSQL, y accedí por PuTTY a la máquina.

Luego de instalar PostgreSQL, cargar la base de datos inicial de Quipux y configurar el control de acceso, estaba listo para configurar mi aplicación. Quipux tiene un archivo config.php donde se definen, entre otros parámetros, las credenciales para conectar a PostgreSQL.

También copié las librerías gd2 y pgsql de PHP, compiladas para Windows, en la carpeta bin de mi repositorio y las declaré en la variable PHP_EXTENSIONS. Windows Azure permite que los usuarios definan variables de servidor, como esta, y que definan sus propios user.ini dentro de cada aplicación. Además permite escalaciones en modo compartido y reservado, sin necesidad de preocuparse por la configuración del servidor de aplicaciones.

Con estos cambios, preparé mi primer commit e hice el push a Windows Azure. En el push, Azure detectó mi nueva implementación y la procesó. Luego de subir el código, en pocos segundos mi aplicación estaba desplegada y pude ver la información del commit en la interfaz administrativa de Windows Azure. Navegué a mi aplicación y eso fue todo. Quipux corriendo en Windows Azure, usando PostgreSQL corriendo en Ubuntu en Windows Azure.

 

 

Hacia el futuro

La primera ventaja de este modelo es la capacidad de escalación que le damos a la aplicación, sin preocuparnos por balanceos de carga, alta disponibilidad, mecanismos de almacenamiento compartido, concurrencia ni otros elementos. Azure busca potencializar al desarrollador, porque busca que la gente se enfoque en programar aplicaciones de calidad y no se preocupe por detalles operativos (por supuesto, siempre podría ir al nivel de IaaS si quisiera hacerlo) Al momento estoy haciendo las pruebas de estrés de la aplicación, que pinta muy bien.

También puedo encontrar eficiencias en el almacenamiento que, en la nube, resulta muy atractivo en términos financieros. Para una aplicación que sea muy intensiva en I/O, esta puede ser una excelente noticia.

Incluso, a futuro, puedo empezar a encontrar oportunidades para almacenamiento "diferente a SQL" utilizando tablas y colas abstractas de Azure (que puedo acceder desde PHP usando librerías de código abierto) o incluso MongoDB que también funciona muy bien en Azure. Podría usar Hadoop en Azure... conectar PowerPivot a PostgreSQL... usar servicios RESTful para consumir identidades en Active Directory de Windows Azure...

 

Resumen

Si estás considerando desplegar una aplicación PHP compleja en Windows Azure, ten en cuenta las siguientes observaciones:

  1. Prepárate para usar PHP 5.3 o 5.4 (puedes también mandar tu propio framework, pero requiere más pasos)
  2. Asegúrate de que las librerías PHP que utilices estén compiladas para Windows y disponible dentro de la aplicación (revisa un phpinfo() antes de empezar)
  3. Elige un protocolo de implementación; si usas WebMatrix, Web Deploy es una excelente opción y desde Linux puedes usar Git. TFS y FTP también están disponibles
  4. Si no vas a usar SQL Azure (que es un servicio), puedes poner tu base de datos a funcionar en IaaS (en Windows o en Linux) en la misma zona geográfica con rendimientos excepcionales

Nos encantaría escuchar sobre tus proyectos con PHP, Linux y otras herramientas libres en Windows Azure. Puedes enviarnos tus experiencias a softwarelibre@microsoft.com. Happy hacking!

Comments
  • Wow en verdad fuera bueno que implementaran el QUIPUX en Azure ya que a veces falla el sistema a causa de las peticiones al aplicativo

  • Excelente Post José Miguel. Azure es una plataforma realmente potente para poder desplegar aplicaciones escalables y sobre todo con el tema de ahorro de costos. Paga por el uso (PaS & IaS)

  • Buen artículo, creo que de aquí en adelante estaré pendiente de nuevos posts, ya que subiré una plataforma a Azure... Usando Centos y Nodejs ya estoy en fase de pruebas... Espero muy pronto contar mis experiencias!!!

  • No tienes un manual donde explique con mas detalle lo que hizo con la base de datos, en cuanto a la configuración en el sistema Quipux. Yo estoy intentando hacer lo mismo que ud logro pero con el sistema Orfeo Gpl.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment