Do Cloud ao Edge: a mudança de paradigma em busca de uma computação sustentável

joão narciso
aziontechbr
Published in
24 min readSep 21, 2023

--

Em um mundo cada vez mais conectado, a forma como hospedamos, gerenciamos e interagimos com aplicativos e dados está em constante evolução.

A computação em nuvem, uma vez considerada a fronteira da inovação, está agora dando lugar a um novo paradigma: a computação de borda, ou edge computing.

Este texto tem como objetivo explorar essa mudança de paradigma, focando em como ela impacta desenvolvedores e criadores de produtos.

Além disso, discutiremos como a computação de borda pode ser uma alternativa mais sustentável, tanto em termos de eficiência energética quanto de alocação de recursos.

Uma breve história da hospedagem de aplicativos

(se você já tem experiência na área, pode pular essa contextualização)

Antes do cloud

Antes da ascensão da computação em nuvem, o cenário de hospedagem de aplicativos era dominado por servidores físicos e data centers locais ou remotos. Empresas grandes e pequenas, investiam pesadamente na aquisição e manutenção de infraestrutura de TI própria. Este modelo, conhecido como “on-premises”, exigia não apenas um investimento inicial significativo em hardware, mas também custos operacionais contínuos para manutenção, atualizações e segurança.

A necessidade de manutenção constante era uma das maiores limitações desse modelo. Os servidores precisavam ser atualizados regularmente para acomodar novas versões de software e corrigir vulnerabilidades de segurança. Além disso, a refrigeração e a alimentação elétrica dos servidores eram preocupações constantes, dada a quantidade significativa de energia que esses sistemas consumiam.

A escalabilidade era outro desafio crítico. Se uma empresa passasse por um crescimento rápido, a infraestrutura de TI existente poderia se tornar rapidamente inadequada, exigindo mais investimentos em hardware e espaço físico – com valores nem sempre dentro de orçamentos planejados. Isso não apenas aumentava os custos, mas também prolongava o tempo necessário para lançar novos serviços ou atualizações, afetando a competitividade da empresa.

Em resumo, o modelo de hospedagem “on-premises” era caro, trabalhoso e pouco flexível, tornando difícil para as empresas se adaptarem rapidamente às mudanças nas demandas do mercado ou aproveitar novas oportunidades tecnológicas.

Características

  • Dependência de servidores físicos e data centers locais.
  • Necessidade de manutenção constante e atualizações de hardware.
  • Dificuldade de escalar recursos de acordo com a demanda.

Vantagens

  • Controle total sobre o hardware e o ambiente de hospedagem.
  • Menor latência dentro de uma rede local.
  • Menos preocupações com a segurança dos dados em trânsito.

Desvantagens

  • Altos custos iniciais para aquisição de hardware.
  • Necessidade de equipe especializada para manutenção.
  • Limitações de escalabilidade e flexibilidade.

Líderes do segmento

  • Dell
  • IBM
  • HP

Preço

  • Custos elevados de aquisição de hardware.
  • Custos adicionais com manutenção, energia elétrica e refrigeração.

Depois do cloud

Com a chegada da computação em nuvem, a indústria de tecnologia testemunhou uma revolução sem precedentes na forma como os aplicativos são hospedados e gerenciados. Empresas como Amazon Web Services (AWS), Microsoft Azure e Google Cloud Platform (GCP) lideraram essa transformação, oferecendo uma variedade de serviços que vão além do simples armazenamento de dados, incluindo computação, análise, machine learning e muito mais.

O modelo de “pague conforme o uso” tornou-se um dos maiores atrativos da computação em nuvem. Isso eliminou a necessidade de investimentos pesados em infraestrutura de TI, permitindo que até mesmo startups e pequenas empresas acessassem recursos computacionais de ponta.

Esse modelo revolucionou a computação em nuvem, uma vez que democratizou o acesso a recursos computacionais de alta qualidade. Isso permitiu que startups e pequenas empresas evitassem investimentos pesados em infraestrutura de TI, nivelando o campo de jogo.

No entanto, o modelo tem suas próprias armadilhas. Embora “pague conforme o uso” possa parecer atraente, na prática, você pode acabar pagando por recursos ociosos. Mesmo quando sua infraestrutura não está sendo totalmente utilizada, ainda há custos associados à CPU, memória e armazenamento reservados para você. Em outras palavras, você paga pelo “seu uso” potencial, não pelo uso real.

Em contraste, o edge computing oferece um modelo de precificação mais alinhado com o uso real. Você paga apenas pelas solicitações feitas pelos seus usuários e pelo tempo de computação dessas solicitações. Isso significa que você não está pagando por recursos ociosos; você está pagando estritamente pelo que é usado.

