Serverless - Cloud Computing
O conceito de Serverless, na computação em nuvem, tem como objetivo oferecer um serviço de desenvolvimento para criação e execução de aplicações sem o gerenciamento de servidores.
Os servidores ainda são utilizados nesse modelo, mas eles são abstraídos do desenvolvimento de aplicações. O provedor de nuvem fica responsável pelas tarefas rotineiras de provisionamento, manutenção e escala da infraestrutura do servidor. Os desenvolvedores só precisam empacotar o código em containers para fazer a implantação.
As aplicações em modelo Serverless atendem à demanda aumentando ou reduzindo a escala automaticamente, de acordo com as necessidades. As soluções Serverless dos provedores de nuvem pública costumam ser oferecidas sob demanda por meio de um modelo de execução orientado a eventos. Sendo assim, não há cobrança pelas funções Serverless não utilizadas.
As soluções Serverless são recomendadas principalmente nos casos de aplicações que não necessitam ser executadas a todo momento ou que não precisam estar disponíveis 100% do tempo.
Qual é a função do provedor de nuvem no modelo Serverless?
No modelo Serverless, o provedor de nuvem disponibiliza servidores físicos e aloca dinamicamente os recursos em nome de cada usuário.
As soluções de computação Serverless podem ser divididas em diversas categorias, sendo as mais comuns: back-end como serviço (BaaS) e função como serviço (FaaS).
Na categoria BaaS, os desenvolvedores normalmente possuem acesso a vários serviços disponibilizados pelo próprio provedor de nuvem. Alguns destes serviços são autenticações, criptografia, banco de dados, dentre outros. Normalmente você chama estas funções Serverless por meio de API`s (Interfaces de programação de aplicações).
Na categoria FaaS, os desenvolvedores implantam seus códigos e sua lógica personalizada no provedor de nuvem, que fica responsável pelo gerenciamento.
Todos os principais provedores de nuvem, entre eles a Amazon Web Services com o AWS Lambda, o Microsoft Azure com o Azure Functions, o Google Cloud com várias opções (exemplo: Cloud Function), o IBM Cloud com o IBM Cloud Functions oferecem pelo menos uma solução de FaaS.
Algumas organizações preferem executar os próprios ambientes de FaaS por meio de plataformas Serverless open source, como o Red Hat® OpenShift® Serverless.
Aplicabilidade do modelo Serverless
O modelo Serverless é excelente para aplicações que são assíncronas e stateless, que podem ser iniciadas instantaneamente. Também é uma ótima opção para os casos em que a demanda aumenta de maneira aleatória e imprevisível. Um bom exemplo são aplicações desenvolvidas especialmente para a tal da Black Friday, onde os acessos podem ser muito volumosos e inesperados a depender do produto e da promoção.
Outro exemplo de utilização e que pode rodar de forma assíncrona, está em uma aplicação que realiza a inserção da marca d'água da empresa nas fotos oficiais ou de anúncios. A partir de um gatilho na inserção da imagem, o mesmo aciona um serviço em Serverless que executa a ação de marca d'água.
As aplicações Serverless também são ideais para situações que incluem fluxos de dados de entrada, chatbots, tarefas agendadas e automatizadas.
Vantagens e desvantagens do modelo Serverless
Vantagens
- Aumenta a produtividade dos desenvolvedores e reduz os custos operacionais. Ele livra os desenvolvedores e/ou operadores (DevOps) das tarefas rotineiras de provisionamento e gerenciamento de servidores. Assim, eles têm mais tempo para se concentrar nas aplicações.
- É possível incorporar componentes completos de soluções de BaaS de terceiros para otimizar ainda mais o desenvolvimento de aplicações.
- Os custos operacionais são reduzidos no modelo Serverless uma vez que você paga o tempo de computação baseado na demanda. Isso não acontece quando você executa e gerencia os próprios servidores.
Desvantagens
- Não executar o seu próprio servidor ou controlar a sua própria lógica e atualizações.
- Alguns provedores de nuvem podem ter restrições sobre a maneira como as pessoas podem interagir com os componentes, o que acaba por afetar a flexibilidade e a personalização dos sistemas. No caso de ambientes de BaaS, os desenvolvedores podem depender de serviços com código que não pode ser controlado por eles.
- Abrir mão de controlar esses aspectos do stack de TI também aumenta as chances de dependência do fornecedor. Além disso, ao decidir trocar de provedor, custos podem ser gerados, uma vez que será necessário fazer upgrade dos sistemas para que eles atendam às especificações do novo provedor.
Recomendados pelo LinkedIn
A evolução do modelo Serverless
Um estudo da 451 Research realizado em parceria com a Red Hat investigou a evolução do Serverless, dividindo esse modelo em três fases diferentes:
A fase "1.0" incluía limitações que dificultavam o uso do Serverless na computação geral. O Serverless 1.0 tem as seguintes características:
- HTTP e algumas outras fontes
- Somente funções
- Tempo de execução limitado (5 a 10 minutos)
- Sem orquestração
- Desenvolvimento local limitado
Com o surgimento do Kubernetes, o modelo entrou na fase "1.5", em que muitos frameworks Serverless começaram a escalar containers automaticamente. O Serverless 1.5 tem as seguintes características:
- Knative
- Escalonamento automático baseado no Kubernetes
- Microsserviços e funções
- Fácil de fazer o debug e testar no local
- Portátil e com suporte a múltiplas linguagens
Hoje, a fase "2.0" está surgindo com a inclusão do estado e da integração. Os provedores começaram a adicionar os componentes que faltavam para que o modelo Serverless fosse compatível com cargas de trabalho empresarial de uso geral. O Serverless 2.0 tem as seguintes características:
- Gerenciamento de estado básico
- Uso de padrões de integração empresarial
- Recursos de mensageria avançados
- PaaS empresarial incorporado
- Fontes de evento prontas para empresas
- Estado e integração
Serverless e outros modelos de tecnologia que são disponibilizados em provedores de nuvem, tendem a solucionar problemas relacionados à implementação de código, a infraestrutura, mas estes modelos em si só não garantem o sucesso do negócio.
O sucesso do negócio tem relação direta com o problema que a sua aplicação soluciona, com a dor do seu cliente que ela resolve.
O caminho para o sucesso do negócio começa com um bom estudo que indique qual modelo tecnológico a ser utilizado e em qual nuvem será implementada a sua aplicação.