O que é serverless?
Serverless é um modelo de desenvolvimento e execução de aplicativos na cloud que permite aos desenvolvedores criar e executar códigos sem gerenciar servidores ou pagar por infraestrutura em cloud inativa
imagem abstrata nas cores preto e azul
O que é serverless?

Serverless é um modelo de desenvolvimento e execução de aplicativos da cloud computing que permite aos desenvolvedores construir e executar códigos de aplicativo sem fornecer ou gerenciar servidores ou infraestrutura de backend.

O serverless permite que os desenvolvedores coloquem todo o seu foco em escrever o melhor código de aplicativo de front-end e lógica de negócios possível. Tudo que os desenvolvedores precisam fazer é escrever seu código do aplicativo e implementá-lo em contêineres gerenciados por um provedor de serviço de cloud. O provedor de cloud trata do resto, fornecendo a infraestrutura em cloud necessária para executar o código, e aumentando e diminuindo a capacidade da infraestrutura sob demanda, conforme necessário. O provedor de cloud também é responsável por todo o gerenciamento e a manutenção de rotina da infraestrutura, como atualizações do sistema operacional e correções, gerenciamento de segurança, planejamento de capacidade, monitoramento do sistema e muito mais.

Também importante: com o serverless, os desenvolvedores nunca pagam por capacidade inativa. O provedor de cloud gera e fornece os recursos de computação necessários sob demanda quando o código é executado e os remove novamente, chamado de "ajustando a escala até zero", quando a execução é interrompida. A faturamento começa no início da execução e termina quando a execução é interrompida. Geralmente, a precificação é baseada no tempo de execução e nos recursos necessários.

Serverless não significa "nenhum servidor"

Apesar do nome, existem definitivamente servidores na serverless computing. "Serverless" descreve a experiência do desenvolvedor com esses servidores. Eles são invisíveis para o desenvolvedor, que não os vê, não os gerencia, nem interage com eles de alguma forma.

Hoje, todos os principais provedores de serviço de cloud 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 serverless computing, os microsserviços e os contêineres formam um triunvirato de tecnologias normalmente consideradas como pertencentes ao núcleo de desenvolvimento de aplicativos nativos de cloud.

Serverless é mais do que apenas FaaS

A função como um serviço, ou FaaS, é um serviço de cloud computing que permite aos desenvolvedores executar códigos ou contêineres em resposta a eventos ou solicitações específicos, sem especificar ou gerenciar a infraestrutura necessária para executar o código.

FaaS é o modelo de computação central para serverless, e os dois termos são frequentemente usados de forma intercambiável. Mas serverless é muito mais do que FaaS. Serverless é uma solução completa de serviços que pode responder a eventos ou solicitações específicos, e ajustar a escala até zero quando não estiver mais em uso, e para o qual o fornecimento, o gerenciamento e o faturamento são tratados pelo provedor de cloud e invisível aos desenvolvedores. Além do FaaS, estes serviços incluem:

  • Bancos de dados serverless e armazenamento: bancos de dados (SQL e NoSQL) e armazenamento (especialmente armazenamento de objetos) são a base da camada de dados. Uma abordagem serverless para essas tecnologias envolve executar a transição para se distanciar de fornecer "instâncias" com capacidade definida, conexão e limites de consulta, e se mover em direção a modelos que ajustam a escala de forma linear com demanda tanto em infraestrutura quanto em precificação.

  • Fluxo de eventos e sistema de mensagens: arquiteturas serverless são bem adequadas para cargas de trabalho orientadas por eventos e de processamento de fluxos, mais notavelmente a plataforma de fluxo de eventos de software livre Apache Kafka. 

  • Gateways de API: os gateways de API atuam como proxies para ações da web e fornecem roteamento de método de HTTP, ID e segredos do cliente, limites de taxa, CORS, visualização de utilização de API, visualização de logs de resposta e políticas de compartilhamento de API. 

Ashher Syed da IBM fornece uma explicação detalhada sobre serverless e a solução serverless (6:37):

Serverless vs. PaaS, Contêineres e VMs

