Serverless é um modelo de execução e desenvolvimento de aplicações de computação em nuvem para que os desenvolvedores criem e executem códigos de aplicação sem precisar provisionar nem gerenciar servidores e infraestruturas de back-end.
Serverless não significa "sem servidores." Apesar do nome, os servidores na computação serverless são gerenciados por um provedor de serviços em nuvem (CSP). O termo "serverless" descreve a experiência do desenvolvedor com esses servidores invisíveis ao desenvolvedor: ou seja, ele não os vê, não os gerencia nem interage com eles.
Os desenvolvedores podem se concentrar em escrever o melhor código de aplicativo front-end e lógica de negócios com computação serverless. Tudo o que eles precisam fazer é escrever o código do aplicativo e implantá-lo em contêineres gerenciados por um CSP.
O provedor de nuvem cuida do restante, provisionando a infraestrutura de nuvem necessária para executar o código e dimensionando a infraestrutura para cima e para baixo conforme necessário, e também é responsável por todo o gerenciamento e manutenção de infraestrutura de rotina, como atualizações e patches do sistema operacional, gerenciamento de segurança , planejamento de capacidade, monitoramento do sistema e muito mais.
Além disso, os desenvolvedores nunca pagam por capacidade ociosa no serverless. Quando o código é executado, o provedor de nuvem aumenta e provisiona os recursos de computação necessários sob demanda e reduz novamente, a chamada “escalada para zero”, quando a execução é interrompida. A cobrança começa quando a execução começa; e termina quando a execução termina. Normalmente os preços baseiam-se no tempo de execução e nos recursos necessários.
Juntamente com infraestrutura como serviço (IaaS), plataforma como serviço (PaaS), função como serviço (FaaS) e software como serviço (SaaS), o serverless tornou-se uma oferta líder de serviços de nuvem. De acordo com um relatório da SkyQuest Technology, o tamanho do mercado global de arquitetura serverless foi avaliado em US$ 8,01 bilhões em 2022 e espera-se que cresça de US$ 9,84 bilhões em 2023 para US$ 50,86 bilhões até 20311. Hoje, todos os principais provedores de serviços de nuvem oferecem uma plataforma serverless, incluindo Amazon Web Services (AWS Lambda), Microsoft Azure (Azure Functions), Google Cloud (Google Cloud Functions) e IBM Cloud (IBM Cloud Code Engine).
Juntos, a computação serverless, os microservices e os containers formam um triunvirato de tecnologias no núcleo do desenvolvimento de aplicativos cloud-native.
Assista a este vídeo para ver uma explicação detalhada do serverless e da pilha serverless (6:37).
O serverless teve origem em 2008, quando o Google lançou o Google App Engine (GAE), plataforma para desenvolver e hospedar aplicativos da web em data centers gerenciados pelo Google. Com o GAE, um desenvolvedor de software pode criar e iniciar software na nuvem do Google sem se preocupar com tarefas de gerenciamento de servidor, como patches ou balanceamento de carga, que o Google lidou.
O termo "serverless" apareceu pela primeira vez em um artigo de tecnologia do especialista em computação em nuvem Ken Fromm em 20122. Em 2014, a Amazon lançou o AWS Lambda, a primeira plataforma serverless. Batizado com o nome de funções de cálculo e programação lambda, o AWS Lambda, um modelo FaaS, ajudou a estrutura de computação serverless a ganhar apelo no mercado de massa e rápida adoção entre desenvolvedores de software, permitindo que eles executassem código em resposta a eventos sem a necessidade de gerenciamento de servidor. Em 2016, o Microsoft Azure Functions e o Google Cloud Functions lançaram suas plataformas serverless.
Outros participantes importantes no mercado atual de plataformas serverless incluem o IBM® Cloud Code Engine, o Oracle Cloud Infrastructure (OCI) Functions, o Cloudflare Workers e o Alibaba Function Compute.
Serverless é mais do que uma função como serviço (FaaS) — o serviço de computação em nuvem que possibilita aos desenvolvedores executar código ou contêineres em resposta a eventos ou solicitações específicas sem especificar ou gerenciar a infraestrutura necessária para executar o código.
FaaS é o modelo de computação central no serverless e os dois termos são frequentemente utilizados como sinônimos. Em comparação com o FaaS, o serverless é uma pilha completa de serviços que podem responder a eventos ou solicitações específicas e escalar para zero quando não estão mais em uso, e para os quais o provisionamento, o gerenciamento e o faturamento são tratados pelo provedor de nuvem e invisíveis para os desenvolvedores.
Além do FaaS, esses serviços incluem bancos de dados e armazenamento, interface de programação de aplicativos (API) gateways e arquitetura baseada em eventos.
Bancos de dados (SQL e NoSQL) e armazenamento (particularmente object storage) são a base da camada de dados. A abordagem serverless nessas tecnologias envolve a transição do provisionamento de "instâncias" com limites de capacidade, conexão e consulta definidos, além de migrar para modelos que escalam linearmente com a demanda tanto na infraestrutura quanto nos preços.
Os gateways de API atuam como proxies para ações de aplicativos da web e oferecem roteamento de método HTTP, ID e segredos de cliente, limites de taxa, CORS, visualização de uso de API, visualização de logs de resposta e políticas de compartilhamento de API.
As arquiteturas serverless funcionam bem para cargas de trabalho orientadas por eventos e processamento de fluxo, principalmente a plataforma de fluxo de eventos de código aberto Apache Kafka .
As funções automatizadas serverless são sem estado e projetadas para lidar com eventos individuais. Essas funções tornaram-se parte essencial da arquitetura baseada em eventos (EDA), modelo de design de software criado com base na publicação, captura, processamento e armazenamento de eventos. Em uma estrutura de EDA, os produtores de eventos (por exemplo, microsserviços, APIs, dispositivos de IoT) enviam notificações de eventos em tempo real aos consumidores do evento, ativando rotinas de processamento específicas. Por exemplo, quando a Netflix lança uma nova série original, vários serviços EDA aguardam em espera pela notificação de lançamento, o que aciona uma cascata de atualizações para informar os usuários. Muitas outras empresas baseadas em aplicativos móveis e da Web voltados para o usuário (por exemplo, Uber, DoorDash, Instacart) dependem da arquitetura baseada em eventos.
O serverless, a plataforma como serviço (PaaS), os contêineres e as máquinas virtuais (VMs) são cruciais no desenvolvimento das aplicações na nuvem e no ecossistema de computação. Por isso é bom conhecer as diferenças entre os serverless e os demais nos principais atributos.
O Kubernetes é uma plataforma de orquestração de contêineres de código aberto que automatiza a implantação, o gerenciamento e o dimensionamento de contêineres. Essa automação simplifica drasticamente o desenvolvimento de aplicativos em contêineres.
As aplicações serverless são frequentemente implementadas em contêineres. No entanto, o Kubernetes só pode executar aplicativos serverless de forma independente com um software especializado que integra o Kubernetes à plataforma serverless de um provedor de nuvem específico.
Knative é uma extensão de código aberto para Kubernetes que oferece uma estrutura serverless. Ele possibilita que qualquer contêiner seja executado como uma carga de trabalho serverless em qualquer plataforma de nuvem que execute o Kubernetes, seja o contêiner construído em torno de uma função serverless ou algum outro código de aplicativo (por exemplo, microsserviços). Na execução serverless, o Knative abstrai o código e trabalha com o roteamento da rede, gatilhos de eventos e escalada automática.
O Knative é transparente para os desenvolvedores. Eles constroem um contêiner utilizando o Kubernetes, e o Knative faz o resto, executando o contêiner como uma carga de trabalho serverless.
A computação serverless oferece aos desenvolvedores individuais e às equipes de desenvolvimento empresarial muitos benefícios técnicos e comerciais:
Embora o serverless tenha muitas vantagens, é essencial considerar algumas desvantagens:
Embora os CSPs forneçam medidas de segurança para gerenciar aplicativos serverless, o cliente também é responsável por proteger o código e os dados do aplicativo de acordo com um modelo de responsabilidade compartilhada. As medidas de segurança baseadas na nuvem para serverless incluem políticas e soluções de segurança automatizadas, como gerenciamento de eventos e informações de segurança (SIEM), gerenciamento de acesso e identidade (IAM) e detecção e resposta a ameaças.
Seguir as práticas de DevSecOps ajuda as equipes de desenvolvimento a proteger tecnologias serverless. DevSecOps, que é a abreviação de desenvolvimento, segurança e operações, é uma prática de desenvolvimento de aplicações que automatiza a integração de práticas de segurança e proteção em todas as fases do ciclo de vida do desenvolvimento de software, desde o design inicial até a integração, testes, entrega e implementação.
Ao contrário dos ambientes tradicionais de data center local, um modelo de computação serverless pode ajudar as organizações a reduzir o consumo de energia e diminuir sua pegada de carbono para operações de TI.
Além disso, um modelo serverless possibilita que as empresas otimizem suas emissões por meio da eficiência de recursos, pagando e utilizando somente os recursos necessários. Esse recurso resulta em menos energia desperdiçada em processos ociosos ou em excesso.
Devido aos seus atributos e benefícios exclusivos, a arquitetura serverless funciona melhor para casos de uso que envolvem microsserviços, backend móveis e processamento de dados e fluxo de eventos.
O caso de uso mais comum com o serverless hoje é compatibilidade com arquiteturas de microsserviços. O modelo de microsserviços dedica-se à criação de pequenos serviços que realizam um trabalho único e se comunicam entre si por meio de APIs. Os microsserviços também podem ser construídos e operados em PaaS ou contêiner; porém, o serverless vem sendo cada vez mais utilizado devido aos atributos dele em relação a pequenos bits de código, escalabilidade inerente e automática, provisionamento rápido e um modelo de preços que nunca cobra pela capacidade ociosa.
Na plataforma serverless, toda ação (ou função) pode ser transformada em um endpoint HTTP pronto para ser consumido pelos clientes web. Quando viabilizadas para web, essas ações são chamadas de ações da web. Você pode montá-las em uma API completa com um gateway de APIs que oferece mais segurança e limitação de taxas e aceita OAuth e domínio personalizado.
O Open Liberty InstantOn4 adota uma nova abordagem para oferecer suporte à inicialização rápida de aplicativos serverless. Com o InstantOn, você pode obter um ponto de verificação do processo do aplicativo Java em execução durante a criação do aplicativo e, em seguida, restaurar esse ponto de verificação na produção. A restauração é rápida (na casa dos 100 s de milissegundos), o que a torna ideal para serverless. Como o InstantOn é um ponto de verificação do aplicativo existente, seu comportamento após a restauração é idêntico, incluindo o mesmo excelente desempenho de throughput. Esse processo possibilita que as organizações adotem o serverless para novos aplicativos nativos da nuvem e oferece a oportunidade de trazer o serverless para a empresa existente.
O serverless é adequado para trabalhar com dados estruturados de texto, áudio, imagem e vídeo em torno de tarefas como enriquecimento de dados, transformação, validação e limpeza. Os desenvolvedores também podem usá-lo para processamento de PDF, normalização de áudio, processamento de imagem (rotação, nitidez, redução de ruído, geração de miniaturas), reconhecimento óptico de caracteres (OCR) e transcodificação de vídeo.
Qualquer tarefa embaraçosamente paralela é um bom caso de uso para um tempo de execução serverless, com cada tarefa paralelizável resultando em uma invocação de ação. Os exemplos de tarefas incluem pesquisa e processamento de dados (especificamente cloud object storage), operações MapReduce e raspagem da web, automação de processos de negócios, ajuste de hiperparâmetros, simulações de Monte Carlo e processamento de genomas.
A combinação do Apache Kafka gerenciado com FaaS e banco de dados ou armazenamento oferece uma base robusta para construções em tempo real de pipelines de dados e aplicativos de streaming. Essas arquiteturas são ideais para trabalhar com todos os tipos de ingestão de fluxo de dados (para validação, limpeza, enriquecimento, transformação), incluindo dados de sensores IOT, dados de registro de aplicações, dados do mercado financeiro e fluxos de dados de negócios (provenientes de outras fontes de dados).
O serverless oferece a escalabilidade automatizada necessária para executar cargas de trabalho de inteligência artificial (IA) e aprendizado de máquina (ML), garantindo o desempenho ideal e acelerando a inovação.
A computação sem servidor oferece suporte a uma estratégia de nuvem híbrida, proporcionando a agilidade, a flexibilidade e a escalabilidade necessárias para acomodar cargas de trabalho flutuantes em ambientes locais, de nuvem pública, nuvem privada e edge.
O serverless é compatível com muitas das aplicações mais comuns da atualidade, incluindo gerenciamento de relacionamento com o cliente (CRM), computação de alto desempenho (HPC), análise de dados de big data, automação de processos de negócios, streaming de vídeo, jogos, telemedicina, digital commerce, criação de chatbots e muito mais.
Pra ampliar seus conhecimentos de computação serverless, confira estes tutoriais:
O IBM Cloud Virtual Server for VPC é uma linha de servidores virtuais Intel x86, IBM® Z e IBM LinuxONE construídos na IBM Cloud Virtual Private Cloud.
Os servidores dedicados da IBM Cloud fornecem uma solução escalável de hospedagem na web com tráfego de backhaul ilimitado e sem custo e amplas opções de personalização.
Libere novos recursos e aumente a agilidade dos negócios com os serviços de consultoria em nuvem da IBM. Descubra como cocriar soluções, acelerar a transformação digital e otimizar o desempenho por meio de estratégias de nuvem híbrida e parcerias especializadas.
(Todos os links residem fora de ibm.com)
1 Global Serverless Architecture Market Report, SkyQuest, março de 2024
2 Why The Future Of Software And Apps Is Serverless, ReadWrite, outubro de 2012
3 About OAuth 2.0, OAuth
4 Faster startup for containerized applications with Open Liberty InstantOn, Open Liberty