- Utilizando o Cloud Run para Servir Arquivos Estáticos - 1
- Postagem de blog sobre como usar o Google Cloud Run para fornecer arquivos estáticos. O foco está em redirecionamento e melhoria de desempenho.
Texto traduzido pela IA.
Resumo do texto pela IA do durumis
- Criamos um sistema CDN que integra o Google Cloud Storage (GCS) com o Cloud Run para gerenciar imagens e recursos da web de forma eficiente e fornecer arquivos otimizados para o ambiente do navegador web.
- As imagens carregadas são convertidas e armazenadas em vários formatos, como webp e avif, e os arquivos de texto são compactados com gzip, br, etc., para fornecer conteúdo otimizado para o usuário.
- O Cloud Storage e o Cloud Run foram implantados em 8 regiões globais para entregar recursos da região mais próxima ao usuário, minimizando a latência e melhorando a experiência do usuário.
Postagem anteriorexplicou a parte sobre o serviço de arquivos estáticos usando o Cloud Run que a Durumis está usando.
No entanto, ao contrário de arquivos como robots.txt ou favicon.ico, arquivos de imagem carregados no blog ou recursos da própria página da web não podem ser tratados simplesmente como arquivos estáticos.
Portanto, esses arquivos devem usar o Cloud Run que está integrado ao Google Cloud Storage (doravante, GCS).
O conceito básico é simples. Os arquivos de imagem carregados em tempo real ou os novos recursos ao atualizar o site são carregados no GCS, e quando uma solicitação externa é feita, o Cloud Run verifica se o arquivo existe no GCS e, se existir, transmite o arquivo.
No entanto, a maneira como ele realmente funciona é muito mais complexa do que isso.
Ao carregar uma imagem no GCS, a Durumis basicamente converte o arquivo de imagem em três formatos.
Quando carregado como jpeg ou png, o arquivo de imagem é convertido em webp e avif e armazenado simultaneamente.
Todos os arquivos de imagem são solicitados por URL sem extensão, e quando uma solicitação é feita, o Cloud Run verifica o cabeçalho do navegador da web que está solicitando e verifica se o navegador da web pode receber avif e webp nessa ordem. Se nenhum dos dois arquivos puder ser recebido, ele será entregue como jpeg ou png. Além da simples conversão de formato, ele também é armazenado e entregue após redimensionamento para o tamanho necessário na página da web.
Diagrama
O mesmo se aplica a arquivos de texto.
Muitos recursos necessários para um site são arquivos de texto, como js e css, além de imagens.
Arquivos js e css também são compactados com gzip e br ao serem carregados, semelhantes a imagens, e o arquivo suportado pelo navegador da web é transmitido como está quando solicitado.
O papel da CDN não se limita apenas ao armazenamento em cache de conteúdo. No Google Cloud Platform (GCP), a funcionalidade Cloud CDN pode ser conectada diretamente ao Google Cloud Load Balancer (GCLB), fornecendo funcionalidades ainda mais poderosas.
O Cloud CDN recebe dados do Backend Service, os armazena em cache e os entrega ao cliente. Durante este processo, o Cloud CDN pode entregar o arquivo otimizado de acordo com o cabeçalho de solicitação do cliente. Isso permite que vários formatos de conteúdo sejam fornecidos para a mesma URL.
Por exemplo, para a mesma URL '/image/tempImage',
- No caso de um arquivo de imagem
- Um formato de imagem diferente é transmitido de acordo com o cabeçalho 'Accept' do navegador.
- O navegador Chrome geralmente mostra a preferência na ordem 'image/avif,image/webp,image/apng'.
- A CDN fornece o formato de imagem possível nesta ordem e, se não for suportado, substitui por jpeg ou png.
- Da mesma forma, no caso de arquivos de texto
- A preferência para o método de compactação também é considerada.
- O navegador Chrome suporta métodos de compactação como 'gzip, deflate, br, zstd'.
- Por exemplo, no serviço Durumis, gzip e br são atualmente suportados, e o arquivo compactado br é transmitido primeiro.
Com esses recursos avançados da CDN, é possível fornecer conteúdo otimizado para o ambiente do usuário, o que pode melhorar significativamente o desempenho e a experiência do usuário do site.
Mesmo que seja o Cloud CDN, como a solicitação de arquivo ainda é necessária do CDN para o Cloud Run, a Durumis usa o método de implantação antecipada do Cloud Storage e Cloud Run em 8 regiões em todo o mundo para implantar os recursos com antecedência e transmiti-los. Portanto, embora haja um leve aumento no custo e na quantidade de trabalho, os usuários podem experimentar uma latência muito melhor.
Mesmo usando o Cloud CDN, os arquivos precisam ser obtidos do servidor de origem (neste caso, Cloud Run). A Durumis está otimizando essa estrutura para fornecer um serviço melhor para usuários globais.
Estratégia de otimização global da Durumis:
- Implante o Cloud Storage e o Cloud Run antecipadamente em 8 regiões ao redor do mundo
- Distribua os recursos necessários em cada região com antecedência
- Transmita os recursos da região mais próxima ao receber uma solicitação do usuário
Este método requer um pequeno aumento de custo e trabalho adicional, mas fornece os seguintes benefícios aos usuários:
- Latência significativamente melhorada
- Tempo de carregamento de conteúdo mais rápido
- Melhoria geral da experiência do usuário
A visualização dessa estrutura é a seguinte:
Por meio dessa estrutura, a Durumis pode fornecer um serviço consistente e rápido para usuários globais. Como o conteúdo é fornecido pela região mais próxima, independentemente da localização do usuário, o serviço pode ser usado com baixa latência em qualquer lugar do mundo.
Essa abordagem requer mais esforço para configuração e manutenção inicial, mas tem a vantagem de melhorar significativamente a experiência do usuário final. Em particular, essa estrutura pode ajudar muito as empresas que fornecem serviços globais a fornecer serviços competitivos.
Nesta história sobre CDN, apenas os conceitos básicos foram examinados.
Na verdade, também poderíamos ter tratado da parte detalhada da configuração, mas como é diferente para cada fornecedor de nuvem (GCP, Azure, AWS) e é um pouco menos interessante, falei sobre a explicação do conceito.
Na próxima oportunidade, trataremos de detalhes mais específicos.
Então, na próxima história, vamos discutir como o Cloud Storage em várias regiões (nós temos 8!) é sincronizado...
Obrigado.