Portanto, em vez de “pague conforme o seu uso”, o edge computing opera sob o princípio de “pague conforme o uso dos seus usuários”, tornando-o uma opção mais eficiente e econômica para muitas aplicações.

A latência é outro dos principais problemas das premissas de Cloud, especialmente para aplicações que requerem respostas em tempo real. A distância física entre os servidores da nuvem e o local onde os dados são gerados ou consumidos pode resultar em atrasos significativos.

Além disso, a segurança dos dados é uma preocupação constante. Embora os provedores de nuvem invistam pesadamente em medidas de segurança, o risco associado à transmissão e armazenamento de dados em servidores remotos ainda é uma questão crítica.

O consumo energético dos data centers de nuvem também é uma questão importante. Estes centros consomem grandes quantidades de energia, não apenas para o funcionamento dos servidores, mas também para o resfriamento e outras operações auxiliares.

Características

  • Aluguel de recursos computacionais em uma base de “pague conforme o uso”.
  • Escalabilidade fácil e rápida.
  • Diversidade de serviços oferecidos (computação, armazenamento, banco de dados, etc.).

Vantagens

  • Baixo custo inicial.
  • Flexibilidade para escalar recursos de acordo com a demanda.
  • Acesso a tecnologias e serviços avançados sem necessidade de expertise interna.

Desvantagens

  • Latência pode ser um problema para aplicações sensíveis ao tempo.
  • Preocupações com a segurança dos dados em trânsito e em repouso.
  • Consumo energético considerável em data centers.

Líderes do segmento

  • Amazon Web Services (AWS)
  • Microsoft Azure
  • Google Cloud Platform (GCP)

Preço

  • Modelos de preços variáveis, geralmente baseados em um sistema de “pague conforme o uso”.
  • Despesas podem aumentar rapidamente com o aumento da demanda, tornando difícil o controle de custos.

Para o futuro e além: edge computing

A diferença entre serverless tradicional e Azion Edge Computing

A Lei de Moore, a evolução da computação e a necessidade de eficiência

A Lei de Moore, formulada pelo co-fundador da Intel, Gordon Moore, em 1965, previa que o número de transistores em um chip de computador dobraria aproximadamente a cada dois anos, levando a um aumento exponencial na capacidade de processamento. Durante décadas, essa previsão se manteve surpreendentemente precisa. A indústria de tecnologia viu avanços fenomenais em velocidade, armazenamento e capacidades de processamento, transformando completamente nossas vidas e a maneira como fazemos negócios.

No entanto, nos últimos anos, começamos a ver os limites dessa progressão exponencial. As limitações físicas, como o tamanho dos transistores e o consumo de energia, estão começando a impor barreiras ao crescimento contínuo da capacidade de processamento. Em outras palavras, não podemos mais depender apenas do aumento da potência do hardware para atender às crescentes demandas computacionais.

Neste cenário, a otimização do código e a eficiência na utilização dos recursos computacionais tornam-se imperativas. Em vez de simplesmente “jogar mais hardware” nos problemas, os desenvolvedores e as empresas precisam ser mais inteligentes sobre como usam a capacidade computacional disponível. Isso envolve a melhoria dos algoritmos, a otimização dos ambientes de execução e a adoção de práticas de desenvolvimento mais eficientes.

Além das considerações práticas, há também um imperativo ético e ambiental para ser mais eficiente. Os data centers já são responsáveis por uma porcentagem significativa do consumo global de energia, e essa tendência está aumentando.

Em um mundo onde os recursos são escassos e as mudanças climáticas são uma realidade iminente, “fazer mais com menos” não é apenas uma boa prática de engenharia; é uma necessidade para a sustentabilidade do planeta. A Lei de Moore nos trouxe até aqui, mas agora estamos entrando em uma nova era onde a eficiência, reciclagem e a otimização são as palavras-chave.

O meio ambiente não poderá sustentar o aumento exponencial de dados se a infraestrutura atual for mantida. A projeção é que, até 2025, 463 exabytes de dados serão criados todos os dias .

Se os data centers fossem um país, seriam o quinto maior emissor de gases de efeito estufa do mundo.

O uso de energia dos data centers tem duplicado a cada quatro anos desde 2000 e, se esta tendência continuar, até 2025 os data centers consumirão cerca de 20% da eletricidade mundial. Simplesmente não é sustentável.

Este é o contexto em que tecnologias como o edge computing e os padrões abertos assumem um papel central, permitindo-nos maximizar o desempenho e minimizar o desperdício, enquanto abrimos novas avenidas para a inovação e a sustentabilidade.

Um novo paradigma para desenvolvedores

Em desenvolvimento, isso representa um novo paradigma que vai muito além da simples otimização de código ou adoção de novas bibliotecas. Estamos falando de uma mudança fundamental na forma como as aplicações são projetadas, desenvolvidas e implantadas.

