O que é e por que usar Azure Functions? Relação com Serverless Architectures e pontos de atenção

De tempos em tempos, uma novidade tecnológica nos autoriza a pensar novas maneiras de desenvolver aplicações. Para desenvolvedores Microsoft, uma dessas tecnologias, sem dúvidas, é Azure Functions.

“Azure Functions” permite que executemos código em um ambiente Serverless, sem a necessidade de manter, explicitamente, uma máquina virtual ou publicar uma web application.

Nessa série, iremos detalhar “Azure Functions”, indicando cenários e alternativas onde a tecnologia se aplica, enumerando vantagens e desvantagens em cada caso, bem como práticas e padrões. Nesse primeiro post, introduziremos conceitos e ideias fundamentais.

O que é “Azure Functions”?

Azure Functions é uma tecnologia que permite a escrita de códigos para que sejam executados na ocorrência de uma determinada categoria de eventos. O código pode ser escrito em C#, F#, Java, Javascript ou Python (a microsoft mantem uma página com a lista atualizada de linguagens suportadas). Os eventos podem incluir requisições HTTP, modificiações em Blob Storage, recebimento de uma notificação em um sistema de mensageria, etc.

Com Azure Functions, cabe aos desenvolvedores “apenas” escrever o código que irá “responder” a um evento. Os eventos são monitorados pela infraestrutura do Azure que executa o código certo sempre que um evento de interesse ocorrer.

Por que usar Azure Functions?

Há pelo menos três razões que tornam o desenvolvimento de Azure Functions interessante:

  1. Simplificação do desenvolvimento: Com Azure Functions, o desenvolvedor precisa se concentrar especificamente no código que contem a lógica de negócio, usando as linguagens de programação que já conhece. Não será necessário desenvolver código para “escutar requisições http”, nem monitorar uma Queue para identificar o recebimento de uma mensagem. De forma abstrata e não muito precisa, apenas como exemplo, é como se o desenvolvedor escrevesse uma aplicação ASP.net, apenas com as “actions” dos controllers.
  2. Elasticidade natural: Cabe ao Azure, “ligar e desligar” instâncias de Azure Functions, automaticamente, conforme parâmetros especificados, para tratar o volume de demandas.
  3. Potencial redução de custos de nuvem: Há diferentes modelos de pricing oferecidos pela Microsoft e eles evoluem, naturalmente, com o tempo. Mas, há pelo menos um modelo onde são necessários um número considerável de “execuções” para que algum custo seja  gerado.

Azure Functions é uma das ofertas da Microsoft para viabilizar a implementação de Serverless Architectures.

Serverless Architectures

A ideia central de arquiteturas Serverless é abstrair a existência e a gestão dos servidores dos processos de desenvolvimento e operação de aplicações.  Isso ocorre pela utilização de componentes de backend de terceiros, fornecidos como serviço (Backend as a Service – BaaS), e de código backend desenvolvido especificamente para tratar eventos, distribuídos em conteineres efêmeros (Functions as a Service – FaaS), como Azure Functions.

Obviamente, o código do backend continuará executando em servidores (o que torna o termo Serverless confuso). Entretanto, a manutenção desses servidores fica a cargo de um provedor de serviços, geralmente de nuvem, como a Microsoft.

O trade-off em arquiteturas Serverless está no fato de que, por um lado, há significativa redução de custos e complexidades operacionais e prazos de desenvolvimento, de outro, há um aumento considerável de dependência (lock-in) a um determinado fornecedor.

Pontos de Atenção

Podemos utilizar Azure Functions para tratar, pontualmente, de necessidades de nossas aplicações, como, por exemplo:

  • executar tarefas administrativas em horários ou intervalos de tempo especificados;
  • disparar o envio de e-mails, na ocorrência de uma categoria de eventos de negócio, em um mecanismo simples de monitoramento;
  • sincronizar bases de dados distintas
  • etc.

As possibilidades são ilimitadas e as barreiras de entrada são baixas! Isso é ótimo… e é um problema. Em domínios complexos, o uso indiscriminado de “soluções criativas” desenvolvidas com Azure Functions pode fazer com que percamos o controle do “flow” de execução e deixemos de saber, exatamente, o que irá ocorrer no backend.

Em casos extremos, podemos “reimaginar” aplicações inteiras para que sejam desenvolvidas, apenas, com Azure Functions e BaaS. Entretanto, é importante que tenhamos em conta que se trata de um modelo diferente de arquitetura, com padrões e práticas novas e específicas, que ainda não estão suficientemente experimentadas e maduras.

Azure Functions é uma alternativa viável para o desenvolvimento de microsserviços da forma certa. Entretanto, todas as dificuldades associadas a microsserviços continuam presentes. Ainda é necessário adotar boas práticas para “fracionar” o domínio em microsserviços que sejam realmente desacoplados.

Azure Functions tem vários modelos de pricing. Em nossa opinião, os melhores modelos são aqueles em que pagamos conforme o uso, pagando nada quando não há uso. Entretanto, esses modelos nem sempre agradam organizações que querem ter controle sobre o valor que será gasto em cada período com a nuvem.

Completamos o primeiro passo

Nesse post, apresentamos conceitos fundamentais para Azure Functions e Serverless Architectures. Nos próximos posts, vamos “dissecar a anatomia de uma Azure Function” e demonstrar o porquê são tão atraentes. Também iremos começar a delinear práticas e padrões para adoção efetiva dessa tecnologia, maximizando resultados tecnológicos e para o negócio.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
1 Comentário
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Alessandro de Souza
Alessandro de Souza
4 anos atrás

Com a adoção de u.a arquitetura hexagonal, o lock-in passa a ser um problema bem menos complexo em caso de migração.

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquivo

Pós-pandemia, trabalho remoto e a retenção dos profissionais de TI

CTO Consulting e Especialista em Execução em TI
EximiaCo 2024 - Todos os direitos reservados
1
0
Queremos saber a sua opinião, deixe seu comentáriox
()
x
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

O que é e por que usar Azure Functions? Relação com Serverless Architectures e pontos de atenção

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

O que é e por que usar Azure Functions? Relação com Serverless Architectures e pontos de atenção

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?