Serverless Computing ou traduzindo do inglês computação sem servidor é uma computação em que os desenvolvedores não abastecem ou gerenciam os servidores nos quais os aplicativos são executados, e com isso os aplicativos podem ganhar escala automaticamente. Dessa forma os desenvolvedores terão mais tempo para se concentrar na criação de excelentes produtos, pois os produtos são o coração dos negócios, em vez de se preocuparem com o gerenciamento de servidores.
Arquitetura Serverless é um modelo de execução onde o provedor de cloud como AWS, Microsoft Azure ou Google Cloud será o responsável por executar pedaços de código com recursos que poderão ser alocados dinamicamente e cobrando apenas pelos recursos usados para executar aquele código em específico. Os códigos geralmente serão executados em containers stateless que podem ser ativados de diversos modos, como requisições em HTTP, eventos de banco de dados, serviços de filas, alerta de monitoramento, upload de arquivos, eventos agendados, etc. Geralmente os códigos que são enviados ao provedor são escritos em forma de funções, por isso podemos ver a arquitetura de Serverless ”Functions as a Service” (Funções como Serviço) ou “FaaS”, os maiores provedores do mercado atual de Faas são:
- AWS: AWS Lambda
- Microsoft Azure: Azure Functions
- Google Cloud: Cloud Functions
Algumas linguagens que FaaS suporta:
- Java
- Go
- C#
- Python
- Ruby
- Swift
- PHP
Computação sem servidor suas vantagens e desvantagens
Vantagens
Custo
Sem servidor pode ser mais econômico do que alugar ou comprar uma quantidade fixa de servidores, que geralmente envolve períodos significativos de subutilização ou tempo ocioso.
Produtividade
Com a função como um serviço, as unidades de código expostas ao mundo exterior são funções simples orientadas por eventos. Isso significa que, normalmente, o programador não precisa se preocupar com multithreading ou lidar diretamente com solicitações HTTP em seu código, simplificando a tarefa de desenvolvimento de software back-end.
Desvantagens
Performance
O código sem servidor usado com pouca frequência pode sofrer de latência de resposta maior do que o código que está continuamente em execução em um servidor dedicado, máquina virtual ou contêiner. Isso ocorre porque, ao contrário do escalonamento automático, o provedor de nuvem normalmente “reduz a velocidade” do código sem servidor completamente quando não está em uso.
Limites de recursos
A computação sem servidor não é adequada para algumas cargas de trabalho de computação, como computação de alto desempenho, por causa dos limites de recursos impostos pelos provedores de nuvem e também porque seria provavelmente mais barato provisionar em massa o número de servidores que se acredita serem necessários em qualquer ponto no tempo.