O edge computing traz consigo novas possibilidades, mas também novos desafios que os desenvolvedores precisam entender para se manterem competitivos.

Ambiente: onde o código vive

Na computação em nuvem, os desenvolvedores geralmente têm uma boa ideia de onde seu código será executado: em servidores em um data center, com abundância de recursos como CPU, memória e armazenamento.

No edge computing, o ambiente pode variar significativamente. O código pode ser executado em um servidor de borda em uma loja de varejo, em um dispositivo IoT em um campo de petróleo ou até mesmo em um carro autônomo em movimento.

Cada um desses ambientes tem suas próprias limitações e possibilidades, exigindo que os desenvolvedores sejam mais flexíveis e adaptáveis em seu design e implementação de código.

Edge Functions: a revolução dos Isolates

As plataformas de computação em nuvem tradicionais geralmente dependem de contêineres ou máquinas virtuais (VMS) para executar aplicações. Embora essas tecnologias tenham suas vantagens, como isolamento e portabilidade, elas também vêm com desvantagens significativas:

  • Alto consumo de recursos: Contêineres e VMs consomem uma quantidade significativa de recursos do sistema, incluindo CPU e memória, o que pode ser um desperdício em cenários onde a eficiência é crítica.
  • Latência: A necessidade de iniciar um contêiner ou uma VM pode introduzir latência adicional, especialmente em cenários de “cold start” onde uma nova instância precisa ser inicializada para lidar com uma solicitação.
  • Tempo de inicialização para primeira solicitação: Em ambientes de nuvem, o tempo necessário para iniciar um contêiner e torná-lo pronto para atender a primeira solicitação pode ser significativo. Esse atraso, conhecido como “tempo de inicialização”, pode afetar negativamente a experiência do usuário e a eficiência geral do sistema, especialmente em aplicações que requerem respostas rápidas.
  • Complexidade de gerenciamento: Soluções como Kubernetes, embora poderosas, podem ser complexas de configurar e gerenciar, especialmente em ambientes distribuídos e em grande escala.

Ao contrário de praticamente todas as outras plataformas de computação em nuvem, a plataformas de Edge (como Azion Edge Functions ou Cloudflare Workers) não utilizam contêineres ou máquinas virtuais. Em vez disso, ela usa uma tecnologia chamada “Isolates”, originalmente desenvolvida pela equipe do Google Chrome para alimentar o mecanismo JavaScript do navegador.

Fonte: CloudFlare

O que são Isolates?

Os Isolates são contextos leves que agrupam variáveis com o código autorizado a modificá-las. Um único processo pode executar centenas ou milhares de Isolates, alternando entre eles de forma transparente. Isso torna possível executar código não confiável de vários clientes diferentes dentro de um único processo do sistema operacional, sem a necessidade de caras mudanças de contexto que consomem tempo de CPU.

Isolates e abas do Chrome: uma analogia

Uma forma interessante de entender o conceito de “Isolates” é compará-lo com as abas de um navegador como o Google Chrome. Cada aba no Chrome é como um ambiente isolado, permitindo que você execute diferentes aplicações web de forma segura e independente em um único navegador.

Assim como as abas do Chrome, os Isolates permitem que múltiplos códigos sejam executados de forma segura e isolada em um único processo do sistema operacional.

Exemplo prático

Imagine que você está usando o Google Chrome e tem várias abas abertas: uma para o seu e-mail, outra para um vídeo do YouTube e uma terceira para um documento do Google Docs. Cada uma dessas abas funciona de forma independente e isolada, o que significa que um erro ou falha em uma aba não afeta as outras. Além disso, cada aba é otimizada para usar recursos de forma eficiente, garantindo que o navegador como um todo permaneça ágil e responsivo.

Da mesma forma, em um ambiente de computação de borda que utiliza Isolates, diferentes aplicações ou funções podem ser executadas em “abas” separadas dentro de um único processo do sistema operacional. Isso permite que cada aplicação seja executada de forma rápida e segura, sem interferir nas outras, enquanto otimiza o uso de recursos como CPU e memória.

Essa abordagem é especialmente útil em cenários de computação de borda, onde a eficiência de recursos e a baixa latência são cruciais.

Vantagens dos Isolates

  • Início rápido: Os Isolates podem ser iniciados em cerca de 5 milissegundos, tornando os “cold starts” praticamente imperceptíveis.
  • Eficiência de memória: Ao compartilhar o tempo de execução entre todas os Isolates, o consumo de memória cai drasticamente, alterando significativamente a economia do sistema.
  • Segurança robusta: A natureza de código aberto do V8 e seu status como um dos softwares mais testados em termos de segurança do mundo tornam os Isolates uma opção segura para execução de código multi-inquilino.