Como serverless, plataforma como serviço (PaaS), contêineres, e máquinas virtuais (VMs) desempenham um papel crítico no desenvolvimento de aplicativos na cloud e no ecossistema computacional, é útil comparar como o serverless se compara aos outros através de alguns atributos-chave.

  • Tempo de fornecimento: medido em milissegundos por serverless, vs. minutos a horas para os outros modelos.

     

  • Carga administrativa: nenhuma para serverless, em comparação com um contínuo de leve a médio a pesado para PaaS, contêineres e VMs, respectivamente.

     

  • Manutenção: arquiteturas serverless são gerenciadas 100% pelo provedor. O mesmo é verdadeiro para PaaS, mas contêineres e VMs requerem manutenção significativa, incluindo atualizar/gerenciar sistemas operacionais, imagens de contêineres, conexões, etc.

     

  • Ajuste de escala: ajuste automático de escala, incluindo ajuste automático de escala até zero, é instantâneo e inerente para serverless. Os outros modelos oferecem ajuste de escala automático, porém lento, que requer um ajuste cuidadoso das regras de ajuste automático de escala e sem ajuste de escala até zero.

     

  • Planejamento da capacidade: nenhum necessário para serverless. Os demais modelos requerem uma combinação de alguma escalabilidade automática e algum planejamento da capacidade.

     

  • Ausência de estado: inerente para serverless, o que significa que a escalabilidade nunca é um 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 aberto por longos períodos e armazenar o estado na memória entre chamadas.

     

  • Alta disponibilidade (HA) e recuperação de desastre (DR): ambos são inerentes para serverless sem esforço ou custo adicional. Os demais modelos requerem custo e gerenciamento de esforço adicionais. No caso de ambos, VMs e contêineres, a infraestrutura pode ser reiniciada automaticamente.

  • Utilização de recursos: serverless é 100% eficiente porque não existem coisas como capacidade inativa, pois ela é chamada apenas mediante solicitação. Todos os outros modelos têm pelo menos algum grau de capacidade inativa.

     

  • Granularidade de faturamento e economia: serverless é medido em unidades de 100 milissegundos. PaaS, contêineres e VMs normalmente são medidos por hora ou por minuto.

Serverless, Kubernetes e Knative

Kubernetes é uma plataforma de orquestração de contêiner de software livre que automatiza a implementação, o gerenciamento e o ajuste de escala de contêineres. A automação do Kubernetes simplifica drasticamente o desenvolvimento de aplicativos baseados em contêineres.

Aplicativos serverless geralmente são implementados em contêineres. Sozinho, o Kubernetes não pode executar aplicativos serverless sem um software especializado que integra o Kubernetes com a plataforma serverless de um provedor de cloud específico.

O Knative fornece um framework serverless para o Kubernetes. É uma extensão de software livre do Kubernetes que permite que qualquer contêiner execute uma carga de trabalho serverless em qualquer plataforma de cloud que execute o Kubernetes, se o contêiner for desenvolvido em torno de uma função serverless ou algum outro código do aplicativo (por exemplo, microsserviços). O Knative funciona abstraindo o código e lidando com o roteamento da rede, os acionadores de eventos e o ajuste automático de escala para execução serverless.

O Knative é transparente para os desenvolvedores, pois eles apenas constroem um contêiner como de costume usando Kubernetes, e o Knative faz o resto, executando o contêiner como uma carga de trabalho serverless.

Saiba mais sobre o Knative

Prós e contras de Serverless

Prós

Considerando todos os aspectos anteriores, não deve ser nenhuma surpresa que a serverless computing oferece uma série de benefícios técnicos e de negócios a desenvolvedores individuais e a equipes de desenvolvimento corporativo.

Melhor produtividade do desenvolvedor:  conforme observado acima, o serverless permite que as equipes de desenvolvimento se concentrem em escrever código, não gerenciar a infraestrutura. Proporcione aos desenvolvedores muito mais tempo para inovar e otimizar a funcionalidade e a lógica de negócios do seu aplicativo de front-end.

Pague apenas pela execução: o medidor começa quando a solicitação é feita e termina quando a execução termina. Compare isso com o modelo de computação infraestrutura como serviço (IaaS),  em que o cliente paga pelos servidores físicos, máquinas virtuais (VMs) e outros recursos necessários à execução de aplicativos, desde o momento de eles fornecem esses recursos até quando eles explicitamente os desatribuem.

Desenvolva em qualquer linguagem:  o serverless é um ambiente poliglota, permitindo que os desenvolvedores programem em qualquer linguagem ou framework, como Java, Python, JavaScript, node.js, com os quais eles se sentem confortáveis.

Ciclos simplificados de desenvolvimento/DevOps. O serverless simplifica a implementação e, em um sentido mais amplo, simplifica o DevOps, pois os desenvolvedores não perdem tempo definindo a infraestrutura necessária para integrar, testar, entregar e implementar compilações de código na produção.

Desempenho com custo reduzido. Para determinadas cargas de trabalho, embaraçosamente, o processamento paralelo, o processamento de fluxos, as determinadas tarefas de processamento de dados, a serverless computing pode ser tanto mais rápida quanto com custo reduzido do que outras formas de computação.

Visibilidade de uso. As plataformas serverless fornecem visibilidade quase total sobre o sistema e os horários do usuário e pode agregar informações de uso sistematicamente.

Os profissionais de desenvolvimento e de TI citam outros benefícios específicos da serverless computing. É possível conhecê-los usando a ferramenta interativa (PDF, 1,8 MB) abaixo:

 

