Editar

Documentação de orientação da CDN

Azure Storage
Azure Blob Storage

As redes de entrega de conteúdos (CDN) são redes distribuídas de servidores que podem entregar, de forma eficiente, conteúdos da Web aos utilizadores. As CDNs armazenam conteúdo em cache em servidores edge próximos dos utilizadores finais para minimizar a latência.

Geralmente, as CDNs são utilizadas para entregar conteúdos estáticos, como imagens, folhas de estilo, documentos, scripts do lado do cliente e páginas HTML. As principais vantagens da utilização de uma CDN são menor latência e entrega mais rápida de conteúdos aos utilizadores, independentemente da respetiva localização geográfica em relação ao centro de dados em que a aplicação está alojada. As CDNs também podem ajudar a reduzir a carga numa aplicação Web, porque a aplicação não tem de processar pedidos para os conteúdos que estão alojados na CDN.

Diagrama da CDN

No Azure, a Rede de Entrega de Conteúdos do Azure é uma solução de CDN global para a entrega de conteúdos de largura de banda elevada que estão alojados no Azure ou em qualquer outra localização. Com a CDN do Azure, pode colocar em cache objetos disponíveis publicamente que foram carregados a partir do armazenamento de blobs do Azure, de uma aplicação Web, de uma máquina virtual e de um servidor Web acessível publicamente.

Este tópico descreve algumas melhores práticas e considerações para utilizar CDNs. Para obter mais informações, veja CDN do Azure.

Como e porquê utilizar uma CDN

As utilizações típicas de uma CDN incluem:

  • Entregar recursos estáticos para aplicações cliente, muitas vezes a partir de um site. Esses recursos podem ser imagens, folhas de estilo, documentos, ficheiros, scripts do lado do cliente, páginas HTML, fragmentos HTML ou qualquer outro conteúdo que o servidor não tem de modificar para cada pedido. A aplicação pode criar itens no tempo de execução e disponibilizá-los à CDN (por exemplo, ao criar uma lista de manchetes de notícias atuais), mas não o faz para cada pedido.

  • Entregar conteúdos estáticos e partilhados públicos a dispositivos, como telemóveis e computadores tablet. A aplicação em si é um serviço Web que oferece uma API para os clientes em execução nos diversos dispositivos. A CDN também pode entregar conjuntos de dados estáticos (através do serviço Web) para os clientes utilizarem, talvez para gerar a IU do cliente. Por exemplo, a CDN pode ser utilizada para distribuir documentos JSON ou XML.

  • Disponibilizar sites inteiros que consistem apenas em conteúdos estáticos públicos aos clientes, sem exigir recursos de computação dedicados.

  • Transmitir ficheiros de vídeo em fluxo ao cliente a pedido. Os vídeos beneficiam da baixa latência e da conectividade fiável que estão disponíveis com os datacenters localizados em todo o mundo que oferecem as ligações à CDN. Os Serviços de Multimédia do Microsoft Azure (AMS) integram-se na CDN do Azure para entregar conteúdos diretamente à CDN, para posterior distribuição. Para obter mais informações, veja Streaming endpoints overview (Descrição geral dos pontos finais de transmissão em fluxo).

  • Melhorar, de uma forma geral, a experiência para os utilizadores, especialmente daqueles que estão localizados longe do datacenter que aloja a aplicação. Caso contrário, estes utilizadores poderão experienciar uma latência mais alta. Muitas vezes, uma grande proporção do tamanho total do conteúdo numa aplicação Web é estática e a utilização da CDN pode ajudar a manter o desempenho e a experiência geral do utilizador ao mesmo tempo que elimina o requisito de implementação da aplicação em vários datacenters. Para obter uma lista das localizações de nós da CDN do Azure, veja Azure CDN POP Locations (Localizações POP da CND do Azure).

  • Suportar soluções de IoT (Internet das Coisas). O grande número de dispositivos e aplicações envolvidos numa solução de IoT podem facilmente sobrecarregar uma aplicação, se esta tiver de distribuir atualizações de firmware diretamente a cada dispositivo.

  • Lidar com picos e aumentos na procura sem exigir que a aplicação seja dimensionada, evitando o consequente aumento dos custos de execução. Por exemplo, quando for lançada uma atualização a um sistema operativo para um dispositivo de hardware, como um modelo específico do router, ou para um dispositivo de consumidor, como uma televisão inteligente, haverá um pico enorme na procura, pois será transferida por milhões de utilizadores e dispositivos durante um curto espaço de tempo.

