theNet by CLOUDFLARE

Otimizar o desenvolvimento de aplicativos sem servidor

A oportunidade de otimizar o desenvolvimento de aplicativos

Inovações como máquinas virtuais (VMs), contêineres e a nuvem pública melhoraram o desenvolvimento de aplicativos de várias maneiras, mas ainda colocam várias decisões de configuração, manutenção e otimização nos desenvolvedores, e não na tecnologia em si.

Quanto mais essas responsabilidades forem atribuídas aos desenvolvedores, menos tempo eles terão para criar produtos e aplicativos internos.Infelizmente, muitas tecnologias amplamente adotadas sobrecarregam os desenvolvedores com otimização de desempenho, dimensionamento de aplicativos, correções de segurança, balanceamento de carga e muito mais.Essas responsabilidades introduzem o risco de escolhas abaixo do ideal ou erros que podem esgotar os orçamentos ou causar vulnerabilidades e tempo de inatividade.

Esta ineficiência tem consequências graves.De forma alarmante, o tempo que os desenvolvedores gastam em tarefas não relacionadas à codificação custa às organizações mais de US$ 85 bilhões anualmente.

Portanto, remover a complexidade do desenvolvimento de aplicativos pode melhorar a experiência do desenvolvedor e, ao mesmo tempo, economizar uma quantia financeira significativa para as organizações.


A mudança do setor para o sem servidor

A tecnologia sem servidor foi projetada para resolver esses problemas, melhorando especificamente o desenvolvimento de aplicativos ao reduzir a carga imposta aos desenvolvedores.No entanto, nem todas as plataformas sem servidor são iguais.As primeiras iterações de plataformas sem servidor herdaram muitos dos problemas de configuração, escalabilidade e desempenho associados à tecnologia em que foram criadas, contêineres, regiões e a nuvem pública.

Assim, “sem servidor”, como o conhecemos hoje, é muitas vezes uma abstração defeituosa sobre um modelo antigo.

As plataformas sem servidor avançadas vão além desses problemas com várias melhorias arquitetônicas importantes.Essas melhorias eliminam decisões demoradas do processo de desenvolvimento, para que as equipes possam dedicar mais tempo à criação de excelentes produtos e aplicativos.


Criado com base em métodos de desenvolvimento anteriores

Antes do sem servidor, havia as VMs e os contêineres.As VMs são computadores baseados em software que existem no sistema operacional de outro computador e os contêineres são unidades padrão de software que contêm todos os elementos de que um aplicativo precisa para ser executado.

Ambas as tecnologias permitem que os desenvolvedores se concentrem mais em seus aplicativos e menos no gerenciamento do hardware. No entanto, as VMs e os contêineres ainda sobrecarregam os desenvolvedores com tarefas de gerenciamento e configuração que retardam o processo geral de desenvolvimento.

Em graus variados, as VMs e os contêineres exigem que os desenvolvedores e suas equipes parceiras de TI e segurança:

  • Gerenciem correções de segurança e permissões de gerenciamento de identidade e acesso (IAM)

  • Configurem o balanceamento de carga e o trabalho em rede

  • Garantam a disponibilidade e programem a redundância

Os sistemas de orquestração de contêineres, como o Kubernetes, aliviam muitos dos requisitos de configuração associados aos contêineres, incluindo o gerenciamento de escala e redundância.No entanto, as equipes de Operações de Desenvolvedores (DevOps), que se concentram na solução de problemas internos de desenvolvimento em vez de problemas voltados para o cliente, exigem conhecimento de Kubernetes para gerenciá-lo com eficácia.Sem o Kubernetes e uma equipe devidamente treinada, as limitações do contêiner ainda se aplicam.

VMs e contêineres são apenas parte de um todo. Ambas as tecnologias podem ser usadas em nuvem pública, o que por si apresenta limitações.

A nuvem pública ajuda a simplificar vários aspectos do desenvolvimento, mas ainda deixa camadas de configuração para a organização do cliente, como selecionar regiões, gerenciar segurança, projetar soluções de rede e garantir a disponibilidade. A nuvem pública também requer a combinação manual de vários serviços, como bancos de dados, filas de mensagens e armazenamento. Configurar e conectar manualmente esses serviços é demorado, aumentando o tempo geral de implantação.


O desenvolvimento sem servidor de primeira geração apresenta ineficiências

