Assine para receber notificações de novos posts:

O Smart Placement acelera os aplicativos movendo o código para perto do seu back-end. Nenhuma configuração é necessária

2023-05-16

5 min. de leitura
Este post também está disponível em English, 繁體中文, 日本語, 한국어, Español, Рyсский e 简体中文.
Smart Placement speeds up applications by moving code close to your backend — no config needed

Todos nós já passamos pela frustração de carregar sites com lentidão ou de um aplicativo que parece travar quando precisa chamar uma API para uma atualização. Qualquer coisa que não seja instantânea e sua mente vaga para outra coisa...

Uma maneira de acelerar as coisas é trazer os recursos para o mais perto possível do usuário. É isso que a Cloudflare tem feito com a computação, executando em milissegundos da maior parte da população mundial. Mas, por mais contraintuitivo que possa parecer, às vezes trazer a computação para mais perto do usuário pode realmente desacelerar os aplicativos. Se seu aplicativo precisa se conectar a APIs, bancos de dados ou outros recursos que não estejam localizados perto do usuário final, pode ser melhor executar o aplicativo perto dos recursos em vez de do usuário.

Assim, hoje temos o prazer de anunciar o Smart Placement for Workers e o Pages Functions, que tornam todas as interações o mais rápidas possíveis. Com o Smart Placement, a Cloudflare leva a computação sem servidor para a Supercloud, movendo os recursos de computação para locais ideais para acelerar os aplicativos. A melhor parte é que é totalmente automático, sem a necessidade de nenhuma entrada extra (como a temida "região").

O Smart Placement já está disponível, em beta aberto, para todos os clientes do Workers e do Pages.

Confira nossa demonstração sobre como o Smart Placement funciona.

A mudança para o sem servidor

A rede anycast da Cloudflare foi criada para processar solicitações instantaneamente e próximo ao usuário. Como desenvolvedores, é isso que torna o Cloudflare Workers, nossa oferta de computação sem servidor tão atraente. Os concorrentes são limitados por "regiões", enquanto o Workers funciona em todos os lugares, portanto, temos uma região: a Terra. As solicitações tratadas inteiramente pelo Workers podem ser processadas ali mesmo, sem precisar atingir um servidor de origem.

Embora esse conceito de sem servidor tenha sido originalmente considerado para tarefas leves, a computação sem servidor vem passando por uma mudança nos últimos anos. Está sendo usada para substituir a arquitetura tradicional, que depende de servidores de origem e de uma infraestrutura autogerenciada, ao invés de simplesmente aumentá-la. Estamos vendo cada vez mais casos desses com usuários do Workers e do Pages.

O sem servidor precisa de estado

Com a mudança para sem servidor e a criação aplicativos inteiros no Workers, surge a necessidade de dados. O armazenamento de informações sobre ações ou eventos anteriores permite criar aplicativos interativos personalizados. Digamos que você precise criar perfis de usuário, armazenar em qual página um usuário parou, quais SKUs um usuário tem em seu carrinho tudo isso é mapeado para pontos de dados usados para manter o estado. Serviços de back-end como bancos de dados relacionais, armazenamentos de chave-valor, armazenamento de blobs e APIs permitem criar aplicativos com estado.

Computação + armazenamento da Cloudflare: uma dupla poderosa

Temos nosso próprio pacote crescente de ofertas de armazenamento: Workers KV, Durable Objects, D1, R2. À medida que amadurecemos nossos produtos de dados, pensamos profundamente em suas interações com o Workers, para que você não precise fazer isso. Por exemplo, outra abordagem que tem melhor desempenho em alguns casos é mover o armazenamento, em vez de a computação, para perto dos usuários. Se você estiver usando o Durable Objects para criar um jogo em tempo real, podemos mover o Durable Objects para minimizar a latência para todos os usuários.

Nosso objetivo para o estado futuro é que você defina modo = "inteligente" e nós avaliamos o posicionamento ideal de todos os seus recursos sem a necessidade de configuração adicional.

Cloudflare + US${backendService}

Hoje, o principal caso de uso do Smart Placement é quando você usa serviços que não são da Cloudflare, como bancos de dados externos ou APIs de terceiros para seus aplicativos.

Muitos serviços de back-end, sejam serviços auto-hospedados ou gerenciados, são centralizados, o que significa que os dados são armazenados e gerenciados em um único local. Seus usuários são globais e o Workers é global, mas seu back-end é centralizado.

Se seu código faz várias solicitações aos seus serviços de back-end, elas podem cruzar o mundo várias vezes, causando um grande impacto no desempenho. Alguns serviços oferecem replicação de dados e armazenamento em cache, o que ajuda a melhorar o desempenho, mas também apresenta compensações, como consistência de dados e custos mais altos, que devem ser ponderados em relação ao seu caso de uso.

A map of the globe illustrating global users, global workers and a centralized database.

A rede da Cloudflare está a cerca de 50 ms de 95% da população mundial conectada. Invertendo isso, também estamos muito próximos dos seus serviços de back-end.

O desempenho do aplicativo é a experiência do usuário

Vamos entender como mover a computação para perto dos serviços de back-end pode diminuir a latência do aplicativo analisando um exemplo:

Digamos que você tenha um usuário em Sydney, Austrália, que está acessando um aplicativo em execução no Workers. Esta aplicativo faz três viagens de ida e volta a um banco de dados localizado em Frankfurt, na Alemanha, para atender à solicitação do usuário.

