Arquitetura Serverless
As arquiteturas serverless podem ser a plataforma de implantação ideal para desenvolvedores com recursos limitados

O que é arquitetura serverless?
A arquitetura serverless é um modelo de computação em nuvem onde os desenvolvedores criam e executam aplicativos sem gerenciar servidores tradicionais. Os servidores ainda existem, mas estão na nuvem, onde os provedores de nuvem gerenciam automaticamente a infraestrutura, o dimensionamento e a alocação de recursos.
Para aplicações sem servidor, os desenvolvedores normalmente escrevem código como funções isoladas que são executadas em resposta a eventos ou gatilhos, e os provedores de nuvem cobram apenas pelos recursos de computação realmente utilizados. Essa abordagem simplifica o desenvolvimento de aplicações, reduz a sobrecarga operacional e permite escalabilidade rápida, tornando-a ideal para microsserviços e aplicações orientadas a eventos.
Esta página abrange:
- Como funciona a arquitetura serverless
- Conceitos-chave em arquitetura sem servidor
- Quando usar arquitetura serverless
- Benefícios da arquitetura serverless
- Limitações da arquitetura sem servidor
- Ferramentas de computação sem servidor
- Conclusão
Como funciona a arquitetura serverless
A arquitetura serverless abstrai o gerenciamento de servidores dos desenvolvedores e depende de provedores de nuvem para lidar com a infraestrutura subjacente. Veja como geralmente funciona:
1. Criação de função: Os desenvolvedores escrevem código como funções individuais, sendo cada função projetada para executar uma tarefa ou serviço específico. A arquitetura sem servidor às vezes é referida como Function-as-a-Service ou FaaS.
2. Implantação de função: As funções são empacotadas e implantadas em uma plataforma sem servidor (serverless) fornecida por um provedor de serviços em nuvem. As plataformas sem servidor mais comuns são AWS Lambda, Azure Functions e Google Cloud Functions.
3. Gatilhos de eventos: As funções são configuradas para executar em resposta a eventos ou acionadores específicos. Os eventos podem incluir solicitações HTTP (por exemplo, API Gateway), alterações em dados (por exemplo, atualizações de banco de dados), temporizadores, uploads de arquivos ou algo diferente. O provedor de nuvem gerencia as fontes de eventos e invoca automaticamente as funções associadas.
4. Autoescalonamento: À medida que os eventos ocorrem, a plataforma sem servidor dimensiona automaticamente os recursos subjacentes para acomodar a carga de trabalho. Se sua função experimentar um pico repentino de solicitações, o provedor de nuvem provisionará mais recursos.
5. Execução: Quando um evento aciona uma função, a plataforma sem servidor (serverless) inicializa um contêiner ou ambiente de execução para essa função. O código dentro da função é executado e pode acessar quaisquer recursos ou dados necessários. Após a função concluir sua tarefa, o contêiner pode permanecer ativo (warm) por um breve período, permitindo que solicitações subsequentes sejam executadas mais rapidamente.
6. Cobrança: A cobrança é baseada no tempo real de execução e nos recursos usados pelas funções. Você paga por execução e pelos recursos de computação, como CPU e memória, que são alocados durante a execução.
7. Apatridia As funções serverless são tipicamente sem estado, o que significa que elas não retêm informações entre as invocações. Qualquer estado ou dado necessário deve ser armazenado externamente, frequentemente em um banco de dados ou serviço de armazenamento.
8. Logs e monitoramento: As plataformas serverless geralmente fornecem ferramentas integradas de registro em log e monitoramento, permitindo que os desenvolvedores acompanhem o desempenho e solucionem problemas em suas funções.
Conceitos-chave em arquitetura sem servidor
Como o desenvolvimento serverless é uma alternativa ao desenvolvimento tradicional, você deve se familiarizar com os seguintes termos e conceitos para ter uma compreensão clara de como projetar, implantar e gerenciar aplicativos serverless:
Invocação: Um evento que aciona a execução de uma função sem servidor. Exemplos incluem uma solicitação HTTP, atualização de banco de dados ou temporizador agendado.
Duração: A quantidade de tempo que uma função sem servidor (serverless) leva para executar, o que é um fator no cálculo do custo de execução.
Partida a frio: A execução inicial de uma função sem servidor (serverless), onde o provedor de nuvem provisiona recursos e configura o ambiente de execução. Inicializações a frio (cold starts) introduzem latência adicional em comparação com inicializações a quente (warm starts).
Inicialização a quente: Execuções subsequentes de uma função sem servidor quando o ambiente de tempo de execução já está preparado, resultando em tempos de resposta mais rápidos em comparação com inícios a frio.
Limite de concorrência: O número máximo de execuções simultâneas de funções permitido pela plataforma serverless. Esse limite pode impactar a capacidade de lidar com solicitações ou eventos concorrentes.
Tempo esgotado: A duração máxima permitida para a execução de uma função sem servidor. Se uma função exceder esse limite, ela será encerrada à força e seu resultado poderá não ser retornado.
Origem do evento: A origem de um evento que dispara uma função serverless. Exemplos de origens de eventos incluem buckets do Amazon S3, gateways de API, filas de mensagens e atualizações de banco de dados.
Apatridia As funções serverless são tipicamente sem estado (stateless), o que significa que elas não retêm dados entre as invocações. Qualquer estado necessário deve ser armazenado externamente em bancos de dados ou serviços de armazenamento.
Alocação de recursos: A especificação de recursos de computação, como CPU ou memória, para uma função sem servidor. Esses recursos costumam ser escolhidos pelos desenvolvedores ao definir a função.
Autoescalonamento: O ajuste automático de recursos sem servidor pelo provedor de nuvem para acomodar cargas de trabalho variáveis e garantir o desempenho ideal.
Banco de dados sem servidor: Bancos de dados serverless são bancos de dados com dimensionamento elástico que não expõem a infraestrutura na qual operam Couchbase Capella™ DBaaS é um exemplo de banco de dados sem servidor (serverless) totalmente gerenciado.
Quando usar arquitetura serverless
Embora a arquitetura sem servidor seja versátil, ela não é a melhor escolha para todos os casos de uso – aplicações com tarefas de longa duração, altos requisitos de computação ou cargas de trabalho consistentes geralmente se beneficiam mais de arquiteturas tradicionais baseadas em servidores. Certifique-se de considerar os requisitos específicos e os pontos fortes exclusivos da arquitetura sem servidor ao decidir se ela é a escolha certa para a sua aplicação.
Casos de uso de arquitetura serverless
Alguns dos casos de uso mais comuns e adequados para a arquitetura sem servidor (serverless) incluem:
Aplicativos web e móveis: Gerenciar backends de aplicativos web e móveis, servir conteúdo, processar solicitações de usuários e gerenciar a autenticação de usuários.
APIs: Escalone automaticamente suas APIs RESTful e GraphQL e integre-as facilmente a outros serviços.
IoT: Gerencie com eficiência o processamento e a análise de dados de dispositivos IoT que acionam eventos com dados de sensores.
Processamento de dados em tempo real: Processar fluxos de dados em tempo real, como análise de clickstream, processamento de logs e análises orientadas a eventos.
Processamento em lote: Execute trabalhos em lote periódicos ou sob demanda, como ETL de dados (extração, transformação e carga), geração de relatórios e limpeza de dados.
Tarefas de armazenamento de arquivos e dados: Interagir com serviços de armazenamento em nuvem para gerenciar uploads, downloads e manipulação de arquivos e dados.
Autenticação e autorização de usuários: Serviços de gerenciamento de identidade e acesso (IAM) para autenticação e autorização de usuários são adequados para funções sem servidor.
Serviços de notificação: Envie notificações e alertas, como e-mail, SMS ou notificações push, em resposta a eventos ou gatilhos específicos.
Chatbetes e assistentes virtuais: Construa interfaces conversacionais onde funções processam solicitações em linguagem natural e geram respostas.
Processamento de dados e imagens: Execute tarefas como redimensionamento de imagens, conversão de formatos e transformação de dados que exigem interação mínima do usuário.
Tarefas agendadas: Automatize tarefas periódicas, como backups de dados, geração de relatórios e manutenção de banco de dados.
Microsserviços: Crie e gerencie microsserviços individuais dentro de uma aplicação maior, permitindo fácil dimensionamento e implantação independente.
Serviços de segurança e conformidade: Implementar funções relacionadas à segurança, como detecção de intrusão, monitoramento e auditoria de conformidade.
Serverless vs. containers
À primeira vista, a arquitetura sem servidor (serverless) é às vezes confundida com a arquitetura de contêineres ou com a arquitetura de microsserviços, porque compartilha certas semelhanças com cada uma delas. Na verdade, o serverless é bastante distinto de ambas, e explicaremos o que as torna diferentes.
O que contêineres e serverless têm em comum é que ambos permitem que os desenvolvedores implantem código de aplicativo abstraindo o ambiente de host. No entanto, uma das principais diferenças é que o serverless abstrai totalmente o gerenciamento de servidores, enquanto os contêineres permitem que os desenvolvedores gerenciem seus próprios ambientes de servidores com mais controle sobre a infraestrutura.
Como uma forma leve de virtualização, os contêineres empacotam aplicativos e suas dependências em ambientes isolados e consistentes que são executados como instâncias independentes em um sistema operacional compartilhado. Os contêineres fornecem uma maneira de garantir que os aplicativos funcionem de maneira consistente em vários ambientes, do desenvolvimento à produção, e oferecem uma maneira padronizada de empacotar e distribuir software. Os contêineres normalmente são de longa duração e podem incluir vários processos dentro de um único contêiner.
Em suma, a computação serverless abstrai o gerenciamento de servidores e é ideal para tarefas orientadas a eventos e de curta duração, enquanto os containers oferecem mais controle sobre o ambiente do servidor e são mais adequados para processos de longa execução e cargas de trabalho consistentes. A escolha entre eles depende dos requisitos específicos da sua aplicação e do seu nível de controle sobre a infraestrutura subjacente. Em alguns casos, uma combinação de ambas as tecnologias é usada em uma única aplicação para diferentes componentes.
Serverless vs. microsserviços
Microsserviços são um padrão de arquitetura de software que estrutura uma aplicação como uma coleção de pequenos serviços independentemente implantáveis que se comunicam por meio de APIs e trabalham juntos para fornecer funcionalidade complexa e modular. A confusão entre microsserviços e arquitetura sem servidor (serverless) muitas vezes surge devido à ênfase compartilhada em modularidade e escalabilidade. O limite fica ainda mais difuso pelo fato de serem frequentemente usados juntos, com funções serverless atuando como microsserviços dentro de uma aplicação maior baseada em microsserviços.
Apesar de suas semelhanças, a computação sem servidor (serverless) e os microsserviços possuem características únicas nas seguintes áreas que os diferenciam:
Gerenciamento de infraestrutura
- Microsserviços – os desenvolvedores mantêm o controle sobre o servidor e a orquestração de contêineres.
- Sem servidor – o gerenciamento de servidores é totalmente abstraído, e os desenvolvedores não lidam com a infraestrutura subjacente.
Modelo de execução
- Microsserviços – executar continuamente em instâncias de servidores dedicados.
- Sem servidor – as funções são executadas em resposta a eventos ou gatilhos. Essa distinção pode levar a uma diferença nos tempos de resposta, pois as aplicações sem servidor (serverless) podem sofrer inicializações a frio (cold starts).
Modelo de custos
- Microsserviços – exigem que você provisione e mantenha recursos de servidor. Isso pode gerar custos contínuos, mesmo durante períodos de baixo uso.
- Sem servidor – segue um modelo pré-pago baseado na execução real da função. Isso pode ser mais econômico para cargas de trabalho esporádicas.
Modularidade
- Microsserviços – um aplicativo é dividido em pequenos serviços independentes.
- Sem servidor – desenvolvedores escrevem código como unidades individuais de funcionalidade.
Escalabilidade
- Microsserviços – permitir o escalonamento independente de cada serviço.
- Sem servidor – escala automaticamente funções individuais.
Benefícios da arquitetura serverless
A arquitetura serverless oferece uma ampla gama de benefícios que a tornam uma escolha atraente para muitas aplicações e casos de uso. As vantagens mais convincentes são:
Escalonamento automático: As plataformas de arquitetura sem servidor (serverless) dimensionam automaticamente os recursos para cima ou para baixo com base na carga de trabalho recebida. Isso garante que sua aplicação possa lidar com níveis variados de tráfego, proporcionando alta disponibilidade e desempenho sem intervenção manual.
Eficiência de custo: Com a arquitetura serverless, você paga apenas pelos recursos de computação realmente usados durante a execução da função. Não há custos associados ao tempo ocioso, o que a torna econômica, especialmente para cargas de trabalho com tráfego imprevisível ou esporádico.
Redução de custos operacionais: O Serverless abstrai as tarefas de gerenciamento de servidores, permitindo que os desenvolvedores foquem no código em vez da manutenção da infraestrutura. Isso reduz a necessidade de esforços de DevOps e simplifica o dimensionamento e a implantação.
Desenvolvimento mais rápido: O Serverless acelera o processo de desenvolvimento ao eliminar a necessidade de gerenciar servidores e infraestrutura. Os desenvolvedores podem iterar e implantar código rapidamente, resultando em um tempo de lançamento no mercado mais rápido para os aplicativos.
Resiliência Funções serverless são tipicamente sem estado, promovendo um design que depende de serviços de armazenamento externos ou bancos de dados para a persistência de dados. Isso pode levar a aplicações mais resilientes e tolerantes a falhas.
Registro de logs e monitoramento integrados: Plataformas serverless geralmente fornecem ferramentas integradas de monitoramento e registro de logs, permitindo que os desenvolvedores acompanhem o desempenho, solucionem problemas e obtenham insights sobre o comportamento da aplicação.
Menor dependência de fornecedores: Muitas funções podem ser projetadas para serem relativamente independentes de fornecedores, facilitando a migração delas ou a integração de serviços de diferentes provedores de nuvem. Este nem sempre é o caso, como você verá na próxima seção sobre limitações de computação sem servidor (serverless).
Alta disponibilidade: As plataformas sem servidor (serverless) são projetadas para serem altamente disponíveis, com mecanismos de redundância e failover integrados. Isso ajuda a garantir que sua aplicação permaneça acessível e responsiva mesmo diante de falhas.
Eficiência energética e de recursos: O dimensionamento automático e o gerenciamento de recursos de plataformas serverless podem levar a uma melhor eficiência energética e utilização de recursos, reduzindo o impacto ambiental.
Limitações da arquitetura sem servidor
Embora a arquitetura serverless ofereça muitas vantagens, ela também tem suas limitações. Certas características do serverless podem se manifestar como benefícios ou desafios. Ao avaliar o serverless para uma aplicação específica, considere seus requisitos ou restrições relacionados ao seguinte:
Inicializações a frio: As funções serverless podem apresentar um atraso quando a função é invocada pela primeira vez, porque o provedor de nuvem precisa inicializar um novo ambiente de execução. Essa latência pode ser problemática para aplicações que exigem tempos de resposta consistentemente rápidos.
Restrições de recursos: Plataformas sem servidor impõem restrições de recursos, como limites de memória e tempo de execução. Essas restrições podem ser limitantes para tarefas que consomem muitos recursos computacionais ou aplicações que exigem processos de longa duração.
Apatridia As funções serverless tipicamente não guardam estado, o que significa que elas não retêm dados entre as invocações. Embora isso possa ajudar a melhorar a resiliência (conforme explicado acima), o uso de bancos de dados externos ou serviços de armazenamento para a persistência de dados pode adicionar complexidade a algumas aplicações.
Bloqueio do fornecedor: Embora muitas funções possam ser projetadas para serem relativamente independentes de fornecedor, sua aplicação pode ter algumas configurações e integrações específicas de plataforma que tornam desafiadora a migração para um provedor de nuvem diferente.
Depuração complexa: Depurar e solucionar problemas de aplicativos sem servidor pode ser mais desafiador em uma arquitetura sem servidor porque a natureza distribuída das funções e a falta de acesso direto ao servidor podem dificultar a identificação e a resolução de problemas.
Testes locais limitados: Desenvolver e testar funções serverless localmente pode ser desafiador porque os testes locais podem não replicar totalmente o ambiente de execução na nuvem. Os desenvolvedores geralmente precisam implantar funções na plataforma serverless para testes minuciosos.
Ferramentas de computação sem servidor
Há inúmeras plataformas e ferramentas de computação sem servidor que permitem aos desenvolvedores criar, implantar e gerenciar aplicativos sem servidor usando suas linguagens de programação e provedores de serviços em nuvem favoritos. Aqui estão algumas das mais populares:
Plataformas
AWS Lambda da Amazon suporta várias linguagens de programação e se integra perfeitamente a outros serviços da AWS. A AWS também fornece um gateway de API para criar APIs RESTful e acionar funções do Lambda.
Azure Functions da Microsoft é uma oferta sem servidor dentro do ecossistema de nuvem do Azure. Ela suporta vários idiomas e oferece integração com os serviços do Azure, tornando-se uma forte escolha para aplicativos baseados em Windows.
Cloud Functions do Google suporta múltiplas linguagens de programação e se integra bem com outros serviços do Google Cloud, tornando-o adequado para a construção de aplicativos dentro do ecossistema do Google Cloud.
IBM Cloud Functions é baseado no framework Apache OpenWhisk e permite integrar com os serviços do IBM Cloud usando várias linguagens.
Alibaba Cloud Function Compute permite que desenvolvedores criem aplicativos no ecossistema do Alibaba Cloud e se integrem a outros serviços do Alibaba Cloud usando vários idiomas.
Ferramentas
Netlify é uma plataforma mais conhecida por hospedar sites estáticos, mas também oferece funções sem servidor (serverless) para a construção de serviços de backend, APIs e fluxos de trabalho.
OpenFaaS é um framework sem servidor de código aberto para funções baseadas em contêiner. Ele permite que você crie e execute funções sem servidor usando contêineres Docker.
Fissão é outro framework serverless nativo do Kubernetes de código aberto que suporta vários idiomas e foi projetado para fácil implantação em clusters do Kubernetes.
Conclusão
A arquitetura serverless é popular para aplicações web e móveis, IoT, processamento de dados em tempo real e outros casos de uso comuns porque permite que os desenvolvedores se concentrem em escrever código em vez de gerenciar servidores. A responsabilidade de gerenciamento é transferida para provedores de nuvem como AWS Lambda, Azure Functions ou Google Cloud Functions para que eles possam gerenciar a infraestrutura subjacente e dimensionar os recursos automaticamente para acomodar mudanças na carga de trabalho. No entanto, o serverless não é ideal para todos os casos de uso, e certas cargas de trabalho ou tarefas de longa execução podem ser mais adequadas para abordagens tradicionais baseadas em servidores.
Para saber mais sobre arquitetura sem servidor (serverless) e tecnologias relacionadas, confira estes recursos:
Arquitetura Serverless com Computação em Nuvem
Previsões da Couchbase para 2023 – Computação de Borda, Serverless e Mais
Serviços de Aplicativos Capella (BaaS)
Visite nosso Centro de Conceitos para aprender sobre outros tópicos relacionados a bancos de dados.