O futuro de Cloud é Serverless... o que você deveria saber para não errar.

O futuro de Cloud é Serverless... o que você deveria saber para não errar.

No passado, montar sua própria infraestrutura de TI era considerado um diferencial competitivo. Tomava muito tempo, era trabalhoso e envolvia muito esforço no dimensionamento, seleção, aquisição de hardware e software, instalação física e lógica, configuração etc. Demorava bastante e se gastava muito dinheiro até ser possível realizar algum tipo de trabalho produtivo.

Com a chegada de Cloud Computing, passou a existir a possibilidade de contratar servidores virtuais e outros recursos em nuvem, pagos por uso, e com disponibilidade quase que imediata. A equação ficou mais flexível, porém ainda permanecia o trabalho de implantar, gerenciar e manter arquiteturas que podem se tornar bastante complexas.

Surgiram novas opções, como a arquitetura de containers, que oferece acesso ainda mais rápido e automatizado aos recursos de infraestrutura. Outras opções de Platform as a Service, como Cloud Foundry, vieram dar um passo adicional, reduzindo o esforço de gestão e abstraindo mais ainda a infraestrutura. Isso permite mais foco no desenvolvimento de software e maior autonomia aos desenvolvedores. Ainda assim, é necessário pensar no dimensionamento de recursos das aplicações.

O que viria depois?

Imagine não se preocupar com nenhuma destas questões, e ter à disposição acesso imediato, automático e transparente a uma quantidade “ilimitada” de recursos. Esqueça a preocupação com o custo fixo para manter a sua infraestrutura, pois somente recursos usados em tarefas produtivas serão cobrados. Some a isso ao fato de não ser necessário o dimensionamento ou gestão de servidores, máquinas virtuais ou containers.

Parece bom?

Estas são as promessas da arquitetura Serverless, a nova evolução na área de Cloud Computing.

Mas o que é Serverless?

A arquitetura Serverless se refere as aplicações que substituem, em grande escala, seu código próprio por serviços de terceiros, sejam eles BaaS – Backend as a Service, ou FaaS – Function as a Service.

Uma das principais características da arquitetura Serverless é a abstração da infraestrutura. Os usuários não precisam se preocupar com o número de servidores, escalabilidade de recursos ou outros aspectos corriqueiros da administração da infraestrutura de TI. A plataforma se encarrega de garantir a disponibilidade dos mesmos no momento, volume e configuração necessários. Desta forma, os desenvolvedores podem trabalhar de forma mais autônoma sem a necessidade constante de suporte por parte de administradores de sistemas.

Um efeito colateral é permitir às aplicações praticamente abrir mão do uso de infraestrutura dedicada, abolindo em grande parte custos fixos. Isso pode trazer uma grande redução dos custos de operação, ao mesmo tempo que diminui a complexidade de implementar e gerenciar aplicações.

Como funciona isso? Vamos entender um pouco mais o que é BaaS e FaaS.

Backend as a Service

O Termo BaaS, Backend as a Service, se refere a serviços “off the shelf”, comumente utilizados em aplicações, como bancos de dados, armazenamento de arquivos, autenticação de usuários etc. Eles podem ser utilizados em substituição lógica própria desenvolvida para uma aplicação, o que simplifica o seu desenvolvimento. Evita também a necessidade de desenvolver diversas vezes código para serviços genéricos empregados repetidamente em diferentes aplicações.

Para entender o conceito, vejamos um exemplo: praticamente todas as aplicações usam algum tipo de método de autenticação de usuários. Usualmente, cada uma inclui código próprio desenvolvido para este fim. Isso faz com que qualquer mudança no processo de autenticação venha a requerer mudanças no código em cada uma delas, o que é trabalhoso, demorado e caro.

BaaS oferece a alternativa de substituir esta lógica de autenticação nas aplicações por um serviço publico acessado através de uma API. Isso garante que qualquer mudança no processo de autenticação seja transparente às aplicações pois, enquanto a API de acesso e o comportamento do serviço permanecerem inalterados, seu código pode ser modificado sem maiores impactos.

Os efeitos são muito positivos: menor tempo de desenvolvimento e manutenção e um modelo padronizado para autenticação em todas as aplicações. Alguns exemplos são os serviços públicos de autenticação de identidade (Cloud Identity Service), bancos de dados como serviço (DBaaS) e Object Storage (ICOS) entre outros.

Vale a pena comentar que BaaS não é algo novo. Os primeiros serviços deste tipo existem desde os primórdios de Cloud, há mais de dez anos. Entretanto, eles não eram denominados Serverless, e somente passaram a ser classificados assim somente há pouco tempo, com o advento de FaaS, Function as a Service.