Recomendo este artigo da IBM Research que explora uma abordagem para o desenvolvimento de aplicações web, utilizando browsers tanto para o front-end quanto para o back-end.

A equipe criou um “Execution Engine” que roda em um servidor e processa solicitações em guias de navegador, permitindo que o código front-end seja executado no back-end. Este sistema não só simplifica o desenvolvimento full-stack, usando apenas APIs da Web, mas também oferece desempenho significativamente melhor em comparação com plataformas sem servidor baseadas em contêineres.

O projeto chamado “browser-functions” pode te dar um bom horizonte de como funcionam os runtimes da Edge.

Na Prática: diferenças significativas entre Edge Runtime e Node.js

A terminologia em torno do edge computing pode ser um pouco confusa, especialmente quando algumas empresas estão misturando e combinando diferentes abordagens.

Por exemplo, há empresas que executam contêineres em locais de edge, o que pode oferecer baixa latência, mas ainda sofre com o problema de “cold start” devido ao tempo necessário para inicializar um contêiner.

Por outro lado, algumas empresas optam por executar Isolates em regiões de nuvem, o que pode minimizar o tempo de “cold start”, mas não oferece os benefícios de latência que você obteria ao executar o código mais perto do usuário final.

Essa mistura de estratégias pode tornar difícil para os desenvolvedores entenderem as verdadeiras vantagens e desvantagens de cada abordagem. O ideal é um runtime de edge genuíno, executado em locais de edge reais, para aproveitar tanto a baixa latência quanto os tempos de inicialização rápidos, sem os compromissos que vêm com outras configurações híbridas.

Nesse contexto, é interessante observar plataformas como a Vercel, que oferece um “edge-runtime” para aplicativos Next.js. Embora essa opção seja alimentada por Cloudflare Workers (caso o deploy seja realizado na Vercel) e, teoricamente, ofereça os benefícios do edge computing, a Vercel parece mais inclinada a promover seu ambiente (e recursos) Node.js padrão.

Isso pode deixar os desenvolvedores se perguntando sobre o verdadeiro valor e eficácia do “edge-runtime”, especialmente quando a própria plataforma parece hesitante em colocá-lo em destaque.

Tá, mas e daí?

A grande força do Node.js é sua capacidade de gerenciar múltiplas solicitações de forma assíncrona em um único thread, graças ao seu modelo de evento não bloqueante. Isso significa que um único processo Node.js pode lidar com milhares de conexões simultâneas sem problemas.

Por outro lado, a Vercel utiliza o AWS Lambda para suas funções sem servidor. O AWS Lambda executa seu código em resposta a eventos e cria uma nova instância da sua função para cada nova solicitação.

Isso tem duas implicações principais:

  • Custo: Como cada instância do Lambda lida com apenas uma solicitação, você pode acabar pagando mais, especialmente se tiver um grande volume de solicitações. Em contrapartida, um único processo Node.js pode lidar com várias solicitações, o que pode ser mais eficiente em termos de custo.
  • Cold start: Cada vez que uma nova instância de uma função Lambda é iniciada, há um pequeno atraso, conhecido como “cold start”, antes que a função possa começar a processar a solicitação. Isso não é um problema em um ambiente Node.js tradicional onde o servidor está sempre rodando.

Então devo usar um servidor Node.js?

A resposta é: não. Mude sua abordagem.

Muitas vezes, nos apegamos a tecnologias e abordagens que já conhecemos bem, como um carpinteiro que insiste em usar um martelo para todos os trabalhos, mesmo quando uma chave de fenda seria mais apropriada.

No mundo do desenvolvimento web, o Node.js se tornou esse “martelo” universal, quase sinônimo de back-end JavaScript. Mas a realidade é que a grande maioria das aplicações mais comuns hoje em dia, como APIs CRUD e projetos Jamstack, não precisam de um servidor Node.js (ou Deno/Bun) para funcionar eficientemente.

O edge runtime não é apenas uma alternativa viável, mas em muitos casos, é uma escolha superior. Projetado para ser leve, rápido e altamente escalável, ele é uma escolha natural para aplicações modernas que necessitam de baixa latência e alta disponibilidade. Mas as vantagens não param por aí.

Plataformas como a Azion elevam o jogo ao oferecer recursos adicionais já embutidos. Estamos falando de cache, balanceamento de carga (load balancer), firewall e muito mais, tudo pré-configurado e pronto para uso. Isso elimina a necessidade de trabalho extra e configuração manual que você teria que fazer em um ambiente de servidor tradicional (e na maioria das vezes não faz).