O desenvolvimento sem servidor foi projetado para superar os desafios associados a VMs, contêineres e nuvem pública. Mas os primeiros métodos sem servidor foram apenas parcialmente bem-sucedidos.

Os principais desafios do desenvolvimento sem servidor de primeira geração incluem:

  • Latência e escalabilidade. Muitas dessas plataformas sem servidor operam em nuvem pública, que depende de data centers centralizados para reduzir custos indiretos.Esse modelo exige que os clientes selecionem as regiões de implantação onde seus recursos ficarão localizados fisicamente.A centralização de dados introduz latência porque o código é executado longe dos usuários finais.Além disso, dimensionar e implantar em várias regiões é possível, mas complexo para configurar.

  • Partidas a frio e limitação da CPU. Plataformas sem servidor construídas em contêineres lutam com partidas a frio e limitação da unidade de processamento central (CPU).As partidas a frio são os atrasos de carregamento que ocorrem quando uma função sem servidor é executada pela primeira vez.As partidas a frio acontecem porque os contêineres podem levar vários segundos para aquecer.Por outro lado, a limitação da CPU ocorre quando uma plataforma atinge seu limite designado de instâncias sem servidor e atrasa as solicitações.

  • Experiência ruim para os desenvolvedores. Os desenvolvedores geralmente precisam gerenciar tarefas demoradas, como configurar modelos de orquestração, dimensionar o aplicativo e determinar camadas de memória.Essas tarefas introduzem a possibilidade de erros caros e reduzem a quantidade de tempo que os desenvolvedores gastam codificando, gerando gastos para as organizações ao longo do tempo.

  • Observabilidade limitada. Muitas plataformas de desenvolvimento sem servidor são difíceis de monitorar porque não oferecem observabilidade adequada.Observabilidade é a medida em que uma organização pode entender o que está acontecendo em um sistema distribuído por meio de métricas de desempenho, logs de eventos e muito mais.Sem observabilidade adequada, uma organização não é capaz de diagnosticar e corrigir problemas com eficiência em um aplicativo sem servidor.

  • A natureza sem estado limita a funcionalidade do aplicativo. A primeira geração de plataformas sem servidor é efetivamente sem estado.A natureza sem estado facilita a escalabilidade, mas pode dificultar a criação de aplicativos que exigem consistência forte ou coordenação em tempo real entre vários clientes, como chat interativo, videogames ou ferramentas de edição colaborativa.

  • Custo. Muitas plataformas sem servidor em nuvem estão sujeitas a custos adicionais e muitas vezes ocultos, como taxas de gateway de API ou cobranças para manter os contêineres aquecidos.Como resultado, construir aplicativos com essas plataformas de primeira geração pode ser caro, especialmente em escala.

O objetivo do movimento sem servidor sempre foi facilitar o processo de desenvolvimento de aplicativos, mas as plataformas sem servidor executadas em nuvem pública centralizada não cumprem totalmente essa promessa.


Repensar o sem servidor: como o sem servidor evoluiu

A próxima geração de plataformas de desenvolvimento sem servidor evoluiu muito superando as deficiências das ofertas anteriores. Por não depender de infraestrutura legada, como contêineres e nuvem pública, essas soluções oferecem várias melhorias e fornecem aos desenvolvedores o controle do tempo.

