Freigeben über


Projeto Simple Cloud: Interoperabilidade entre nuvens.

Olá pessoal, tudo certo?

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

image

Ref.: https://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.