Serverless com Azure Functions

Olá tudo bem?

No post anterior, vimos os benefícios de Serverless Architectures e um pouco de como surgiu este paradigma.

Neste post, vamos aprender mais sobre o Azure Functions, o serviço que permite executar código (funções) no Azure de maneira reativa à eventos. O Azure Functions é parte do Azure App Services, que por sua vez, são um conjunto de serviços:

-WebApp
-Mobile Apps
-API Apps
-Logic Apps
-Azure Functions

Histórico

O Azure Functions foi anunciado no evento Microsoft Build de 2016 e é uma evolução do Azure WebJobs SDK, um framework que permite a execução de código em background.

O Azure WebJobs SDK já oferecia o conceito de binding e trigger à partir de Blobs, Queues e Tables do Azure Storage, ou filas do Service Bus. Isto é, determinado código seria executado à partir de um evento em algum destes serviços.

Você pode conferir a lista completa de serviços que fornecem binding / trigger para o Azure Functions clicando aqui.

Linguagens de programação suportadas

Não há necessidade de aprender novas habilidades ou uma nova linguagem de programação para começar a usar Azure Functions. Neste momento você pode criar o código para sua função usando:

-C#
-F#
-Node.js
-Python
-PHP

Ou se preferir, também existe suporte para linguagens de script como:

-Bash
-Batch
-PowerShell

Uma curiosidade: o suporte para F# foi adicionado pelo próprio time de F#. Como o runtime, templates e o Azure WebJobs SDK são todos os projetos open source,
o time de F# basicamente enviou um pull request para o repositório oficial do projeto no Github.

Ferramentas para o desenvolvimento

Você pode usar Visual Studio 2015, Visual Studio Code ou Azure Function CLI (Command Line Interface) + seu editor de texto favorito para criar as suas funções.

Em seguida, você só precisa fazer o upload do código para o portal do Azure, ou se você preferir, você pode escrever código diretamente através de uma interface web no portal do Azure. Também há suporte para você adicionar bibliotecas via Nuget ou NPM.

Integração Contínua

Todos os mecanismos de Integração Contínua suportados e disponíveis para o Azure App Service, também estão disponíveis para Azure Functions. Isto significa que você pode usar e publicar uma nova versão de sua função usando:

-Git Local
-Github
-One Drive
-VSTS
-BitBucket
-Dropbox
-Outros meios

E como fica a precificação?

Existem dois modos de execução: Plano do App Service ou Plano de Serviço Dinâmico.

Plano do App Service
Se você já usa o Azure App Service, é possível executar suas funções no mesmo plano de execução sem custo adicional.

Plano de Serviço Dinâmico (Plano de consumo)
Neste modo, a função é executada em paralelo entre as instâncias de aplicação que escalam automaticamente conforme à demanda.

Em resumo:
Plano de serviço do aplicativo: você paga pela VM, independentemente da utilização.
Plano de Serviço Dinâmico: você só paga pelo tempo de execução da instância

Quer ver tudo isto na prática? Não perca o evento online gratuito Azure Tech Nights, onde vou demonstrar o Azure Functions na prática.

Também estou gravando uma série de vídeos que irão para meus canais no Channel9 e Youtube

Até o próximo post pessoal!

Compartilhar