Function as a Service

O termo Serverless surgiu com a aparecimento de plataformas de Function as a Service, FaaS, lançadas pelos principais provedores de Cloud Computing. Alguns exemplos são o Openwhisk, originalmente desenvolvido pela IBM, e o Lambda da Amazon.

A proposta é disponibilizar uma plataforma capaz de monitorar a ocorrência de eventos pré-definidos que, quando identificados, disparam a execução de funções desenvolvidas para tratá-los em um ambiente de execução temporário. Eventos, neste caso, podem ser coisas tão distintas quando uma chamada http, o upload de um arquivo para um repositório ou o recebimento de um e-mail. Há uma ampla gama de eventos suportados que variam entre os distintos provedores. A própria plataforma se encarrega de monitorar sua ocorrência e, quando identificados, acionar as funções correspondentes.

As funções, por sua vez, não estão sempre em execução, mas são ativadas apenas quando um evento para o qual estão associadas ocorre. Neste momento, a plataforma cria um container temporário para execução, que é destruído algum tempo após o término de sua rotina. Aos usuários não é dado controle sobre a infraestrutura, o tamanho ou quantidade de instâncias.

Todo o processo é automatizado, a coisa simplesmente acontece.

A novidade aqui é que a infraestrutura se torna transparente. Enquanto em uma aplicação tradicional seria necessário levar em conta todo stack (servidor, sistema operacional, runtime, bibliotecas, aplicação, funções/serviços), na arquitetura serverless o foco é quase que exclusivo no código da função e no evento que a inicia.

A aplicação de FaaS é muito ampla e há diversos casos de uso. Os mais simples podem envolver execução de uma função em intervalos de tempo pré-definidos (como um cron job) ou mesmo executar uma ação, como a transcodificação de uma arquivo de mídia para um novo formato, quando um upload de um vídeo para um repositório é detectado.

Existem outros casos de uso mais complexos como a implementação de APIs de acesso para clientes e parceiros, onde cada chamada de API instancia um serviço FaaS específico, ou uso em IoT (Internet of Things), onde diferentes funções podem ser acionadas para tratar eventos como a mudança de leitura em sensores remotos. Há bons exemplos de casos de uso neste artigo que inclui código disponível no Github.

Há também situações onde funções podem assumir o papel de microserviços simples, que podem ser compostos de forma concatenada para formar aplicações mais complexas. Um bom exemplo pode ser encontrado neste outro artigo.

Por ser um tema relativamente recente, novos casos de uso continuam a ser constantemente desenvolvidos. Entretanto, já há uma série de áreas de aplicação que combinam, quase que exclusivamente, FaaS e BaaS na construção de aplicações complexas.

Vantagens & Desvantagens

Como em tudo, há pontos positivos e negativos. Vejamos alguns deles.

The Good

  • Tempo reduzido de desenvolvimento = menor time to value
  • Cobrança somente pelos recursos efetivamente utilizados.
  • Custo menor de operação e desenvolvimento.
  • Aderência a métodos agile e a arquitetura de microserviços.
  • Menor complexidade de software.
  • Fácil implantação pois requer menor intervenção de administradores de sistema

The Bad

  • Não é adequado para serviços que operam por longos períodos pois pode acabar custando mais que outras opções como servidores dedicados.
  • O ambiente FaaS em Cloud Pública é sempre compartilhado, o que pode ser inadequado pela ótica de compliance para alguns usuários.
  • O tempo de resposta pode ser um problema para alguns casos de uso pela demora para instanciar uma função na primeira vez que é acionada.
  • Como qualquer nova tecnologia, faltam boas ferramentas de depuração e monitoração.

The Ugly

Existe um grande risco de lock-in, ou seja, que ao desenvolver sua aplicação sobre uma plataforma FaaS de mercado, você esteja preso à uma tecnologia proprietária. Este risco é maior na arquitetura Serverless que em outras modalidades como VMs, containers ou PaaS já que uma boa parte da lógica de controle de sua aplicação está na plataforma.

Uma maneira de evitar este problema é optar por uma plataforma FaaS aberta. O melhor exemplo é o Apache Openwhisk. Ela é a plataforma FaaS originalmente desenvolvida pela divisão de pesquisa da IBM, que foi doada como open source à Apache Foundation. O Openwhisk pode ser usado em diferentes modelos de implantação, desde um datacenter local, em Cloud pública ou como serviço na IBM Cloud.

É a melhor forma de evitar as armadilhas dos ambientes proprietários.

