computação armazenamento rede virtual business inteligence banco de dados rede de entrega de...
TRANSCRIPT
Como utilizar o Windows Azure Storage nas suas aplicaçõesCOS301
Vitor CiaramellaDeveloper Evangelist - Microsoft BrasilMBA, PMP®, PRINCE2 Practitioner, CSP, CSM®, CSPO, MCT, MCPD & MCTS (.NET, Windows Azure, Windows Phone, Silverlight, SharePoint & SQL Server)
Agenda
Visão geral de armazenamento de dados no Windows AzureSQL AzureWindows Azure Storage
Local Store, Blob, Azure Drive, Table e Queue
Rede de Entrega de Conteúdo - CDNAppFabric Caching
Visão geral de armazenamento de dados no Windows Azure
Features do Windows Azure
Computação
Armazenamento
Rede Virtual
Business Inteligence
Banco de Dados
Rede de Entregade Conteúdo
Barramento deServiços
Marketplace
MáquinasVirtuais
Caching
Controle deAcesso
Features do Windows Azure
Computação
Armazenamento
Rede Virtual
Business Inteligence
Banco de Dados
Rede de Entregade Conteúdo
Barramento deServiços
Marketplace
MáquinasVirtuais
Caching
Controle deAcesso
Contextualizando...
Aplicação
Arquivos e pastasno Sistema de Arquivos
Tabelas noBanco de Dados
Aplicação com banco de dados e arquivos
Aplicação
Arquivos e pastasno Sistema de Arquivos
Tabelas noBanco de Dados
Fila de processamento
Serviço de processamento em segundo plano
Aplicação com banco de dados, arquivos e fila
Aplicação
Arquivos e pastasno Sistema de Arquivos
Tabelas noBanco de Dados
Fila de processamento
Serviço de processamento em segundo plano
Aplicação com banco de dados, arquivos, fila e cache
Cache
Aplicação(n instâncias)
Arquivos e pastasno Sistema de Arquivos (expansível)
Fila de processamento(expansível)
Aplicação com banco de dados, arquivos, fila e cache (expansível)
Cache(distribuído)
Tabelas noBanco de Dados(expansível)
Serviço de processamento em segundo plano(n instâncias)
Aplicação(n instâncias)
Arquivos e pastasno Sistema de Arquivos (expansível)
Fila de processamento(expansível)
Aplicação com banco de dados, arquivos, fila e cache (expansível)
Cache(distribuído)
Tabelas noBanco de Dados(expansível)
Serviço de processamento em segundo plano(n instâncias)
Atenção:Bancos de dados relacionais são naturalmente difíceis de expandir
Aplicação(n instâncias)
Arquivos e pastasno Sistema de Arquivos (expansível)
Fila de processamento(expansível)
Aplicação com banco de dados, arquivos, fila e cache (expansível)
Cache(distribuído)
Tabelas(expansível)
Serviço de processamento em segundo plano(n instâncias)
Tabelas noBanco de Dados(expansível)
Solução:Extrair tabelas do banco relacional para uma outra arquitetura que expande mais fácil
Web Role
Blob Storage
Queue Storage
Aplicação com banco de dados, arquivos, fila e cache (expansível)
AppFabric Cache
Table Storage
Worker Role
SQL Azure
Nomeando as features do Azure...
Web Role
Blob Storage
Queue Storage
AppFabric Cache
Table Storage
Worker Role
SQL Azure
Incluindo a Rede de Distribuição de Conteúdo (CDN)
CDN
Visão Geral do SQL Azure
O que é o SQL Azure?
Em resumo:“É praticamente o SQL Server 2008 R2
que você está acostumado a trabalhar”
Features do SQL Azure
SQL AzureSQL Azure Reporting Services (CTP)SQL Azure Data Sync (CTP)
Features do SQL Azure
SQL AzureBanco de dados relacional em núvemAlta disponibilidade (SLA de 99,95%)Compatível com T-SQLSuporta tabelas, views, índices, roles, stored procedures, triggers e funçõesAcesso via TCP/IP com Connection String padrãoFirewall de conexão (apenas IPs autorizados se conectam)Administração via Painel de Controle Web, SQL Server Management Studio ou outra ferramenta compatível
Painel de Controle – SQL Azure
Screenshot do painel de controle ou mini demo
Exemplo de código – SQL Azurevar stringDeConexao = “Server=tcp:servidor123.database.windows.net;Database=nomeDoBancoDeDados; User ID=usuario@servidor123;Password=senha;Trusted_Connection=False; Encrypt=True;MultipleActiveResultSets=True;”;
using (var conexao = new SQLConnection(stringDeConexao)){
using (var comando = new conexao.CreateCommand()){
comando.CommandText = “select count(*) from TabelaX”;var resultado = comando.ExecuteScalar();
}}
Possuindo acesso ao Firewall, você pode se conectar no SQL Azure de diversas formas, incluindo:• ASP.NET, ADO.NET, Entity Framework, WCF Data Services• PHP• Java JDBC
Pontos de atenção do SQL Azure
Conexões apenas via TCP/IP porta 1433Não suporta SQL Server Agents / JobsNão suporta transações distribuidasA collation do banco e do servidor é sempre SQL_LATIN1_GENERAL_CP1_CI_ASTodas tabelas devem ter um índice clusterizadoTamanho máximo de 50Gb por banco de dados
Local Store
O que é o Local Store?
Em resumo:“É praticamente o “C:\Temp” que cada
instância de computação possui”
Arquivo de Definição de Serviço<?xml version="1.0" encoding="utf-8"?><ServiceDefinition xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" name="MyService"> <WebRole name="MyService_WebRole" vmsize="Medium"> <InputEndpoints> <InputEndpoint name="HttpIn" port="80" protocol="http" /> </InputEndpoints> <ConfigurationSettings> <Setting name="SimpleConfigSetting" /> </ConfigurationSettings> <LocalResources> <LocalStorage name="localStoreUm" sizeInMB="10" /> <LocalStorage name="localStoreDois" sizeInMB="10" cleanOnRoleRecycle="false" /> </LocalResources> </WebRole></ServiceDefinition>
Usando o Local Storevar localStoreUm = RoleEnvironment.GetLocalResource("localStoreUm");var nomeArquivo = “MeuArquivo.txt";var caminhoArquivo = Path.Combine(localStoreUm.RootPath, nomeArquivo);
using (var fileStream = File.Create(caminhoArquivo)){
using (var streamWriter = new StreamWriter(fileStream)){
streamWriter.WriteLine(“Nova linha!”);}
}
var localStoreUm = RoleEnvironment.GetLocalResource("localStoreUm");var pastas = “\Pasta1\Pasta2”;var nomeArquivo = “MeuArquivo.txt";var caminhoArquivo = Path.Combine(localStoreUm.RootPath, pastas, nomeArquivo);
Ou se você tem sub-pastas:
Ex.: C:\Resources\directory\f335471d5a5845aaa4e66d0359e69066.MyService_WebRole. localStoreUm\Pasta1\Pasta2\MeuArquivo.txt
Pontos de Atenção do Local Storage
Não existe garantia que os dados persistidos no Local Storage serão preservados após a instância ser reiniciada
Encare ele como um diretório temporário
Você deve “reservar” o Local Storage pelo arquivo de definição de serviço (.csdef)Você deve obter o caminho do Local Storage pela chamada:
RoleEnvironment.GetLocalResource(“...”). RootPath
Blob Storage
O que é o Blob Storage?
Em resumo:“É um sistema de arquivos distribuido
acessado via REST ou SDK”
Features do Blob Storage
Acessível via REST (HTTP ou HTTPS)Naturalmente interoperável (clientes .NET, Windows Phone, Java, PHP, iPhone, Android, Ajax, Silverlight, Flash e etc)
Permite associar metadadosMecanismos de controle de acesso e concorrênciaDois tipos de Blobs
Block BlobIdeal para StreamingCada Blob é uma sequência de BlocosAté 200Gb por Blob
Page BlobIdeal para acesso aleatório de leitura ou escritaCada Blob é um array de PáginasAté 1Tb por Blob
Estrutura do Blob Storage
BlobContainerConta
conta
imagens
img01.jpg
videos vid1.avi
http://<conta>.blob.core.windows.net/<container>/<nomeDoBlob>
Pages/
Blocks
Block/Page
Block/Page
img02.jpg
Criando a conta de StorageScreenshot ou mini-demo de criação de conta
Acessando um Blob via SDK para .NET
var stringDeConexao = “DefaultEndpointsProtocol=https;AccountName=contaDoBlob;AccountKey=chaveDoBlob”; var uriDoContainer = “ArquivosTexto”;var nomeDoArquivo = “/Pasta1/Pasta2/MeuArquivo.txt”;var contaDeStorage = CloudStorageAccount.Parse(stringDeConexao);var clienteDoBlob = contaDeStorage.CreateCloudBlobClient(); var container = new CloudBlobContainer(uriDoContainer.ToLower(), clienteDoBlob);
container.CreateIfNotExist();
var blob = container.GetBlobReference(nomeDoArquivo.ToLower());blob.UploadText(“Conteúdo do arquivo”);
A classe CloudBlob possui diversos métodos como: Delete, DownloadToFile, DownloadToText, DownloadToStream, OpenRead, OpenWrite, UploadFromStream, UploadFile.
O nome do Blob pode conter “\”, permitindo a ideia de pastas.
Rede de Distribuição de Conteúdo - CDNContent Delivery Network
O que é o CDN?
Em resumo:“É um sistema de replicação de blobs
em servidores mais próximos do usuário final”
Como o CDN funciona
Windows Azure Blob Service
img1.jpg
Content Delivery NetworkLocalidade 1
Localidade 2 Localidade 3
GEThttp://guid01.vo.msecnd.net/imagens/pic.1jpg
http://conta.blob.core.windows.net/imagens/img1.jpg
http://conta.blob.core.windows.net/
http://guid01.vo.msecnd.net/
TTL
Habilitando o CDNScreenshot ou mini-demo
Azure Drive
O que é o Azure Drive?
Em resumo:“É um VHD montado como um drive de
rede e persistido num Page Blob”
Features do Azure Drive
Drive NTFS “durável” para as instâncias de Windows AzureOpção “mista” entre o Local Storage e o Blob StorageTamanho máximo de 1Tb por DriveAPIs para montar e desmontar o drivePossibilidade de baixar ou subir o VHD via APIs do Blob StoragePossibilidade de criar um Snapshot do VHDCria um cache do Page Blob no Local Store
Usando o Azure Drive – Parte 1 var localStoreCache = RoleEnvironment.GetLocalResource(“LocalStoreCache”);CloudDrive.InitializeCache(localStoreCache.RootPath, localStoreCache.MaximumSizeInMegabytes);
var stringDeConexao = “DefaultEndpointsProtocol=https;AccountName=contaDoBlob;AccountKey=chaveDoBlob”; var contaDeStorage = CloudStorageAccount.Parse(stringDeConexao);var clienteDoBlob = contaDeStorage.CreateCloudBlobClient(); var container = new CloudBlobContainer(“meusvhds”, clienteDoBlob);container.CreateIfNotExist(); var blobDoVHD = container.GetBlobReference(“drive01.vhd”);
Se preparando para usar o Azure Drive• Pegar o caminho do localStore para criar um cache local• Pegar a referência ou a Uri do Page Blob do VHD
Usando o Azure Drive – Parte 2var drive01 = new CloudDrive(blobDoVHD.Uri, contaDeStorage.Credentials);
drive01.Create(1000); //em MB
var caminhoMapeado = drive01.Mount(localStoreCache.MaximumSizeInMegabytes, DriveMountOptions.Force);
var nomeArquivo = “MeuArquivo.txt";var caminhoArquivo = Path.Combine(caminhoMapeado, nomeArquivo);
using (var fileStream = File.Create(caminhoArquivo)){
using (var streamWriter = new StreamWriter(fileStream)){
streamWriter.WriteLine(“Nova linha!”);}
}
drive01.Unmount();
Pontos de Atenção do Azure Drive
Apenas uma instância pode montar o drive em modo escrita por vez
É necessário gerenciar a concorrência através de Leases (igual do Page Blob) e se preparar para retentar caso necessário
Para garantir a persistência dos dados no drive, utilize o método Flush do Stream / Arquivo
Table Storage
O que é o Table Storage?
Em resumo:“É um sistema de tabelas distribuido
acessado via REST ou SDK”
Features do Table Storage
Acessível via REST (HTTP ou HTTPS)Naturalmente interoperável (clientes .NET, Windows Phone, Java, PHP, iPhone, Android, Ajax, Silverlight, Flash e etc)
Baseado em Entidades (lembra LINQ to SQL)Não permite criação de Chaves Estrangeiras (não é um Banco de Dados relacional)As tabelas não possuem um esquema fixo
Uma tabela pode ter entidades com diferentes propriedades
Possui mecanismo de concorrência e transaçãoProjetado para escalar (mecanismo de particionamento intrinseco)
Estrutura do Table Storage
EntidadeTabelaConta
conta
clientes
Name =…
Email = …
Name =…
EMailAdd= …
fotos
Photo ID =…
Date =…
Photo ID =…
Date =…
Usando o Table Storagevar stringDeConexao = “DefaultEndpointsProtocol=https;AccountName=contaDoBlob;AccountKey=chaveDoBlob”; var contaDeStorage = CloudStorageAccount.Parse(stringDeConexao);
Pontos de Atenção do Table Storage
Cada entidade pode ter até 255 propriedades e 1 Mb de tamanhoToda entidade tem que ter uma chave de partição e uma chave de linha (formando uma Chave Única indexada)É fundamental escolher uma boa chave de partição para garantir bom desempenho, transação, escalabilidade e balanceamento de carga
Queue Storage
O que é o Queue Storage?
Em resumo:“É um sistema de fila distribuido
acessado via REST ou SDK”
Features do Queue Storage
Acessível via REST (HTTP ou HTTPS)Naturalmente interoperável (clientes .NET, Windows Phone, Java, PHP, iPhone, Android, Ajax, Silverlight, Flash e etc)
Ideal para comunicação e processamento assíncrono entre aplicações e serviços
Estrutura do Queue Storage
MensagemFilaConta
processamentodepedidos
ID clienteID pedidohttp://…
ID clienteID pedidohttp://…
conta
Usando o Queue Storagevar stringDeConexao = “DefaultEndpointsProtocol=https;AccountName=contaDoBlob;AccountKey=chaveDoBlob”; var contaDeStorage = CloudStorageAccount.Parse(stringDeConexao);
Pontos de Atenção do Queue Storage
Cada mensagem pode ter até 8kb de tamanhoPara tráfegos intensos utilize várias filas e manipule as mensagens em lotesPara garantir a entrega e processamento das mensagens use os passos abaixo
O leitor desenfilera a mensagem e marca-a como invisivel por um período XO leitor apaga a mensagem quando terminar de processá-la
Se o leitor falhar, a mensagem ficará visível para outro leitor processá-la
AppFabric Caching
O que é o AppFabric Caching?
Em resumo:“É um sistema de cache distribuido
acessado via SDK”
Features do AppFabric Caching
Fácil configuração e utilizaçãoAltamente escalável, com baixa latencia e alta taxa de transferência
ASP.Net Providers para Session State e Page Output CachingFaz cache de qualquer objeto .NETSegurança via Access Control
Estrutura do AppFabric Caching
Memória
Rede
Disco
Windows Azure AppFabric Caching (cache local)
Windows Azure AppFabric Caching (cache distribuído)
Storage
Menor latência
Média latência
Maior latência
Usando o Azure AppFabric Cachingvar stringDeConexao = “DefaultEndpointsProtocol=https;AccountName=contaDoBlob;AccountKey=chaveDoBlob”; var contaDeStorage = CloudStorageAccount.Parse(stringDeConexao);
Pontos de Atenção do AppFabric Caching
Utilização para compartilhar sessões do ASP.NET entre mais de uma instânciaAté 8Mb por objeto (serializado) cacheadoAtenção às cotas do cache
MemóriaTransaçõesLargura de bandaConexões concorrentes
Pontos de Atenção do AppFabric Caching
Utilização para compartilhar sessões do ASP.NET entre mais de uma instânciaAté 8Mb por objeto (serializado) cacheadoAtenção às cotas do cache
MemóriaTransaçõesLargura de bandaConexões concorrentes
SQL Azure Praticamente o SQL Server 2008 R2 que você está acostumado a trabalhar
Local Store O “C:\Temp” que cada instância de computação possui
Blob Storage Sistema de arquivos distribuido acessado via REST ou SDK
CDN Sistema de replicação de blobs em servidores mais próximos do usuário final
Azure Drive VHD montado como um drive de rede e persistido num Page Blob
Table Storage Sistema de tabelas distribuido acessado via REST ou SDK
Queue Storage Sistema de fila distribuido acessado via REST ou SDK
AppFabric Caching Sistema de cache distribuido acessado via SDK
Resumão
Conteúdo RelacionadoSite do Windows Azure: http://www.microsoft.com/windowsazure/pt/br/
Centro de Treinamento do Windows Azure no MSDNhttp://msdn.microsoft.com/pt-br/hh292576
Training Kit: http://www.microsoft.com/download/en/details.aspx?id=8396
Exame de certificação: 70-583PRO: Designing and Developing Windows Azure Applicationshttp://www.microsoft.com/learning/en/us/exam.aspx?ID=70-583
Me encontre em: http://vic.ms
Palestras RelacionadasCOS304 | Novidades do Windows Azure AppFabric
COS305 | Migrando uma aplicação para Windows Azure
COS402 | Criando aplicação de alta escala e baixa latência com a plataforma Windows Azure
DBP202 | Conhecendo e Migrando para SQL Azure
QS8 | Migrando uma aplicação para o Windows Azure
Recursos
Recursos para IT Pros
Recursos para Desenvolvedores
http://technet.microsoft.com/pt-br
http://msdn.microsoft.com/pt-br
Getthefreemobileappforyourphone
http://gettag.mobi
Getthefreemobileappforyourphone
http://gettag.mobi
Não esqueça de preencher sua
avaliação onlinewww.teched.com.br/
avaliacao
Getthefreemobileappforyourphone
http://gettag.mobi
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.