Ilustração em estilo plano de caminhões e pacotes.

Computação em larga escala simplificada

As frotas sem servidor fornecem uma maneira fácil de implementar cargas de trabalho intensivas em computação de forma eficiente e segura em VMs ou GPUs.

Saiba mais agora!

O que é computação sem servidor?

Vista aérea de Xangai Lujiazui em nuvens estratosféricas

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

O que é computação sem servidor?

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).

As origens do serverless

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.

Vista aérea de rodovias

Fique por dentro da nuvem 


Receba o boletim informativo semanal do Think para ver orientações especializadas sobre a otimização das configurações multinuvem na era da IA.

O ecossistema serverless

Serverless e FaaS

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 e armazenamento serverless

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.

Gateways de API

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.

Arquitetura serverless e baseada em eventos

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.

Serverless versus PaaS, contêineres e VMs

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.

  • Tempo de provisionamento: medido em milissegundos nos modelos serverless versus minutos ou horas nos outros modelos.
  • Carga administrativa: nenhuma no serverless x um continuum de leve a médio e pesado no PaaS, contêiner e VM, respectivamente.
  • Manutenção: As arquiteturas serverless são gerenciadas 100% pelos CSPs. O mesmo vale para PaaS, mas contêineres e VMs exigem manutenção considerável, incluindo atualização e gerenciamento de sistemas operacionais, imagens de contêiner, conexões e assim por diante.
  • Dimensionamento: o autoescalonamento, incluindo o autoescalonamento para zero, é instantâneo e inerente ao serverless. Os outros modelos oferecem escalada automática, mas lenta, que exige um cuidadoso ajuste das regras de auto-scaling e não faz escalada para zero.
  • Planejamento da capacidade: nenhum é necessário para servidores serverless. Os outros modelos exigem uma combinação de escalabilidade automática e planejamento da capacidade.
  • Statelessness: inerente ao serverless. Ou seja: a escalabilidade nunca é problema; o estado é mantido em um serviço ou recurso externo. PaaS, contêineres e VMs podem utilizar HTTP, manter um soquete ou conexão aberta por longos períodos e armazenar o estado na memória entre as chamadas.
  • Alta disponibilidade (HA) e recuperação de desastres (DR): o Serverless oferece alta disponibilidade e recuperação de desastres sem esforço ou custo extra. Os outros modelos exigem custos adicionais e esforço de gestão. A infraestrutura pode ser reiniciada automaticamente com VMs e contêineres.
  • Utilização de recursos: o serverless é 100% eficiente porque não há capacidade ociosa, já que é invocado somente mediante solicitação. Todos os outros modelos apresentam pelo menos algum grau de capacidade ociosa.
  • Faturamento e economia: o serverless é medido em unidades de 100 milissegundos. Já o PaaS, o contêiner e a VM normalmente são medidos por hora ou minuto.

Serverless, Kubernetes e Knative

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.

AI Academy

Preparando-se para a IA com a nuvem híbrida

Guiado pelos principais líderes da IBM, o conteúdo foi desenvolvido para ajudar líderes empresariais a terem o conhecimento necessário para priorizar os investimentos em IA que podem estimular o crescimento.

Prós e contras do serverless

Vantagens

