General

Una breve PoC del SDK de Windows Azure para PHP

Hace varios meses conseguí acceso al CTP de Windows Azure, el servicio de cloud computing de Microsoft. Este servicio ofrece capacidad de cómputo (CPU, RAM), networking y almacenamiento de data estructurada (tablas) y no estructurada (colas, blobs) en centros de datos ubicados en Europa, Asia y los Estados Unidos, aunque AFAICT sólo está operando el de Estados Unidos.

Con estas claves se podía usar Windows Azure durante el preview de tecnología, lo cual ya venció IIRC. Windows Azure será accesible para ciertos países bajo una estructura de costos particular. Realmente para las organizaciones asumo que la ventaja competitiva de usar Azure (vs. Amazon, e.g.) radicará en la integración que ya tiene con el IDE Microsoft Visual Studio y las tecnologías asociadas al desarrollo en plataforma Microsoft. Digamos que se promete poder migrar una aplicación .NET existente a la nube.

Yo me propuse usar Windows Azure con una aplicación libre, hecha en PHP, para probar. El SDK de Windows Azure para PHP realmente son sólo unas librerías que se incluyen en un proyecto PHP. Una vez incluídas, estas librerías hacen disponibles funciones para crear, listar, acceder, agregar, modificar y/o eliminar elementos de datos en la nube como: blobs, tablas y colas. Todo esto se hace con funciones REST. El SDK necesita CURL y la librería php-curl.

Es importante resaltar que en el caso de las tablas, si bien se conoce que Windows Azure utiliza SQL Server como almacén de datos en la nube esto es transparente para el desarrollador. Simplemente se crean entities en PHP con campos arbitrarios y esos se mandan completos a la tabla; en el backoffice ya se encargará el RDBMS de crear columnas, tipos de datos y demás. Tampoco hay que saber SQL ni T-SQL para hacer consultas, sino que hay una sintaxis simplificada y además las librerías ayudan. Piense en algo como CouchDB con SQL Server como un backend.

No es de sorprender que el almacenamiento de tablas de Windows Azure presenta características en línea con tendencias alejadas de SQL como prevalencia del modelo key-value para manejadores de bases de datos en aplicaciones de alto rendimiento, con ejemplos como Facebook, eBay y Elgg y cierta orientación a un modelo de DB basado en “documentos” que realmente se tratan de estructuras de datos arbitrarias enviadas al manejador para su almacenamiento. Esto en definitiva es positivo para el desarrollador y es curioso ya que hace muy pocos años esto no estaba en el panorama.

El SDK para PHP es licenciado bajo BSD lo que lo hace software libre y de código abierto. Las librerías no las hizo Microsoft sino un tercerizador (RealDolmen) y personalmente considero que se pudo haber usado librerías de REST un poco más elaboradas. Para cuando probé Windows Azure habían proyectos para Java y Ruby, en esencia patrocinados por Microsoft. En MLs japonesas ya habían módulos (al menos para Tablas) para lenguajes como Perl.

Un ejemplo muy sencillo para empezar con tablas sería (y aquí más ejemplos):

require_once 'Microsoft/WindowsAzure/Storage/Table.php';$svc = 'table.core.windows.net';$act = 'act'; # el prefijo de *.table.core.windows.net que crean en la página, identifica al 'usuario'$key = 'key'; # una clave binaria en base64 que generan en la página, completa la credencial$storageClient = new Microsoft_WindowsAzure_Storage_Table($svc, $act, $key);$result = $storageClient->createTable('PrimaTabla');$result = $storageClient->listTables();foreach ($result as $table){ echo 'Tabla: ' . $table->Name . ""; }

Los drawbacks que veo radican en la ubicación geográfica de las infraestructuras físicas que se están utilizando, y obviamente el impacto estratégico que tiene en algunas aplicaciones, así como las amenazas tradicionales para aplicaciones sensibles de servicios de cloud computing. Sin embargo, es bueno saber que es posible desarrollar en PHP (y otros lenguajes de stack abierto, FWIW) usando Azure como backend y sin estar atado a un IDE o a un software de gestión de ciclo de vida específico.

Standard

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s