Serverless em seu Futuro

Seja qual sua visão sobre o tema, é bem possível que venha a utilizar em breve esta arquitetura em seus novos projetos. Fatores como aplicações baseadas em eventos, IoT e mobilidade tornam Serverless uma ótima opção. Mais ainda, a combinação de pagamento por uso efetivo, escalabilidade, velocidade de implantação e independência de administradores de sistema é muito atraente, especialmente para os desenvolvedores.

Por outro lado, é recomendada a precaução com o risco de lock-in pois embora tenha o controle sobre seu código, toda a tecnologia ao redor pertence ao seu provedor de Cloud.

Isso significa que mudar de provedor pode não ser uma opção, a não ser que opte por uma opção aberta.

Uma coisa é certa, “Serverless é para todos, mas não para tudo”. Não são todos os casos de uso que se aplicam a arquitetura Serverless, mas ela é uma opção muito interessante para muitos contextos de aplicação podendo oferecer muita agilidade e custos mais baixos.

Para saber mais:

Apache Openwhisk

IBM Cloud Openwhisk (avaliação gratuita)

Openwhisk Bootcamp Workshop

Build a user facing application with Openwhisk

Serverless Conference (vídeos de múltiplas palestras)

451 Research - The Economics of Serverless Cloud Computing

Davi Cunha

Enterprise Sales | Banking | BaaS | Open Finance | Payments | Pix | Credit

7 a

Tema super atual...muito bom texto!

Melhor artigo sobre Serverless que li até hoje. Explicações muito claras. Parabéns!

Antonio Dinis

Consultor em Tecnologia na V8.Tech

7 a

Muito bom!!!!

Marcus Almeida

Ajudando Empresas na América Latina a Prosperar com Soluções Inovadoras da SAP | Impulsionando a Transformação Digital e o Crescimento | Líder de Vendas Centrado no Cliente

7 a

Belo Artigo Paraiso !

André Venâncio

Client Delivery Partner @ Microsoft & Inovation Master @ PUC-SP

7 a

Excelente artigo Paraiso!

Entre para ver ou adicionar um comentário

Outros artigos de Marcos Paraiso

  • Os Dados e os Custos Ocultos de uso da Nuvem Pública

    Os Dados e os Custos Ocultos de uso da Nuvem Pública

    Li há uns meses um post em um blog (referência abaixo) que comentava sobre os custos ocultos de uso de nuvem pública…

    5 comentários
  • THINK 2019 Watson Everywhere

    THINK 2019 Watson Everywhere

    Esta semana está sendo super interessante em termos de novidades aqui no THINK 2019. Um dos anúncios mais impactantes é…

    1 comentário
  • This is not Your Grandpa's Computer

    This is not Your Grandpa's Computer

    This year's news started early and fast. At CES 2019 IBM CEO Ginni Rometty announced some very exciting news about…

  • O ano que tornou Cloud Computing inevitável

    O ano que tornou Cloud Computing inevitável

    Cloud Computing tem pouco mais de dez anos de existência. Neste período houve avanços impressionantes: crescimento…

    3 comentários
  • A Cloud deu tela azul! E agora..?

    A Cloud deu tela azul! E agora..?

    Há duas semanas, uma vez mais se ouviu notícias de falhas na infraestrutura em um dos principais provedores de cloud do…

    1 comentário
  • Seu cliente e o Watson? Tudo a ver

    Seu cliente e o Watson? Tudo a ver

    Conhecer seus clientes e proporcionar uma experiência diferenciada é um dos objetivos perseguidos pelas empresas em…

  • Blockchain... do Hype à Realidade

    Blockchain... do Hype à Realidade

    Todos os dias escutamos notícias sobre como as criptomoedas e Blockchain irão revolucionar o mundo. São notícias que…

  • Plataformas de Negócio Digitais: o que a Apple e o iPhone podem nos ensinar.

    Plataformas de Negócio Digitais: o que a Apple e o iPhone podem nos ensinar.

    O que faz uma empresa líder de seu segmento, e que chegou a dominar metade do mercado, perder 80% de sua participação…

    6 comentários
  • O Futuro da Resiliência em Cloud é o Chaos Engineering

    O Futuro da Resiliência em Cloud é o Chaos Engineering

    O que você acharia se alguém de seu time de TI propusesse sabotar um de seus principais sistemas de produção durante o…

    8 comentários
  • 3 coisas que você precisa saber para entender Machine Learning

    3 coisas que você precisa saber para entender Machine Learning

    Inteligência Artificial. Novidade? Não mesmo.

Outras pessoas também visualizaram

Conferir tópicos