Este é o sexto texto de uma série de artigos que tenho escrito aqui mesmo no site sobre a plataforma Windows Azure. A ideia desta série é cobrir todos os principais aspectos relacionados à plataforma, desde a parte conceitual até exemplos práticos. Se você está chegando agora para a série, recomendo também fortemente realizar a leitura dos artigos anteriores. A série completa pode ser encontrada seguindo este link.
Uma das características mais buscadas por aplicações web de grande porte é “performance”. Neste sentido, as aplicações recorrem à diversas metodologias e tecnologias para alcançar este objetivo. Algumas metodologias/tecnologias utilizadas adotadas são:
- Cache distribuído;
- Minificação de arquivos CSS e Javascript;
- Utilização do mínimo de imagens possível;
- Servidores com maior capacidade de processamento;
- Desligar consultas de DNS reverso no servidor web;
- Indexação das tabelas no banco de dados;
- Otimizar consultas de bancos de dados através das análises de planos de execução;
- Dentre outros;
No texto de hoje, apresentarei um recurso importante dentro da plataforma Azure que possui justamente o objetivo de incrementar a performance das aplicações sob o ponto de vista de armazenamento e requisição de arquivos – o Windows Azure Content Delivery Network (CDN).
Content Delivery Network
Content Delivery Network é o nome dado há um grupo de servidores distribuídos ao redor do mundo dedicados exclusivamente a entrega de conteúdos diversos. Estes servidores possuem duas características fundamentais: alta disponibilidade e performance, entregando ao usuário final os conteúdos aos quais foram designados com mais agilidade. A Figura 1 apresenta um modelo generalista para a implementação de CDN.
Figura 1. O modelo de computação implementado por CDN
Através da Figura 1 é muito simples entender o modelo de computação proposto pelo CDN. Os passos a seguir descrevem este processo:
-
O usuário final utiliza o navegador (por exemplo) para requerer determinado conteúdo.
-
A aplicação que utiliza CDN propositalmente busca o conteúdo solicitado no nó mais próximo.
-
Se o conteúdo estiver disponível, o valor já é automaticamente retornado para o usuário final.
-
Se o conteúdo não estiver diponível no CDN, a aplicação carrega o conteúdo no source original, coloca uma cópia no CDN e devolve a resposta para o usuário final.
-
A partir da próxima requisição ao conteúdo recém baixado, a resposta devolvida será o conteúdo residente no CDN.
O incremento de performance proporcionado pelo mecanismo de CDN é fácil de ser notado. Como o nó CDN pode ser configurado o mais próximo possível da aplicação consumidora e, como estes servidores fazem apenas o trabalho de “cachear” os conteúdos, evidentemente que o retorno dos mesmos para o usuário final é bem mais rápido.
O CDN do Windows Azure
Windows Azure oferece um ambiente robusto e altamente disponível para implementação de CDN. Todas as características instrínsecas ao modelo PaaS são válidas para o modelo de CDN disponibilizado pela plataforma.
O Windows Azure oferece 18 localidades (por enquanto) com nós ativos de CDN. Estes locais encontram-se estrategicamente distribuídos por diversos continentes ao redor do globo: Estados Unidos, Europa, Ásia, América do Sul, Oceania, etc., basta escolher aquele que mais próximo da aplicação destino. No Brasil, Windows Azure disponibiliza um nó de CDN, a saber, em São Paulo.
O mecanismo de CDN proporcionado pela Microsoft através do Windows Azure possui uma característica especial: ele é dedicado à entrega de conteúdos armazenados em blobs. Assim, ao acessar o portal de gerenciamento da plataforma Azure e habilitar o recurso de CDN, você estará habilitando um nó do Windows Azure a entregar conteúdos de sua área de armazenamento.
A Figura 2 apresenta o modelo CDN disponibilizado pelo Windows Azure.
Figura 2. O modelo de CDN disponibilizado pelo Windows Azure
Ao habilitar a utilização de CDN para sua assinatura de Windows Azure, uma URL no formato apresentado abaixo será liberada.
http:/ /<guid>.vo.msecnd.net/
A porção em negrito da URL acima, como é possível notar, refere-se a um elemento identificador. A URL está expressa desta forma por um motivo: o valor a ser adicionado em <guid> é um valor identificador único gerado pela própria plataforma no momento da habilitação do recurso.
Outra URL que é de fundamental importância ter em mente para compreender em detalhes o funcionamento do mecanismo de CDN do Windows Azure, é aquela gerada para blobs. O padrão deste tipo de URL é apresentado abaixo. A porção realmente importante a ser observada em relação a esta URL é “<container>”, que refere-se ao container associado ao blob que possui os arquivos.
http://<account>.blob.core.windows.net/<container>
Assim, utilizando as duas informações, chegamos a um exemplo imaginário de URL de acesso para CDN (imaginando um container chamado “images”):
http://aux89skshjk29was.vo.msecnd.net/images
Essa URL deve ser informada a aplicação que deverá solicitar o recurso. Ao fazer desta forma, o Windows Azure saberá que, antes de buscar o conteúdo solicitado no blob, ele deverá verificar se o mesmo encontra-se disponível no CDN. Se estiver, ele já retorna o resultado para a aplicação, senão, busca o recurso solicitado no blob.
Características adicionais
Existem algumas características intrínsecas ao modelo de CDN do Windows Azure. A seguir apresento alguns delas:
-
Time-To-Live (TTL): todo conteúdo hospedado nos nós CDN, lá ficam residentes por um período específico de tempo. Este período de tempo é conhecido como TTL. Este parâmetro pode ser definido por você programaticamente (via HTTP REST ou através da API do Windows Azure). Se nenhum TTL for informado, a plataforma Azure utilizará o tempo padrão (72 horas).
-
Registro de domínio para acesso ao CDN: Windows Azure permite que você registre um domínio de acesso ao serviço ao invés de utilizar a URL padrão gerada pela plataforma. Assim, ao invés de utilizar http://aux89skshjk29was.vo.msecnd.net/ images, por exemplo, você poderia utilizar http://meucdn.fabriciosanchez.com/images.
-
Recomendação: a Microsoft recomenda que os blobs “cacheados” em nós de CDN possuam no máximo 10 GB (para obter melhor performance) de tamanho.
-
Acesso ao CDN: o acesso ao CDN somente pode ser realizado de forma anônima via HTTP. HTTPS não é suportado.
-
Domínios únicos: cada domínio personalizado pode estar associado a um único endpoint. Desta forma, o domínio http://meucdn.fabriciosanchez.com/ não pode ser utilizado para um segundo endpoint. O que é possível fazer (se desejar manter um padrão de URLs registradas) é criar overlaps. Assim, seria possível criar uma nova URL no seguinte formato: http://brasil.meucdn.fabriciosanchez.com/.
Conclusão
Windows Azure Content Delivery é uma forma interessante para incrementar a performance de aplicações. Ele permite agilizar o processo de entregra de conteúdos hospedados em blobs, diminuindo o tempo de resposta das aplicações.
Por hoje era isso. Um forte abraço e até o próximo post.
Pingback: Windows Azure ROI: Entenda o que sua empresa ganha com PaaS – Fabrício Sanchez