A computação serverless oferece aos desenvolvedores individuais e às equipes de desenvolvimento empresarial muitos benefícios técnicos e comerciais:

  • Maior produtividade do desenvolvedor: como observado, o serverless possibilita que as equipes de desenvolvimento se concentrem em escrever código, não em gerenciar a infraestrutura. Isso dá aos desenvolvedores mais tempo para inovar e otimizar suas funções de aplicativos front-end e lógica de negócios.
  • Pague somente pela execução: o medidor é acionado quando a solicitação é feita e é encerrado quando a execução termina. Compare isso com o modelo de computação IaaS, em que os clientes pagam pelos servidores físicos, VMs e outros recursos necessários para executar aplicativos, desde o provisionamento desses recursos até o desatribuição explícita.
  • Desenvolva em qualquer linguagem: o serverless é um ambiente multilinguagem que possibilita aos desenvolvedores programar em qualquer linguagem ou estrutura, seja Java, Python, JavaScript, node.js, em que estejam familiarizados.
  • Ciclos simplificados no desenvolvimento ena DevOps. O serverless simplifica a implementação e, de modo mais amplo, a DevOps, pois os desenvolvedores não perdem tempo definindo a infraestrutura necessária para integrar, testar, entregar e implementar as construções de códigos na produção.
  • Desempenhoeconômico. Em certas cargas de trabalho, como processamento paralelizáveis, processamento de fluxo e algumas tarefas de processamento de dados, a computação serverless pode ser mais rápida e mais econômica do que outras formas de computação.
  • Reduzir latência: em um ambiente serverless, o código pode ser executado mais perto do usuário final, diminuindo a latência.
  • Visibilidade do uso: as plataformas serverless dão visibilidade quase total dos tempos do sistema e do usuário e sabem agregar informações de uso de forma sistemática.

Desvantagens

Embora o serverless tenha muitas vantagens, é essencial considerar algumas desvantagens:

  • Menos controle: em uma configuração serverless, uma organização transfere o controle do servidor para um CSP de terceiros, abrindo mão do gerenciamento de hardware e ambientes de execução.
  • Lock-in com fornecedor: cada provedor de serviços oferece recursos exclusivos serverless e recursos que são incompatíveis com outros fornecedores.
  • Inicialização lenta: Também conhecida como "cold start", a inicialização lenta pode afetar o desempenho e a capacidade de resposta das aplicações serverless, especialmente em ambientes de demanda em tempo real. 
  • Teste e depuração complexos: a depuraçãopode ser mais complicada com um modelo de computação serverless, pois os desenvolvedores não têm visibilidade dos processos de back-end.
  • Custo mais alto para a execução de aplicativos longos: Os modelos de execução serverless não foram projetados para executar códigos por períodos prolongados. Portanto os processos de longa duração podem custar mais do que os ambientes tradicionais de servidor dedicado ou de VM.

Serverless e segurança

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.

Serverless e sustentabilidade

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.

Casos de Uso Serverless

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.

Serverless e microsserviços

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.

Back-ends de API

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.

Abra o Liberty InstantOn (CRIU)

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.

Processamento de dados

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.

Operações de computação e "mapeamento" massivamente paralelas

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.

Cargas de trabalho de processamento do fluxo

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).

IA e serverless

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.

Nuvem híbrida e serverless

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.

Aplicações comuns para servidores serverless

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.

Tutoriais: Comece a utilizar serverless

Pra ampliar seus conhecimentos de computação serverless, confira estes tutoriais:

  • Experimente o Liberty InstantOn (CRIU): libere um novo valor para sua organização com o IBM WebSphere Liberty, ao otimizar sua implementação em nuvem e melhorar a eficiência operacional. O Liberty InstantOn apresenta uma maneira melhor de obter desempenho serverless sem comprometimento.
  • Execute trabalhos em lote: aprenda utilizar o console do Code Engine para executar um trabalho em lote. O trabalho executa uma ou mais instâncias do seu código executável. Diferente das aplicações, que lidam com solicitações HTTP, os trabalhos são criados para ser executados uma vez e, depois, encerrados.
Soluções relacionadas
IBM Cloud Virtual Server for VPC

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.

Explore o virtual server na nuvem
Hospedagem web na nuvem 

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.

Explore as soluções de hospedagem na web
Serviços de consultoria em nuvem 

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.

Serviço de nuvem
Dê o próximo passo

Fortaleça sua presença na web com soluções de hospedagem na web confiáveis e seguras da IBM Cloud. Desde sites de alto tráfego até aplicações corporativas, os IBM Cloud Bare Metal Servers oferecem flexibilidade, transferência ilimitada de dados e alcance global, sob medida para suas necessidades de hospedagem.

Explore a hospedagem na web do IBM Cloud Crie sua conta gratuita na IBM Cloud
Notas de rodapé

(Todos os links residem fora de ibm.com)

Global Serverless Architecture Market Report, SkyQuest, março de 2024

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