Artigo do tipo Tutorial
Recursos especiais neste artigo:
Contém nota Quickupdate.
Windows Azure Blob Storage Service - Armazenamento e compartilhamento de arquivos na nuvem
A adoção de soluções de cloud computing vem crescendo vigorosamente dentro do mundo corporativo. A Microsoft, um dos líderes neste mercado, disponibilizou um conjunto bastante abrangente de recursos a partir da plataforma Windows Azure. Uma destas soluções é o componente Blob Storage Service; este pode se revelar um instrumento de grande valia no que diz respeito à construção de aplicações voltadas ao armazenamento e compartilhamento de arquivos. Neste artigo conheceremos as principais características do Windows Azure e do seu serviço de compartilhamento de arquivos, o Blob Storage Serve.


Em que situação o tema é útil

O armazenamento e compartilhamento de arquivos representam uma necessidade bastante comum dentro de muitas organizações. Inúmeras soluções existem neste sentido, indo desde implementações voltadas a redes corporativas privadas a aplicações que empregam recursos de cloud computing, sendo nesta última onde se aplica o uso do Blob Storage Service.

Embora relativamente recente, a utilização de serviços baseados no modelo arquitetural conhecido como cloud computing vem crescendo consideravelmente nos últimos tempos. Entidades como empresas privadas, instituições públicas e organizações governamentais vislumbraram neste padrão uma excelente alternativa. A opção pelo uso de mecanismos de cloud contribui não apenas para uma redução acentuada de custos, como pode vir respaldada por uma série de garantias como maior segurança, disponibilidade e que permitam a evolução daquilo que está sendo implementando.

Atentas a esta tendência do mercado, gigantes do setor como Google (Google App Engine), Amazon (com o Amazon Web Services) e IBM (através do IBM Smart Cloud) empreenderam grandes investimentos, oferecendo assim alternativas sob o formato de serviços possíveis de se contratar mediante um acordo prévio. Com a Microsoft não foi diferente e este novo segmento de produtos assistiria, ainda no segundo semestre de 2008, ao lançamento do Windows Azure.

O Azure corresponde, sem sombra de dúvidas, a uma das soluções mais abrangentes existentes atualmente no mercado. Quanto aos serviços previstos por esta plataforma podemos destacar: dispositivos para hospedagem de aplicações Web, armazenamento (tanto de arquivos, quanto de grandes volumes de dados estruturados), infraestrutura de servidores, segurança (autenticação/autorização de usuários), bancos de dados relacionais, Business Intelligence e gerenciamento de conteúdo/mídia.

A proposta deste artigo é fornecer uma visão geral acerca do conceito de cloud computing, bem como descrever aspectos dos principais elementos da plataforma Azure. Feito isto, será discutido também um dos possíveis cenários de uso do Windows Azure, considerando características do componente conhecido como Blob Storage .

Este serviço possibilita o armazenamento de grandes volumes de dados não estruturados na nuvem. Em termos práticos isso significa que documentos, imagens e outros tipos de arquivos poderão ser compartilhados por meio do Windows Azure ou até mesmo que as funcionalidades do componente Blob Storage Service possam se prestar à execução de rotinas de backup/restore.

Cloud computing: uma visão geral

O conceito de cloud computing pode ser definido em termos gerais como um modelo computacional onde serviços de software são oferecidos remotamente, ou seja, a partir da Internet. Isso costuma implicar na existência de um acordo prévio entre os fornecedores de tais funcionalidades e os respectivos consumidores.

Vale lembrar ainda que esses acordos envolvem o pagamento pelos produtos utilizados considerando para isto aspectos como o nível de uso de tais serviços, além de toda a infraestrutura necessária para manter os mesmos. O próprio windows Azure conta com uma série de planos para utilização, de modo que os clientes desta plataforma possam definir qual a melhor opção para as suas demandas.

Quando se leva em conta o fato de estarem ou não situados na "nuvem", sistemas de software podem ser divididos em dois grupos:

· On-premise: aplicações mantidas dentro de uma organização a partir de recursos próprios no que se refere à infraestrutura de TI;

· Off-premise: softwares e outros recursos que foram implantados na "nuvem", ou seja, são mantidos em data centers geridos por fornecedores deste tipo de solução. Competirá a tais fornecedores o gerenciamento de toda a infraestrutura prevista visando atender às demandas dos contratantes dos serviços.

Em virtude da forte ênfase na ideia de serviço, soluções de cloud computing podem ser divididas em categorias, tomando-se como parâmetro em tais casos o tipo de recurso que está sendo disponibilizado na nuvem. A seguir estão listadas algumas das classificações possíveis para tais serviços:

· Application-as-a-service ou Software-as-a-service: corresponde à hospedagem de sistemas (sites, Web Services) na “nuvem”;

· Storage-as-a-service: recursos e técnicas para armazenamento de informações em disco de maneira remota;

· Database-as-a-service: acesso a bancos de dados que se encontram hospedados na nuvem;

· Security-as-a-service: compreende mecanismos remotos de segurança, tais como controles para o gerenciamento de usuários;

· Infrastructure-as-a-service: conjunto de recursos que correspondem a toda uma infraestrutura de data center sendo oferecidos como serviço a uma organização;

· Platform-as-a-service: agrupamento de recursos que envolvem mecanismos para hospedagem de aplicações, banco de dados, armazenamento de arquivos, dentre outras funcionalidades.

