Olá pessoal, tudo certo?

Novidades importantes no mundo do Cloud Computing! O projeto Simple Cloud foi anunciado ontem, quarta-feira!

image

Ref.: http://www.simplecloud.org/

Essa iniciativa envolve a criação de uma API simplificada baseada em PHP, sendo suportada pelas infraestruturas de cloud computing de fornecedores como Amazon, Microsoft, IBM, Zend, Nirvanix, entre outros.

A API será implementada através de um novo framework chamado Zen_Cloud e deve oferecer para os desenvolvedores uma série de interfaces facilitando o uso de serviços de cloud, como armazenamento, base de documentos, filas de mensagens, em ambientes como Amazon Web Services, Windows Azure, Nirvanix Storage, RackSpace Cloud Files, e outros.

A Microsoft participa desta iniciativa, que é mesmo um belo projeto que combina os benefícios de uma comunidade Open Source com a participação ativa de fornecedores e vendors importantes, na busca pela interoperabilidade de suas plataformas.

Em seu lançamento, a iniciativa já vem com 3 APIs:

  • File Storage, suportando Rackspace Cloud Files, Windows Azure Blob Storage, Amazon S3 e Nirvanix;
  • Document Storage, suportando Amazon SimpleDB e Windows Azure Table Storage;
  • Simple Queues, suportando Windows Azure Table Storage e Amazon SQS

Para ilustrar a API Simple Queues, veja a assinatura dos principais métodos para o tratamento de filas de mensagens, abaixo:

   1: interface Zend_Cloud_QueueService
   2: {
   3:     /**
   4:      * Create a queue. Returns the URI of the created queue. It may take
   5:      * some time to create the queue. Check your vendor's documentation for
   6:      * details.
   7:      *
   8:      * @param  string $name
   9:      * @param  array  $options
  10:      * @return string
  11:      */
  12:     public function createQueue($name, $options = null);
  13:  
  14:     /**
  15:      * Delete a queue. All messages in the queue will also be deleted.
  16:      *
  17:      * @param  string $name
  18:      * @param  array  $options
  19:      * @return void
  20:      */
  21:     public function deleteQueue($name, $options = null);
  22:     
  23:     /**
  24:      * List all queues.
  25:      *
  26:      * @param  array $options
  27:      * @return array
  28:      */
  29:     public function listQueues($options = null);
  30:     
  31:     /**
  32:      * Get a key/value array of metadata for the given queue.
  33:      *
  34:      * @param  string $name
  35:      * @param  array  $options
  36:      * @return array
  37:      */
  38:     public function fetchQueueMetadata($name, $options = null);
  39:     
  40:     /**
  41:      * Store a key/value array of metadata for the specified queue.
  42:      * WARNING: This operation overwrites any metadata that is located at 
  43:      * $destinationPath. Some adapters may not support this method.
  44:      * 
  45:      * @param  array  $metadata
  46:      * @param  string $name
  47:      * @param  array  $options
  48:      * @return void
  49:      */
  50:     public function storeQueueMetadata($metadata, $name, $options = null);
  51:     
  52:     /**
  53:      * Send a message to the specified queue.
  54:      * 
  55:      * @param  string $message
  56:      * @param  string $name
  57:      * @param  array  $options
  58:      * @return void
  59:      */
  60:     public function sendMessage($message, $queueName, $options = null);
  61:     
  62:     /**
  63:      * Recieve at most $max messages from the specified queue and return the
  64:      * message ids for messages recieved.
  65:      * 
  66:      * @param  string $queueName
  67:      * @param  int    $max
  68:      * @param  array  $options
  69:      * @return array
  70:      */
  71:     public function recieveMessages($queueName, $max = 1, $options = null);
  72:     
  73:     /**
  74:      * Delete the specified message from the specified queue.
  75:      * 
  76:      * @param  string $id
  77:      * @param  string $queueName
  78:      * @param  array  $options
  79:      * @return void
  80:      */
  81:     public function deleteMessage($id, $queueName, $options = null);
  82:     
  83:     /**
  84:      * Peek at the specified message from the specified queue.
  85:      * WARNING: This operation may block other receivers from recieving the
  86:      * message until the message is released from the peeker for services
  87:      * that do not natively support message peeking. This may impact
  88:      * performance and/or introduce concurrency issues in your applications.
  89:      * Check your cloud vendor's documentation for more details.
  90:      *
  91:      * @param  string $id
  92:      * @param  string $queueName
  93:      * @param  array  $options
  94:      * @return void
  95:      */
  96:     public function peekMessage($id, $queueName, $options = null);
  97: }

Bem interessante, veja mais aqui!!

De fato, iniciativas como essa devem ampliar ainda mais o universo de cenários de aplicações na nuvem, além de aumentar o interesse geral das empresas sobre esse tipo de ambiente de provisionamento dinâmico, infraestrutura escalável, pagamento pelo uso e interoperabilidade!

Por enquanto é só! Até o próximo post :)

Waldemir.