Intuitivamente, você pode adivinhar que o gargalo será o tempo que o Worker leva para realizar várias viagens de ida e volta ao seu banco de dados. Em vez de o Worker ser invocado perto do usuário, o que aconteceria se ele fosse invocado em um data center mais próximo do banco de dados?

Vamos testar isso.

Medimos a duração de uma solicitação do Worker sem o Smart Placement e a comparamos com uma com o Smart Placement ativado. Para ambos os testes, enviamos 3.500 solicitações de Sydney para um Worker que faz três viagens de ida e volta para uma instância Upstash (nível gratuito) localizada em eu-central-1 (Frankfurt).

A graph showing request duration with and without Smart Placement enabled.

Os resultados são claros. Nesse exemplo, mover o Worker para perto do back-end melhorou o desempenho do aplicativo de 4 a 8 vezes.

As decisões de rede não devem ser decisões humanas

Como desenvolvedor, você deve se concentrar no que faz de melhor, criar aplicativos, sem precisar se preocupar com as decisões de rede que tornam seu aplicativo mais rápido.

A Cloudflare tem um ponto de vista privilegiado: nossa rede reúne inteligência em torno dos caminhos ideais entre usuários, data centers da Cloudflare e servidores de back-end temos muita experiência nessa área com o Argo Smart Routing. O Smart Placement leva esses fatores em consideração para colocar automaticamente seu Worker no melhor local para minimizar a duração geral da solicitação.

Então, como funciona o Smart Placement?

O Smart Placement pode ser habilitado para cada Worker na guia "Configurações" ou no seu arquivo wrangler.toml:

[placement]
mode = "smart"

Depois de ativar o Smart Placement no seu Worker ou no Pages Function, o algoritmo do Smart Placement analisa as solicitações de busca (também conhecidas como subsolicitações) que o Worker está fazendo em tempo real. Em seguida, ele as compara com os dados de latência agregados pela nossa rede. Se detectarmos que, em média, seu Worker faz mais de uma subsolicitação a um recurso de back-end, seu Worker será invocado automaticamente a partir do data center ideal .

Existem alguns serviços de back-end que, por um bom motivo, não são considerados pelo algoritmo do Smart Placement:

  • Serviços distribuídos globalmente: se os serviços com os quais seu Worker se comunica estiverem distribuídos geograficamente em muitas regiões, o Smart Placement não será uma boa opção. Nós os excluímos automaticamente da otimização do Smart Placement.

  • Analytics ou serviços de logging: as solicitações de analytics ou serviços de logging não precisam estar no caminho crítico do seu aplicativo. WaitUntil() deve ser usado para que a resposta aos usuários não seja bloqueada ao instrumentar seu código. Como o WaitUntil() não afeta a duração da solicitação do ponto de vista do usuário, eliminamos automaticamente os serviços de analytics/logging da otimização do Smart Placement.

Consulte nossa documentação para obter uma lista de serviços não considerados pelo algoritmo do Smart Placement.

Assim que o Smart Placement for ativado, você poderá ver uma nova guia "Duração da solicitação" no seu Worker. Encaminhamos 1% das solicitações sem o Smart Placement ativado para que você possa observar o impacto na duração da solicitação.

Request duration with and without Smart Placement shown on the Workers dashboard.

E sim, é realmente fácil assim.

Experimente o Smart Placement verificando nossa demonstração (é muito divertido brincar com ele). Para saber mais, visite nossa documentação para desenvolvedores.

O que vem a seguir no Smart Placement?

Estamos apenas no começo! Temos muitas ideias sobre como podemos melhorar o Smart Placement:

  • Suporte para calcular a localização ideal quando o aplicativo usa vários back-ends

  • Posicionamento ajustado (por exemplo, se o Worker usa vários back-ends, dependendo do caminho Calculamos o posicionamento ideal por caminho em vez de por Worker)

  • Suporte para conexões baseadas em TCP

Queremos ouvir a sua opinião. Se você tiver comentários ou solicitações de recursos, entre em contato pelo Discord para desenvolvedores da Cloudflare.

Assistir na Cloudflare TV

Protegemos redes corporativas inteiras, ajudamos os clientes a criarem aplicativos em escala de internet com eficiência, aceleramos qualquer site ou aplicativo de internet, evitamos os ataques de DDoS, mantemos os invasores afastados e podemos ajudar você em sua jornada rumo ao Zero Trust.

Acesse 1.1.1.1 a partir de qualquer dispositivo para começar a usar nosso aplicativo gratuito que torna sua internet mais rápida e mais segura.

Para saber mais sobre nossa missão de construir uma internet melhor, comece aqui. Se estiver procurando uma nova carreira para trilhar, confira nossas vagas disponíveis.
Developer WeekCloudflare WorkersServerlessDatabaseDesenvolvedoresDeveloper Platform

Seguir no X

Michael Hart|@hichaelmart
Tanushree Sharma|@_tanushreeeee
Cloudflare|@cloudflare

Posts relacionados

31 de outubro de 2024 às 13:00

Moving Baselime from AWS to Cloudflare: simpler architecture, improved performance, over 80% lower cloud costs

Post-acquisition, we migrated Baselime from AWS to the Cloudflare Developer Platform and in the process, we improved query times, simplified data ingestion, and now handle far more events, all while cutting costs. Here’s how we built a modern, high-performing observability platform on Cloudflare’s network....