Por dentro do novo Windows Azure. Novidades do Storage

Cloud Computing & Microsoft Azure & Microsoft Azure Storage

Ao longo da minha parca experiência com o Windows Azure pude ver em diversos momentos algumas solicitações e anseios da comunidade por mudanças em alguns recursos do serviço de storage do Azure. Parece que o time de Azure estava bem atento e trouxe novidades significativas nesta release, tornando o Windows Azure Storage mais “atraente”.

As novidades para o serviço de armazenamento do Windows Azure não foram tantas, porém foram essenciais. Neste post vou relatar de forma resumida estas alterações.

Big Data on Windows Azure

 

Recursos de Lease para Blobs aprimorados

Trabalhar com concorrência no mundo dos sistemas distribuídos como o Azure pode muitas vezes se tornar uma dor de cabeça. Este é um recurso de locação do blob que permite criar um bloqueio exclusivo em determinado blob para impedir que ele seja modificado ou excluído. Mas como citado no início do parágrafo, outro uso para esta funcionalidade é gerenciar a concorrência em um ambiente multi-threaded. Para saber mais detalhes indico o ótimo post Managing Concurrency in Windows Azure with Leases do Steve Marx.

Segue a lista com as melhorias da funcionalidade de lease:

  • Agora operações de locação podem ser realizadas em um contêiner blob. Nas versões anteriores isso só podia ser feito diretamente em blobs;
  • Agora você pode adquirir um contrato de locação que nunca termina. Anteriormente você só podia adquirir locação de um blob em um período válido por apenas 1 minuto;
  • Além de adquirir um contrato de locação sem fim, você também pode adquirir locação de curta duração sendo válido a partir de 15 até 60 segundos;

Mais detalhes indico a leitura do artigo New Blob Lease Features: Infinite Leases, Smaller Lease Times, and More.

 

Copiando Blobs para diferentes contas de armazenamento

Ai está uma baita novidade. Nas versões anteriores não era possível copiar um Blob para outra conta de armazenamento. Considere o seguinte cenário: Você precisa fazer o “backup” de seus dados de uma conta de origem para uma conta de destino. Antes seria necessário buscar todo o conteúdo da conta origem para depois fazer o upload para a conta destino. Agora podemos resolver isso facilmente.

Claro que como nem tudo são flores é necessário ter alguns cuidados:

  • Este recurso só é valido para contas de armazenamento criadas após 07/06/2012;
  • Para se copiar dados de uma conta origem, a mesma deve ter acesso público. Caso contrário a URL gerada deve ser assinada usando uma assinatura de acesso compartilhado que tenha acesso de “leitura” ao blob origem;
  • Nas versões anteriores copiar um blob era uma operação síncrona, agora a cópia de blobs é trabalhada de forma assíncrona;
  • [Essa merece destaque] Agora para copiar um blob não precisamos mais que ele esteja no Windows Azure Sotorage podendo ser por exemplo um objeto da Amzaon S3. A exigência fica por conta do acesso que deve ser público ou ter a URL assinada como citado anteriormente. Isto é realmente útil no sentido da integração e evita a necessidade de salvar certos conteúdos como blobs no Azure para sincronizar em uma base destino. Agora fica fácil utilizar o Windows Azure Storage como backup de seus dados de blobs armazenados em outro provedor de armazenamento na nuvem.
  • Caso sua conta de destino em um centro de dados diferente da conta de origem será cobrado a saída de dados… lógico, nem tudo são flores… kkk

 

Assinatura de acesso compartilhado para Tables

Nas versões anteriores somente sendo proprietário de uma conta de armazenamento do Windows Azure era possível executar operações CRUD. Agora o WAS(Windows Azure Storage), ampliou a funcionalidade de Shared Access Signature.

Na prática o SAS (Shared Access Signature), fornece acesso granular aos recursos de armazenamento. Você precisa fornecer um token SAS com permissão predefinido (leitura, escrita, lista, exclusão, etc), que aparece na URL assinada. Logo um usuário em posse desta URL assinada tem permissão para executar operações permitidas pelo token SAS usando API REST sem realmente ter acesso as credenciais da conta de armazenamento. Sorriso

Alguns comentários sobre o SAS para os recursos da tabela:

  • Você pode conceder acesso a uma tabela como um todo (ou seja, todos os dados na tabela) ou a um intervalo da tabela (ou seja, dados selecionados da uma tabela). Vamos dizer que você está construindo uma aplicação multi-tenant e você está armazenando os dados de cada inquilino em uma tabela separada, agora você pode usar esta funcionalidade de SAS para criar tokens para tabelas separadas e dar uma URL assinada para cada inquilino;
  • Você pode conceder direitos de acesso a uma tabela específica ou intervalo da tabela, tais como Pesquisar, Adicionar, Alterar, Excluir ou uma combinação deles . O que isto significa é que você pode ter o controle realmente refinado sobre o que um usuário tem acesso de fazer por meio da URL assinada;
  • Você pode definir um horário de início e fim para fornecer acesso em tempo limitado ou fornecer acesso a grandes períodos de tempo.

Assinatura de acesso compartilhado para Queues

Assim como foi supracitado, você tem os mesmos benefícios de Shared Access Signature para o serviço de Filas do Windows Azure. Vamos as observações:

  • Você pode conceder direitos de acesso a uma fila específica, como Read ou Peek das mensagens o que isto significa é que você pode ter o controle realmente refinado sobre o que um usuário tem acesso de fazer por meio da URL assinada;
  • Você pode definir um horário de início e fim para fornecer acesso em tempo limitado ou fornecer acesso a grandes períodos de tempo;
  • Como o SAS para blobs, é possível gerar tokens SAS com ou sem política de acesso, sendo recomendável a utilização de políticas de acesso para uma melhor admininstração.

A nova API

Com estas alterações vieram as novidades na API REST. Abaixo segue uma pequena lista com os novos recurso bem como as atualizações:

Copy Blob (REST API)

Lease Blob (REST API)

Abort Copy Blob (REST API)

Lease Container (REST API)

Get Table ACL (REST API)

Set Table ACL (REST API)

Get Queue ACL (REST API)

Set Queue ACL (REST API)


Author's profile picture

Vitor is a computer scientist who is passionate about creating software that will positively change the world we live in.

MVP Azure - Cloud Architect - Data science enthusiast


6 minutes to read