Desafios

É preciso ter em conta vários desafios ao planear a utilização de uma CDN.

  • Implementação. Decida a origem a partir da qual a CDN vai obter os conteúdos e se tem de implementá-los em mais de um sistema de armazenamento. Tenha em consideração o processo de implementação de conteúdos estáticos e de recursos. Por exemplo, poderá ter de implementar um passo separado para carregar conteúdos para o armazenamento de blobs do Azure.

  • Controlo de versões e controlo da cache. Considere como vai atualizar os conteúdos estáticos e implementar novas versões. Compreenda de que forma é que a CDN faz a colocação em cache e o TTL (Time-to-Live). Relativamente à CDN do Azure, veja How caching works (Como funciona a colocação em cache).

  • A testar. Pode ser difícil realizar testes locais das suas definições da CDN ao desenvolver e testar uma aplicação localmente ou num ambiente de teste.

  • Otimização dos motores de busca (SEO). Quando utiliza a CDN, determinados conteúdos, como imagens e documentos, são disponibilizados a partir de um domínio diferente. Isto pode ter um efeito no SEO desses conteúdos.

  • Segurança dos conteúdos. Nem todas as CDNs oferecem uma forma de controlo de acesso aos conteúdos. Alguns serviços de CDNs, incluindo a CDN do Azure, suportam a autenticação baseada em tokens para proteger os conteúdo das mesmas. Para obter mais informações, veja Securing Azure Content Delivery Network assets with token authentication (Proteger recursos da Rede de Entrega de Conteúdos do Azure com a autenticação de tokens).

  • Segurança dos clientes. Os clientes podem ligar-se a partir de um ambiente que não permite acesso aos recursos na CDN. Pode ser um ambiente com restrições de segurança que limite o acesso a apenas um conjunto de origens conhecidas ou que impeça o carregamento de recursos a partir de qualquer outro local que não a origem da página. Para lidar com estes casos, é necessária uma implementação de contingência.

  • Resiliência. A CDN é um potencial ponto único de falha de uma aplicação.

Os cenários em que uma CDN pode ser menos útil incluem:

  • Se os conteúdos tiverem uma taxa de ocorrências baixa, só se pode aceder aos mesmos poucas vezes enquanto é válido (determinado pelas respetivas definições de TTL).

  • Se os dados forem privados, como, por exemplo, em empresas grandes ou em ecossistemas de redes de distribuição.

Orientações gerais e boas práticas

Utilizar uma CDN é uma boa forma a minimizar a carga na sua aplicação e maximizar a disponibilidade e desempenho. Considere adotar esta estratégia para todos os conteúdos e recursos adequados que a sua aplicação utiliza. Quando desenhar a estratégia para utilizar uma CDN, considere os pontos das secções seguintes.

Implementação

Poderá ser necessário aprovisionar e implementar os conteúdos estáticos de forma independente da aplicação se não os incluir no pacote de implementação ou no processo da aplicação. Determine como é que isto afeta a abordagem de controlo de versões que utiliza para gerir os componentes da aplicação e os conteúdos de recursos estáticos.

Considere utilizar técnicas de agrupamento e minimização para reduzir os tempos de carregamento para os clientes. O agrupamento combina vários ficheiros num único. A minimização remove carateres desnecessários dos scripts e dos ficheiros CSS sem alterar a funcionalidade.

Se precisar de implementar os conteúdos numa localização adicional, esse será um passo adicional no processo de implementação. Se a aplicação atualizar os conteúdos da CDN, talvez em intervalos regulares ou como resposta a eventos, tem de armazenar os conteúdos atualizados nas localizações adicionais, bem como no ponto final da CDN.

