Skip to main content

Function as a Service (FaaS) é uma das atualizações mais importantes dos serviços em nuvem, pois permite que os desenvolvedores criem e executem aplicativos e recursos sem a necessidade de construírem ou manterem uma infraestrutura complexa.

O conceito faz parte da arquitetura serverless e torna muito mais fácil o processo de adoção da nuvem. Não é necessário provisionar ou gerenciar servidores porque é o fornecedor de nuvem que cuida de tudo isso. Há uma preferência por arquiteturas  criadas sobre orquestração, com cada componente desempenhando um papel mais consciente, uma ideia muito comum na abordagem dos microsserviços.

As vantagens do Faas

Acima de tudo, muitas empresas estão atentas às vantagens da tecnologia cloud computing como o desenvolvimento ágil, custos operacionais reduzidos e economia em escala. O modelo FaaS vai além: é praticamente dispensável a gestão de servidores individuais, o número de profissionais necessários é menor e as melhorias na gestão do tempo são evidentes.

Além disso, uma arquitetura serverless acaba oferecendo muitas oportunidades de escalabilidade – de forma automática e independente -, conformidade com os tamanhos mínimos de unidades e lógica modular, incluindo o não pagamento por recursos ociosos.

Entretanto, a partir de uma perspectiva de operações em TI, o FaaS apresenta muitos desafios e exige uma abordagem mais atenta ao gerenciamento, monitoramento e proteção desse tipo de arquitetura. Por exemplo, não há uma padronização para sistemas desse tipo, o que torna complexo o trabalho para detalhar a lógica apenas uma vez e executá-la simplificadamente, em qualquer um dos grandes provedores.

Além disso, por se tratarem de uma estrutura adicional entre a chamada e a execução do código, serviços Serverless tendem a possuir latência levemente maior do que chamadas diretas em servidores. Isso faz com que essa arquitetura não seja recomendada para aplicações que exigem processamento em tempo real, como aplicações do mercado financeiro.

Abaixo é possível ver o nível de abstração que o provedor de nuvem oferece em cada uma das principais arquiteturas:


Ao mencionarmos alguns dos grandes provedores em nuvem do mercado, neste texto vamos falar brevemente sobre os dois mais populares do momento: Amazon e Microsoft, com o AWS Lambda e Azure Functions, respectivamente.

AWS Lambda

Lançada em 2014 e considerada a de maior sucesso com FaaS, permite a execução de códigos sem provisionamento ou gerenciamento de servidores, sendo capaz de executá-los para praticamente qualquer tipo de finalidade. Além disso, é possível configurá-lo para o acionamento automático de outros serviços da AWS ou chamá-lo diretamente de qualquer aplicativo da web ou móvel.

Existe a alternativa de realizar o upload do código como um arquivo zip ou criá-lo usando o AWS Lambda Management Console, sendo sua execução chamada de função Lambda. Alguns dos ambientes de execução oferecidos são o Node.js, Java, Python e .Net Core. Bem como, também há um suporte interno para o AWS SDK, o que simplifica a capacidade de acionamento de outros serviços da AWS. O tempo máximo de execução é, hoje, limitado a 5 minutos.

A cobrança é feita pela duração do código em incremento de 100 milisegundos e não há custo associado ao armazenamento da função Lambda no AWS. Ainda mais, ressaltar que o primeiro milhão de solicitações por mês é gratuito.

Azure Functions

O serviço da Microsoft é composto por 3 pilares: abstração do servidor, desenvolvimento orientado a eventos e faturamento de sub-segundo. No que diz respeito às funções de trabalho, elas são implementadas com o WebJobs e ainda contam com dois modelos de execução: contínua e acionada.

Há duas opções de hospedagem e gerenciamento dos recursos no Azure Functions:

  • o primeiro é o Plano de Serviço de Aplicativo, em que o cliente escolhe o tamanho das instâncias dedicadas e o gerenciamento de escala, que pode ser manual ou de autoescalonamento;
  • o segundo é o Plano de Consumo, em que as instâncias são adicionadas ou removidas automaticamente. Isso leva em consideração o número de execuções reais e a duração delas (sem o tempo ocioso), multiplicado pela memória reservada.

Já as linguagens de programação disponibilizadas aos desenvolvedores são Java, F#, C# e Javascript. O tempo máximo de execução é de, no máximo, 5 minutos por padrão, mas pode, através de configuração própria, se estender a até 10 minutos.

Assine o blog e também mande suas dúvidas para nossos especialistas para conhecer melhor os diferenciais técnicos de cada provedor. E não deixe de fazer seu teste grátis!

Leave a Reply

Close Menu