Em outras palavras, você obtém uma pilha de tecnologia completa sem o aborrecimento de ter que montá-la peça por peça. Isso não apenas acelera o tempo de lançamento do produto ao mercado, mas também reduz o risco de erros de configuração que podem levar a problemas de segurança ou desempenho.

Além disso, essa agilidade e prontidão tornam o edge runtime uma ferramenta poderosa para escalar e testar produtos rapidamente, permitindo que você se adapte às demandas do mercado em tempo real – e a execução de código no edge computing, mais próximo do usuário final, tem o potencial de revolucionar o desempenho e a experiência do usuário.

Em um mundo digital onde cada milissegundo faz a diferença para manter os usuários engajados, a latência reduzida oferecida pelo edge computing é um divisor de águas.

Para ilustrar, imagine um usuário no sul do Brasil acessando um e-commerce hospedado em um servidor de nuvem na costa leste dos Estados Unidos. Agora, compare isso com a mesma pessoa acessando o site a partir de um servidor localizado no ISP da Embratel em Porto Alegre-RS. A diferença na latência seria notável, não apenas em termos de números, mas também na qualidade percebida da experiência do usuário.

Para aproveitar essas vantagens, é preciso estar disposto a aceitar essa mudança de paradigma. Isso pode envolver o aprendizado de novas formas de fazer coisas que você já fazia no Node.js, ou até mesmo repensar a arquitetura de sua aplicação para se adequar ao modelo de computação em edge.

Uma vez que você faz essa transição, as possibilidades são amplas. Você pode construir aplicações altamente responsivas e escaláveis sem os custos adicionais ou as complexidades de gerenciamento que vêm com servidores tradicionais.

Portanto, se você ainda está se perguntando se deve ou não adotar o edge runtime, minha sugestão é: dê uma chance. Você pode se surpreender com o quanto essa mudança pode beneficiar seu projeto.

Mudanças práticas

No caso de plataformas como a Azion, que utilizam o Deno Core, os scripts são executados em um ambiente altamente restrito por padrão. Isso significa que, a menos que sejam concedidas permissões explícitas, o código não terá acesso de gravação à rede ou ao sistema de arquivos. Essa abordagem centrada na segurança, é uma grande vantagem, mas também representa um desafio para os desenvolvedores acostumados com a flexibilidade de ambientes como o Node.js.

Enquanto Node.js oferece uma rica coleção de APIs, incluindo acesso ao sistema de arquivos através do módulo ‘fs’, muitos runtimes de edge podem não oferecer essas funcionalidades. Isso ocorre por várias razões, desde restrições de segurança até considerações de desempenho. Além disso, o ambiente de edge geralmente não possui um sistema de arquivos tradicional, o que torna algumas dessas APIs irrelevantes ou impraticáveis.

Essa mudança no conjunto de funcionalidades disponíveis exige que os desenvolvedores repensem suas abordagens e talvez até reestruturem partes de suas aplicações para se adaptarem ao ambiente de edge.

No entanto, o trade-off geralmente vale a pena, considerando os benefícios em termos de segurança, desempenho e escalabilidade que o edge computing pode oferecer.

Isso significa que os desenvolvedores precisam repensar como realizam tarefas que antes eram consideradas básicas. Em vez de ler um arquivo de configuração de um sistema de arquivos, por exemplo, eles podem precisar recuperá-lo de um serviço de configuração centralizado, como Object Storage. Em vez de armazenar dados em um banco de dados local, eles podem precisar usar um banco de dados distribuído que pode ser acessado de forma eficiente a partir de vários locais de borda.

Algumas das APIs e módulos comumente disponíveis em ambientes Node.js que podem não estar disponíveis ou serem limitados em um edge runtime incluem:

  1. fs (Sistema de Arquivos): Como mencionado anteriormente, o acesso ao sistema de arquivos é geralmente restrito em ambientes de edge.
  2. child_process: A criação de processos filhos é geralmente não permitida em ambientes de edge por razões de segurança e eficiência.
  3. os: Informações sobre o sistema operacional e o hardware subjacente geralmente não são expostas em ambientes de edge.
  4. cluster: A criação de clusters para balanceamento de carga geralmente é gerenciada pela própria plataforma de edge, tornando esse módulo redundante ou inaplicável.

É crucial entender que as limitações em edge runtimes não são aleatórias; elas são projetadas para otimizar a segurança, o desempenho e a escalabilidade, que são aspectos críticos em ambientes de edge.

Agora, você pode pensar que essas restrições tornam a migração para o edge computing um desafio. No entanto, a realidade é que a maioria das aplicações modernas, especialmente as que são construídas com uma abordagem Jamstack ou como APIs CRUD, não necessitam de muitas dessas APIs “ausentes” para funcionar eficientemente.