Essas melhorias incluem:

  • Execução na borda da rede. As plataformas sem servidor mais avançadas são executadas na "borda", o que significa uma rede distribuída de muitos data centers.Quanto maior a rede, melhor ela lida com problemas de desempenho e escalabilidade.Isso ocorre porque, nas redes de borda, a computação ocorre no ponto de presença mais próximo do usuário final.Essa abordagem distribuída reduz a latência e é fundamentalmente diferente das regiões centralizadas em nuvem pública.Assim, a implantação de código em uma rede de centenas de data centers oferece melhor desempenho do que uma rede de 20 data centers.As plataformas de borda mais avançadas oferecem longos tempos de execução de CPU para criar cargas de trabalho complexas.

  • Usar isolados em vez de contêineres. Essa abordagem remove os problemas de arquitetura baseada em contêineres, partidas a frio e limitação da CPU, que são caros para mitigar.Ao contrário dos contêineres, os isolados não precisam ser mantidos aquecidos, portanto partidas a frio não são um problema.Os isolados também consomem menos memória, reduzindo a sobrecarga e os problemas de limitação da CPU.

  • Menos decisões antecipadas. Algumas plataformas sem servidor de borda mais recentes otimizam automaticamente os aplicativos para desempenho e segurança.As soluções com redes de borda globais também não exigem que os desenvolvedores escolham regiões para hospedar sua carga de trabalho, pois implantam o código em todos os data centers de sua rede.A remoção dessas tarefas tediosas melhora a experiência do desenvolvedor.

  • Análise de dados e log detalhados. Enquanto as plataformas sem servidor anteriores não forneciam muita análise de dados, depuração ou funcionalidade de log, as plataformas avançadas sem servidor oferecem maior capacidade de observação.A análise de dados detalhada e o log tornam mais fácil para as equipes de desenvolvimento reunir as informações necessárias para solucionar problemas.Além disso, algumas plataformas se integram a ferramentas de monitoramento mais sofisticadas, que podem ser exigidas por aplicativos mais complexos.

  • Coordenação e armazenamento integrados. Esse recurso possibilita a arquitetura stateful com o sem servidor.A arquitetura stateful requer armazenamento de dados consistente, ao contrário dos aplicativos stateless, nos quais os dados são transitórios.Não é possível criar aplicativos interativos em tempo real sem uma arquitetura stateful.

  • Custo-benefício. As plataformas leves sem servidor de borda baseadas em isolamento custam menos em comparação com seus predecessores baseados em contêiner.A arquitetura isolada traz todos os benefícios de escalabilidade e flexibilidade associados à nuvem, mas sem taxas ocultas e picos de custo.

Com essas melhorias, as plataformas sem servidor de próxima geração otimizam o processo geral de desenvolvimento de aplicativos; eliminando tarefas tediosas e permitindo o foco dos desenvolvedores enquanto oferece economia de custos para a organização.


Otimizar o desenvolvimento de aplicativos com o Workers

A plataforma sem servidor certa remove as limitações de escalabilidade enquanto alivia os desenvolvedores e melhora a eficiência geral do processo de desenvolvimento de aplicativos. O Cloudflare Workers é uma plataforma sem servidor baseada em borda que usa infraestrutura inteligente para aliviar os desenvolvedores de muitas decisões antecipadas.Graças à infraestrutura da Cloudflare, os aplicativos criados no Workers são sempre otimizados para segurança, desempenho e confiabilidade.

A escalabilidade nunca é um problema, pois o Workers é executado na rede global da Cloudflare, que abrange mais de 320 cidades em mais de 120 países. O código é implantado automaticamente em todas as regiões, sem custo adicional ou necessidade de configuração. As equipes de desenvolvimento podem criar aplicativos avançados na borda, que exigem longos tempos de execução da CPU usando o Workers Unbound. Como a plataforma do Workers é executada em isolados em vez de contêineres, não há partidas a frio ou limitação da CPU. O Workers oferece capacidade de observação integrada e se integra a ferramentas de monitoramento mais avançadas, como New Relic e Sentry, além de ferramentas de depuração e log disponíveis por meio da interface de linha de comando (CLI) do Workers. O Durable Objects fornece à plataforma Workers coordenação de baixa latência e armazenamento consistente, tornando realidade os aplicativos stateful sem servidor. Ao mesmo tempo, o Workers economiza o dinheiro dos clientes removendo taxas ocultas e oferecendo preços líderes do setor.

O Workers permite que as equipes de desenvolvimento se concentrem na criação de produtos em vez de manutenção e configuração, melhorando a experiência dos desenvolvedores e beneficiando a empresa financeiramente ao longo do tempo.

Este artigo é parte de uma série sobre as tendências e os assuntos mais recentes que influenciam os tomadores de decisões de tecnologia hoje em dia.


Principais conclusões

Após ler este artigo, você entenderá:

  • O que está em jogo em uma arquitetura de desenvolvimento ineficiente

  • Como os métodos de desenvolvimento evoluíram nos levando à computação sem servidor

  • Como as primeiras iterações computação sem servidor falharam em simplificar o desenvolvimento de aplicativos

  • As principais diferenças na computação sem servidor de próxima geração


Recursos relacionados



Saiba mais sobre esse assunto

Saiba mais sobre plataformas sem servidor, como o relatório sobre o Workers em The Forrester New Wave: Function-as-a-Service Platforms.

Receba um resumo mensal das informações mais populares da internet.