Casos de uso para Serverless

Dada a sua combinação exclusiva de atributos e benefícios, a arquitetura serverless é adequada para casos de uso em torno de microsserviços, backends móveis, e processamento de fluxo de eventos e dados.

Serverless e microsserviços

O caso de uso mais comum de serverless atualmente é o suporte a arquiteturas de microsserviços. O modelo de microsserviços é focado na criação de pequenos serviços que executam uma única tarefa e se comunicam com outro por meio de APIs. Embora os microsserviços também possam ser desenvolvidos e operados usando PaaS ou contêineres, o serverless obteve um impulso significativo devido aos seus atributos em torno de pequenos bits de código, ajuste de escala automático ou inerente, fornecimento rápido e um modelo de precificação que nunca cobra por capacidade inativa.

Backends de API

Qualquer ação (ou função) em uma plataforma serverless pode ser transformada em um terminal HTTP pronto para ser consumido por clientes web. Quando ativado para a web, essas ações são chamadas de ações da web. Após ter ações da web, é possível montá-las em uma API completa com um gateway de API que proporciona segurança adicional, suporte a OAuth, limitação de taxa e suporte a domínio customizado.

Para experiência prática com backends de API, tente o tutorial "Aplicativo da web e API serverless."

Processamento de dados

O serverless é adequado para trabalhar com texto estruturado, áudio, imagem e dados de vídeo, em torno de tarefas como enriquecimento de dados, transformação, validação, limpeza; processamento de PDF; normalização de áudio; processamento de imagem (rotação, ajuste de nitidez, redução de ruído, geração de miniatura); reconhecimento de caractere ótico (OCR); e transcodificação de vídeo. Para um caso de uso de processo de imagem detalhado, veja "Como o SiteSpirit ficou 10 vezes mais rápido, com 10% do custo.

Operações extremamente paralelas de computação/"Mapeamento"

Qualquer tipo de tarefa, embaraçosamente paralela, é um bom caso de uso para um tempo de execução serverless, com cada tarefa paralelizável resultando em uma chamada de ação. Tarefas simples incluem tudo, desde procura e processamento de dados (especificamente Cloud Object Storage), operações de Mapear(-Reduzir) e raspagem de dados até a automação de processos de negócios, ajuste de hiperparâmetros, simulações de Monte Carlo e processamento de genoma.

Para um exemplo detalhado, veja "Como uma simulação de Monte Carlo foi executada de forma 160 vezes mais rápida em uma arquitetura serverless vs. uma máquina local."

Cargas de trabalho de processamento de fluxo

A combinação do Apache Kafka gerenciado com FaaS e banco de dados/armazenamento oferece uma base potente para construções em tempo real de pipelines de dados e aplicativos de fluxo. Essas arquiteturas são ideais para trabalhar com todos os tipos de alimentações de fluxo de dados (para validação, limpeza, enriquecimento, transformação), incluindo dados de sensores de IoT, dados de log de aplicativos, dados do mercado financeiro e fluxos de dados de negócios (de outras origens de dados).

Aplicativos comuns para Serverless

Em uma recente pesquisa de opinião da IBM, profissionais de TI relataram usar o serverless em uma ampla variedade de aplicativos, incluindo CRM (gerenciamento de relacionamento com o cliente), análise de dados e inteligência de negócios, finanças e muito mais:

 

Tutoriais: introdução à serverless computing

É possível expandir suas habilidades de serverless computing com estes tutoriais:

Soluções
IBM Cloud Code Engine

Execute o seu contêiner, código do aplicativo ou tarefa em lote em um tempo de execução de contêiner totalmente gerenciado

Conheça o IBM Cloud Code Engine
IBM Cloud Satellite

Implemente e execute aplicativos de forma consistente no local, na computação de borda e em ambientes de cloud pública a partir de qualquer fornecedor de cloud

Conheça o IBM Cloud Satellite
IBM Cloudant

Descubra a camada de dados para aplicativos de larga escala, resilientes e disponíveis globalmente, baseados no software livre Apache CouchDB

Conheça o IBM Cloudant
Recursos Serverless nas empresas, 2021

Uma nova pesquisa revela insights sobre as oportunidades e desafios do mundo real da serverless computing.

Introdução ao IBM Cloud Code Engine

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

Desfrute de sua cloud novamente

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

Dê o próximo passo

A serverless computing oferece uma maneira mais simples e com custo reduzido de construir e operar aplicativos na cloud. Saiba mais sobre o IBM Cloud Code Engine, uma plataforma serverless pré-paga que permite aos desenvolvedores implementar aplicativos e fluxos de trabalho serverless sem a necessidade de habilidades serverless do Kubernetes.

Conheça o IBM Cloud Code Engine hoje