Na verdade, a simplicidade e a eficiência do edge computing podem facilitar a migração e até melhorar o desempenho do seu aplicativo. Então, em vez de ver essas limitações como obstáculos, considere-as como um conjunto focado de ferramentas que incentivam práticas de desenvolvimento mais seguras e eficientes. Isso torna o edge computing não apenas uma alternativa viável, mas muitas vezes uma escolha superior para hospedar e escalar suas aplicações.

Um exemplo prático

Vamos comparar um exemplo de uma API CRUD escrita em Node.js. (sem frameworks) com uma escrita usando Azion Edge Functions (sem frameworks), um ambiente de edge.

NodeJS + MongoDB

Esta imagem mostra um exemplo de uma API CRUD usando Node.js puro e MongoDB. Aqui, você pode notar várias coisas:

  1. Iniciação do servidor: O código começa com a inicialização de um servidor HTTP usando o módulo nativo http. Isso significa que você é responsável por gerenciar o ciclo de vida do servidor, incluindo tratamento de erros e reinicializações.
  2. Sem Padrões Web: O código não segue os padrões da web para solicitações e respostas, o que pode tornar a migração ou integração com outras tecnologias mais desafiadora.
  3. Configuração da AWS: Se você estiver usando a AWS ou outra plataforma de nuvem, terá que passar pelo processo de configuração, que pode ser tedioso e propenso a erros.
  4. Escalabilidade: Você é responsável por gerenciar a escalabilidade, o que pode exigir uma compreensão profunda de conceitos como balanceamento de carga e clustering.
  5. Otimização de cache: Você é responsável por configurar e otimizar cache.

Edge Functions + Turso

  1. Sem inicialização de servidor: Não há necessidade de iniciar ou gerenciar um servidor HTTP. O ambiente de edge cuida disso para você.
  2. API unificada com Padrões Web: O código usa a API fetch e outros padrões da web, tornando-o mais fácil de entender e integrar com outras tecnologias.
  3. Cache automático pré-configurado.
  4. Gerenciamento automatizado: O ambiente de edge gerencia automaticamente a escalabilidade, tratamento de erros e reinicializações, liberando você dessas preocupações.
  5. Segurança e desempenho: O ambiente de edge é projetado para ser seguro e de alta performance por padrão, com recursos como balanceamento de carga e firewall já embutidos.
  6. Menor latência: Como o código é executado mais perto do usuário final, a latência é significativamente reduzida por default.

Neste exemplo, optamos por utilizar o Turso, um banco de dados distribuído projetado para funcionar perfeitamente em ambientes de edge computing. Sua arquitetura distribuída permite que os dados sejam armazenados mais perto dos usuários finais, reduzindo a latência e melhorando a experiência do usuário. Isso permite uma abordagem all-edge.

Vimos que começar um projeto em edge computing não é apenas uma escolha estratégica inteligente; é também surpreendentemente fácil e econômico.

O ambiente de edge elimina várias das complexidades associadas ao gerenciamento de servidores, escalabilidade e segurança, permitindo que você se concentre no que realmente importa: desenvolver funcionalidades incríveis para seus usuários.

Para desenvolvedores front-end que já estão acostumados com APIs da web, a transição para o edge é ainda mais suave. Você já está familiarizado com padrões da web como fetch, então o código em um ambiente de edge vai parecer muito natural.

Além disso, você não precisa se preocupar com a configuração de servidores ou com o gerenciamento de infraestrutura de nuvem, o que pode ser uma grande economia de tempo e recursos.

E para migrar projetos?

Migrar para o edge computing pode parecer uma tarefa intimidante, especialmente se você já tem um projeto em execução que utiliza APIs específicas do Node.js. No entanto, a transição pode ser mais suave do que você imagina, graças a uma ferramenta que estamos trabalhando aqui na Azion; o projeto de código aberto chamado Vulcan, que busca automatizar a criação de polyfills para computação de borda, simplificando significativamente o processo de criação de Workers, especialmente para a plataforma Azion.

Os polyfills agem como uma camada de compatibilidade, resolvendo em tempo de build APIs do Node.js que não estejam disponíveis em um ambiente de edge. Além disso, o Vulcan oferece um ambiente local para simular o runtime de borda. Isso é incrivelmente útil para o desenvolvimento e teste, pois permite que você experimente e depure seu código em um ambiente que imita de perto o ambiente de produção. Isso elimina muitas das surpresas desagradáveis que podem ocorrer quando você move seu código do desenvolvimento para a produção.

Demonstração em vídeo: Vulcan em ação

Abaixo você verá uma demonstração prática de como o Vulcan pode simplificar a migração de um projeto Node.js para um ambiente de edge computing. O exemplo destaca a substituição automática da API Buffer do Node.js por uma versão compatível com edge durante o processo de build.