A própria plataforma Azure representa um caso de implementação do padrão Platform-as-a-service (PaaS), justamente por dispor de um conjunto de serviços que cobrem um grande número de cenários e necessidades. Já os componentes do Azure podem ser considerados como pertencentes a outras classificações mais específicas, como o SQL Azure, que é um bom exemplo da aplicação do conceito de Database-as-a-Service (DaaS).

Diversos são os fatores que podem motivar investimentos por parte das organizações em aplicações e serviços na nuvem, sendo alguns deles:

· A necessidade de redução do alto custo associado à manutenção de uma infraestrutura básica de hardware e software. Tudo isto se reflete em gastos com equipamentos, licenças, instalações, energia elétrica, além de pessoal qualificado para a condução das operações cotidianas;

· Devido à cobrança de um serviço acontecer com base no nível de uso do mesmo, épocas de uma menor demanda podem se traduzir em economia de recursos financeiros;

· A questão da escalabilidade, onde se espera que a infraestrutura empregada seja capaz de se comportar de maneira satisfatória mesmo diante do aumento na utilização da mesma. Soluções de cloud computing podem ser bastante flexíveis neste sentido atendendo a esta necessidade por meio do uso de novos servidores, maior espaço de armazenamento, load balancing (balanceamento de carga), etc;

· A exigência de alta disponibilidade, que representa uma preocupação constante em aplicações de caráter crítico para determinados negócios. Medidas de contingência é uma prática bastante comum em soluções de cloud computing. Um exemplo clássico disto seria a redundância de servidores, de maneira que um computador inoperante possa ser substituído por outro capaz de atender às requisições dos usuários de um determinado sistema;

· Uma maior agilidade na implementação de projetos de software, visto que preocupações que envolvam infraestrutura serão relegadas a um segundo plano, de forma a se empreenderem maiores esforços na concepção da solução esperada pelas áreas solicitantes.

A plataforma Windows Azure

Aplicações Web como sites construídos sob a tecnologia ASP.NET (Web Forms, ASP.NET MVC 3, ASP.NET MVC 4) e serviços WCF contam com a opção de hospedagem dentro do próprio Windows Azure. Dentre as funções oferecidas está um sofisticado mecanismo de balanceamento de carga, onde podemos contratualmente determinar o número de instâncias utilizadas no processamento de requisições enviadas a esses sistemas.

O armazenamento e manipulação de dados dos mais variados tipos também foi contemplado pela plataforma Azure. É possível desde a utilização de bancos de dados relacionais a partir do SQL Azure (versão do SQL Server convencional para a nuvem), além do armazenamento de arquivos por parte do serviço Blob Storage, comunicação através de mensagens via componente Queue Storage (Nota do DevMan 1) ou até informações estruturadas e não-relacionais por meio do Windows Azure Table (Nota do DevMan 2).

Nota do DevMan 1

As mensagens manipuladas através do serviço Queue Storage permitem a comunicação assíncrona entre aplicações (envio, seguido de posterior processamento), sendo vinculadas a estruturas como queues (filas). A manipulação de mensagens existentes em uma fila acontece em conformidade com o padrão FIFO (First In First Out), em que as informações mais antigas são processadas num primeiro momento, com as notificações mais recentes sendo verificadas posteriormente, de acordo com a ordem de entrada na fila.

Nota do DevMan 2

O serviço Windows Azure Table possibilita o armazenamento de dados na “nuvem” sob a forma de tabelas. No entanto, o formato deste tipo de estrutura no Windows Azure difere bastante daquele existente em bancos de dados relacionais. Uma tabela criada no ambiente de Storage é formada por um conjunto de entidades, onde cada uma destas possui várias propriedades.

A forma como uma tabela encontra-se estruturada neste componente do Azure, envolvendo inclusive o uso de diferentes partições, tem como principal benefício permitir o armazenamento de terabytes de dados sob a forma de entidades.

Considerando necessidades que envolvam a integração entre diferentes aplicações, o componente Windows Azure Service Bus pode se revelar como uma alternativa robusta e extremamente flexível. Este recurso permite a interoperabilidade entre sistemas concebidos nas mais diversas plataformas, baseando-se em um padrão conhecido como ESB (Enterprise Service Bus). A adoção de um software de ESB (Nota do DevMan 3) está normalmente associada a aplicações modeladas seguindo princípios de orientação a serviços (SOA - Nota do DevMan 4).

Nota do DevMan 3

O padrão conhecido como ESB (Enterprise Service Bus) tem por objetivo principal disponibilizar meios para uma conexão segura e de baixo acoplamento entre sistemas de software, possibilitando aos mesmos superar barreiras que seriam impostas por firewalls ou outros dispositivos de hardware/software. A utilização de estruturas como esta permite que diversos tipos de protocolo sejam empregados no processo de integração entre aplicações; formatos como HTTP, HTTPS, TCP e SOAP são alguns dos exemplos normalmente suportados por ESBs.

Nota do DevMan 4

SOA (sigla em inglês para “Service Oriented Architecture” ou Arquitetura Orientada a Serviços, em português) é um modelo de arquitetura para o desenvolvimento de sistemas. Tem por objetivo principal o atendimento de necessidades de negócios a partir do fornecimento de serviços agrupados em componentes (módulos) de software. A implantação desta arquitetura é feita, de maneira geral, através da utilização de Web Services, focando ainda na possibilidade de reutilização de funcionalidades já existentes no sistema e passíveis de serem expostas como serviços.

...
Quer ler esse conteúdo completo? Tenha acesso completo