Minha IBM Efetue login Inscreva-se
O que é computação sem servidor?

O que é computação sem servidor?

Explore a solução serverless da IBM Inscreva-se para receber atualizações da nuvem
Ilustração com colagem de pictogramas de monitor de computador, servidor, nuvens, pontos

Publicado em: 10 de junho de 2024
Stephanie Susnjara, Ian Smalley

O que é computação sem servidor?

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

Obtenha todo o potencial da sua nuvem híbrida

Conecte e integre seus sistemas para preparar sua infraestrutura para a IA.

Conteúdo relacionado Registre-se para receber o guia sobre modernização de aplicativos
As origens do serverless

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.

O ecossistema serverless

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, gateways de interface de programação de aplicativos (API) e arquitetura baseada em eventos.

Bancos de dados e armazenamento serverless

Bancos de dados (SQL e NoSQL) e armazenamento (particularmente armazenamento de objetos) são a base da camada de dados. A abordagem serverless nessas tecnologias envolve a transição do provisionamento de "instâncias" com capacidade, conexão e limites de consulta definidos, além de mudar para modelos que escalam linearmente com a demanda tanto na infraestrutura quanto no preço.

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.

Prós e contras do serverless

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" slow startup pode afetar o desempenho e a capacidade de resposta dos aplicativos 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

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

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

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 Monte Carlo e processamento de genoma.

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 oferece suporte a muitos dos aplicativos mais comuns da atualidade, incluindo gerenciamento de relacionamento com clientes (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, comércio digital, criação de chatbots e outros.

Tutoriais: Comece a utilizar serverless

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, otimizando sua implementação em nuvem e melhorando 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

Soluções

IBM Cloud Code Engine

Execute seu contêiner, código de aplicativo ou trabalho em lote em um ambiente de execução de contêiner totalmente gerenciado.

Explore o IBM Cloud Code Engine
IBM Cloud Pak for Applications

Seja na implementação, na criação de novas aplicações nativas em nuvem, na refatoração ou na reformulação de uma aplicação existente, o Cloud Pak for Applications (CP4Apps) tem tudo o que você precisa.

Explore o IBM Cloud Pak for Applications
IBM Cloud Satellite

Implemente e execute aplicativos de forma consistente em ambientes locais, edge computing e ambientes de nuvem pública de qualquer fornecedor de nuvem.

Explore o IBM Cloud satélite
IBM Cloudant

A camada de dados para aplicações de hiperescala resilientes e globalmente disponíveis, baseados no Apache CouchDB de código aberto.

Conheça o IBM Cloudant
Monitoramento serverless do Instana

Monitore suas aplicações e serviços serverless para otimizar o desempenho, a disponibilidade e a segurança.

Explore o monitoramento serverless do Instana
Recursos

Recursos

Serverless na empresa, 2021

Saiba mais sobre insights sobre oportunidades e desafios do mundo real da computação serverless.

Vá além das funções para executar todas as suas cargas de trabalho em contêineres, inclusive aplicativos web, microsserviços e trabalhos em lote, nesta plataforma serverless totalmente gerenciada.

Volte a aproveitar sua nuvem

Dê uma olhada mais de perto no IBM Cloud Code Engine e nos benefícios que ele oferece.

Dê o próximo passo

A computação serverless traz um jeito mais simples e econômico de criar e operar aplicações na nuvem. Saiba mais sobre o IBM Cloud Code Engine, uma plataforma serverless que cobra apenas pelo uso. Com ele, os desenvolvedores implementam aplicações e fluxos de trabalho serverless sem precisarem dominar Kubernetes.

Explore o Cloud Code Engine
Notas de rodapé

(Todos os links residem fora de ibm.com)

Relatório do mercado global de arquitetura serverless, SkyQuest, março de 2024

Why The Future Of Software And Apps Is Serverless, ReadWrite, outubro de 2012

3 Sobre o OAuth 2.0, OAuth

4 Inicialização mais rápida para aplicativos em contêiner com Open Liberty InstantOn, Open Liberty