Além disso, o vídeo também mostra o código sendo executado em um ambiente de edge-runtime, ilustrando como o Vulcan não apenas facilita a migração, mas também permite que você teste e execute seu código em um ambiente que simula as condições de edge.

E se eu não quiser usar JavaScript?

Para desenvolvedores que preferem não usar JavaScript ou estão buscando alternativas mais eficientes e seguras, WebAssembly (Wasm) surge como uma opção atraente para computação de borda. O Wasm permite que você execute código de baixo nível em navegadores web e ambientes de Edge, oferecendo desempenho próximo ao nativo.

  1. Portabilidade e eficiência: o WebAssembly é projetado para ser eficiente e rápido, tornando-o ideal para execução em dispositivos de borda com recursos limitados. Seus módulos são muito menores em tamanho em comparação com contêineres tradicionais, o que é crucial para ambientes com largura de banda limitada.
  2. Segurança: WASM opera em uma caixa de areia segura, o que o torna uma opção segura para executar código próximo ao usuário ou ao dispositivo de borda.
  3. Linguagens suportadas: WebAssembly não está restrito a uma única linguagem de programação. Você pode escrever seu código em C, C++, Rust e outras linguagens, e depois compilá-lo para Wasm.
  4. Integração com tecnologias existentes: Embora o Wasm possa funcionar independentemente do JavaScript e do Kubernetes, ele também é projetado para funcionar em conjunto com essas tecnologias, oferecendo flexibilidade na escolha das pilhas de tecnologia.
  5. Início rápido: Com tempos de cold start na faixa de microssegundos, o Wasm é uma excelente escolha para aplicações em tempo real que requerem baixa latência.
  6. Modelo de componente WebAssembly: Este modelo permite uma abordagem modular para o desenvolvimento de aplicações, onde componentes individuais podem ser desenvolvidos, atualizados e escalados de forma independente. Isso é particularmente útil em ambientes de borda onde a gestão eficiente dos recursos é crítica.
  7. Adoção na indústria: Grandes empresas como Amazon, Adobe e BMW já estão explorando o uso de WebAssembly para melhorar o desempenho, a segurança e a eficiência de suas aplicações de borda.

Edge Computing e Cloud Computing: uma Parceria estratégica

Fonte: Wipro

É claro que existem cenários onde aplicações mais complexas exigem uma quantidade significativa de recursos computacionais e, nesses casos, a computação em nuvem continua sendo uma escolha indispensável. No entanto, isso não exclui o valor e a eficácia da computação de borda, que pode atuar como um complemento estratégico à nuvem.

Juntas, essas duas tecnologias formam um ecossistema de TI robusto e resiliente, capaz de atender a uma ampla gama de necessidades empresariais e cenários de uso, desde a otimização da latência até a melhoria da segurança e sustentabilidade.

Cache inteligente

Uma das maneiras mais eficazes de utilizar a computação de borda em conjunto com a nuvem é através do cache inteligente. Os dispositivos de borda podem armazenar dados localmente para acesso rápido, enquanto a nuvem pode ser usada para armazenamento em massa e processamento pesado. Isso não apenas melhora a latência, mas também otimiza o uso da largura de banda, já que apenas os dados necessários são transmitidos para a nuvem.

Cache inteligente = mais sustentabilidade

A computação de borda pode reduzir significativamente a quantidade de dados que precisa ser enviada para os data centers, economizando energia tanto na transmissão de dados quanto no resfriamento e operação dos próprios data centers.

Segurança

A computação de borda pode atuar como uma primeira linha de defesa contra ameaças à segurança. Ao processar dados mais próximos da fonte, a exposição a redes inseguras é minimizada. Além disso, políticas de segurança podem ser aplicadas na borda antes que os dados sejam enviados para a nuvem, adicionando uma camada extra de proteção.

Escalabilidade e flexibilidade

Para aplicações que exigem uma grande infraestrutura, como análise de big data ou aprendizado de máquina, a nuvem oferece os recursos necessários para processar grandes volumes de dados. A computação de borda, por sua vez, pode lidar com tarefas mais imediatas e sensíveis ao tempo. Isso permite uma distribuição mais eficiente dos recursos computacionais, tornando o sistema global mais escalável e flexível.

Redução de custos

A combinação de computação de borda e nuvem também pode resultar em economias significativas. Por exemplo, dados não essenciais podem ser pré-processados na borda, reduzindo a quantidade de dados que precisam ser enviados para a nuvem, o que, por sua vez, pode diminuir os custos de armazenamento e transmissão de dados.

Conformidade e governança

Em setores altamente regulamentados, manter dados sensíveis fora da nuvem pode ser uma exigência legal ou de conformidade — como é o caso do PCI DSS . A computação de borda permite que esses dados sejam processados localmente, enquanto ainda se beneficia das vantagens da nuvem para outras operações, oferecendo assim um equilíbrio entre conformidade e eficiência.