Considere de que forma vai processar o desenvolvimento local e os testes quando se esperar que sejam disponibilizados conteúdos estáticos a partir de uma CDN. Por exemplo, pode pré-configurar o conteúdo para a CDN como parte do script de compilação. Em alternativa, utilize diretivas de compilação ou sinalizadores para controlar a forma como a aplicação carrega os recursos. Por exemplo, no modo de depuração, a aplicação poderia carregar os recursos estáticos a partir de uma pasta local. No modo de versão, a aplicação utilizaria a CDN.

Considere as opções de compressão de ficheiros, como gzip (GNU zip). A compressão pode ser realizada no servidor de origem, por parte do alojamento da aplicação Web, ou diretamente nos servidores edge, por parte da CDN. Para obter mais informações, veja Improve performance by compressing files in Azure CDN (Comprimir ficheiros na CDN do Azure para melhorar o desempenho).

Encaminhamento e controlo de versões

Poderá ter de utilizar diferentes instâncias da CDN em momentos diferentes. Por exemplo, quando implementar uma versão nova da aplicação, poderá querer utilizar uma CDN nova e manter a antiga (que contém conteúdos num formato mais antigo) para versões anteriores. Se utilizar o armazenamento de blobs do Azure como a origem dos conteúdos, pode criar uma conta de armazenamento ou um contentor em separado e apontar o ponto final da CND para o mesmo.

Não utilize a cadeia de consulta para indicar versões diferentes da aplicação em ligações para recursos na CDN, uma vez que, ao obter conteúdos do armazenamento de blobs do Azure, a cadeia de consulta faz parte do nome do recurso (o nome do blob). Esta abordagem também pode afetar a forma como o cliente coloca os recursos em cache.

Implementar versões novas de conteúdos estáticos quando atualiza uma aplicação pode ser desafiante se os recursos anteriores estiverem colocados em cache na CDN. Para obter mais informações, veja a secção sobre o controlo de cache, abaixo.

Considere restringir o acesso ao conteúdo da CDN por país/região. A CDN do Azure permite-lhe filtrar pedidos com base no país ou região de origem e restringir o conteúdo fornecido. Para obter mais informações, consulte Restringir o acesso aos seus conteúdos por país/região.

Controlo de cache

Considere como gerir a colocação em cache no sistema. Por exemplo, na CDN do Azure, pode definir regras globais de colocação em cache e, em seguida, definir a colocação em cache personalizada para pontos finais de origem específicos. Também pode controlar a forma como a colocação em cache é realizada numa CDN ao enviar cabeçalhos de diretivas de cache na origem.

Para obter mais informações, veja How caching works (Como funciona a colocação em cache).

Para impedir que os objetos estejam disponíveis na CDN, pode eliminá-los da origem, remover ou eliminar o ponto final da CDN ou, no caso do armazenamento de blobs, tornar o contentor ou blob privado. No entanto, os itens não são removidos da CDN até que o time-to-live expire. Também pode remover manualmente o ponto final das CDNs.

Segurança

A CDN pode entregar os conteúdos através de HTTPS (SSL) mediante a utilização do certificado fornecido pela CDN, bem como através de HTTP padrão. Para evitar avisos de browser sobre conteúdos mistos, poderá ter de utilizar HTTPS para pedir conteúdos estáticos que são apresentados nas páginas carregadas através de HTTPS.

Se utilizar a CDN para entregar recursos estáticos, como ficheiros de tipos de letra, poderá deparar-se com problemas de políticas de mesma origem se utilizar uma chamada XMLHttpRequest para pedir esses recursos a partir de um domínio diferente. Muitos browsers impedem a partilha de recursos de várias origens (CORS), a menos que o servidor Web esteja configurado para definir os cabeçalhos de resposta adequados. Pode configurar a CDN para suportar CORS com um dos métodos abaixo:

Contingência da CDN

Considere de que forma é que a aplicação vai lidar com uma falha ou indisponibilidade temporária da CDN. As aplicações cliente poderão utilizar cópias dos recursos que foram colocados em cache localmente (no cliente) durante os pedidos anteriores ou pode incluir código que detete a falha e, em vez disso, pede os recursos a partir da origem (a pasta da aplicação ou o contentor de blobs do Azure que contém os recursos) se a CDN não estiver disponível.