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:
IBM Cloud Openwhisk (avaliação gratuita)
Build a user facing application with Openwhisk
Enterprise Sales | Banking | BaaS | Open Finance | Payments | Pix | Credit
7 aTema super atual...muito bom texto!
Melhor artigo sobre Serverless que li até hoje. Explicações muito claras. Parabéns!
Consultor em Tecnologia na V8.Tech
7 aMuito bom!!!!
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 aBelo Artigo Paraiso !
Client Delivery Partner @ Microsoft & Inovation Master @ PUC-SP
7 aExcelente artigo Paraiso!