Em resumo, a computação de borda e a computação em nuvem não são mutuamente exludentes; elas são, na verdade, complementares. Ao entender as forças de cada uma e como elas podem trabalhar juntas, as organizações podem criar soluções mais completas que atendam às necessidades específicas de forma mais eficaz, segura e sustentável.

Conclusão

O edge computing não é apenas uma inovação tecnológica; é uma revolução que redefine como pensamos sobre desenvolvimento, implantação e escalabilidade de aplicações.

Este novo paradigma oferece vantagens substanciais em termos de baixa latência, eficiência de recursos e segurança robusta, tornando-se uma escolha estratégica para empresas e desenvolvedores que buscam otimizar tanto o desempenho quanto os custos.

No entanto, a transição para o edge computing não é isenta de desafios. Requer uma mudança significativa na mentalidade dos desenvolvedores, que precisam se adaptar a novas formas de pensar sobre arquitetura de software, segurança e gerenciamento de dados.

Edge computing é mais do que uma tendência; é o futuro do desenvolvimento de aplicações.

O edge oferece uma combinação poderosa de desempenho, eficiência e segurança, incentivando ao mesmo tempo práticas de desenvolvimento mais sustentáveis e conscientes. Para os desenvolvedores dispostos a mudar sua mentalidade e abraçar essas novas oportunidades, o futuro é brilhante e cheio de possibilidades.

Para dar seus primeiros passos na edge, você pode testar a plataforma da Azion com um brinde de $300 em créditos para criar suas próprias aplicações. Depois me conta como foi!

Edge computing → TL;DR

Características

  1. Processamento de dados localizado: A computação de borda processa dados mais próximos à fonte, seja um dispositivo IoT ou um usuário final. Isso é crucial para aplicações que exigem decisões em tempo real e baixa latência, como carros autônomos e telessaúde.
  2. Resiliência de rede: Ao minimizar a dependência de conexões de rede de longa distância, a computação de borda oferece maior resiliência, permitindo que aplicações funcionem eficazmente mesmo em ambientes de rede instáveis ou desconectados.
  3. Operação offline: A capacidade de operar offline ou em redes instáveis torna o edge computing ideal para aplicações IoT em locais remotos ou ambientes industriais onde a conectividade pode ser um desafio.
  4. Arquitetura serverless: Muitas soluções de edge computing adotam uma arquitetura serverless, simplificando o ciclo de desenvolvimento e implantação de aplicações ao eliminar a necessidade de gerenciamento de servidores.

Vantagens

  1. Modelo de custo eficiente: O pagamento é geralmente baseado no uso real, tornando o edge computing uma opção econômica para muitas empresas.
  2. Latência reduzida: A proximidade dos recursos de computação aos usuários finais ou dispositivos IoT reduz significativamente a latência, o que é crucial para aplicações em tempo real e tecnologias como 5G.
  3. Eficiência energética: Ao processar dados localmente, menos informações são enviadas para data centers distantes, resultando em economia de energia e uma pegada de carbono menor.
  4. Segurança e privacidade: Menos dados viajando através de redes reduzem o risco de interceptação e vazamento de dados, melhorando a segurança e a privacidade.
  5. Custo-benefício: A computação de borda permite o uso de hardware menos potente e até mesmo a reciclagem de equipamentos antigos, contribuindo para uma solução mais econômica.
  6. Otimização de rede: A computação de borda ajuda a aliviar o tráfego de rede que entra e sai de servidores centralizados, economizando em custos de largura de banda e energia.
  7. Reutilização de equipamentos: Provedores de Edge podem reutilizar hardware e infraestrutura existentes, maximizando o retorno sobre investimentos anteriores e reduzindo o desperdício.

Desvantagens

  • Limitações de poder computacional: Embora os dispositivos de borda sejam geralmente mais baratos, eles também são menos poderosos do que os data centers.
  • Limitações de linguagem: Atualmente, você precisa escrever seu código em JavaScript ou em uma linguagem que tenha como alvo o WebAssembly, como Go ou Rust.
  • Necessidade de adaptação no desenvolvimento de software: A mudança para a computação de borda requer uma nova abordagem no desenvolvimento de aplicações, o que pode ser um desafio para equipes acostumadas com modelos mais tradicionais de computação em nuvem.

Preço

  • Pague conforme o uso dos seus usuários.
  • Custos iniciais mais baixos.
  • Custos operacionais reduzidos: Menor consumo de energia e manutenção simplificada.

Ah, eu também fiz uma talk sobre o assunto no Discord da Azion, fique à vontade para assistir e fazer parte da comunidade :)

--

--