Introdução ao Azure Functions

Introdução ao Azure Functions

Olá pessoal tudo bem? Hoje vamos falar de uma Buzzword que está chegando pra ficar no cenário de Nuvem: Serverless. Mas especificamente, sobre o Azure Functions.

Um pouco antes desse conceito de nuvem tudo era muito mais complicado, demorado e custoso para gerar escalabilidade, performance e baixo tempo de reação para atender as demandas de negócio, dentro dos departamentos de T.I.

Surge então o conceito de Nuvem, onde podemos ter o fácil gerenciamento dos nossos servidores, serviços e cenários de desenvolvimento e infraestrutura. Com a aderência desse conceito vieram melhorias como: Alta escalabilidade, elasticidade, flexibilidade, plataformas como serviço, baixo custo, baixo tempo de setup (configuração de serviços) que antes demorariam horas para configurar, agora levam minutos.

A plataforma do Azure, vem crescendo dia após dia, e mais, numa velocidade impressionante. Em 2016, eu frequentei a QCon/SP como palestrante. Lá eu tive os primeiros contatos com o conceito chamado: Serverless, e que já era comercializado e aplicado na nuvem da AWS (Amazon). Dias depois, eu tomei conhecimento de um serviço na plataforma do Azure, chamado: Functions e que hoje passou a se chamar: Azure Functions.

Introdução

O Conceito de Serverless, traz uma FALSA impressão da NÃO necessidade de servidores para que o seu trecho de código possa funcionar, como num passe de mágica. Isso acontece devido ao trocadilho da tradução da palavra: Sem servidor. Mas as coisas não funcionam, pelo menos dentro da T.I, como uma cartola de um mágico!!!

O Conceito Serverless, traz uma grande facilidade, flexibilidade e alta-escalabilidade para a execução do seu trecho de código e no Azure Functions isso não é diferente.

Quando se adota o conceito de serverless, precisamos de servidores. SIM! Eles estão lá e lá estarão sempre, para garantir a execução do seu código. Mas o que isso quer dizer? Preciso me preocupar em provisionar os servidores? Preciso me preocupar em como será feito o deploy do código da minha aplicação para outros servidores? A resposta é: NÃO!

Todo o provisionamento dentro de um ambiente Serverles, é feito automaticamente, caso seu código tenha a necessidade de amplicação de escala, tanto Horizontal quanto Vertival. Toda a necessidade de escala é feita automaticamente, como:

  • Memória RAM
  • CPU
  • Além da gestão de Redes.

Ou seja, o conceito de Serverles usa, em sua essência, o tipo PaaS (Platform as a Service) de aplicação em nuvem. Com isso, Passamos pelos tipos de aplicações:

  • Monolíticas (Monolithics)
  • Serviços Web usando XML (Web Services)
  • Serviços REST (Rest Services)
  • Microserviços (Microservices)

A chegada do Serverles trouxe um novo conceito de serviços: Nanoservices, ou seja, é uma especialização e granularização dos Microserviços. Isso também trás um ganho significativo sobre o ponto de vista da escalabilidade, visto que, os nanoservices que contém os código que serão executados, são containers e, com isso, não precisamos escalar uma VM (Virtual Machine) inteira, para escalar apenas um Microservice ou um Nanoservice.

O que é o Azure Functions?

O Azure Functions é um serviço da nuvem Microsoft, com o qual podemos realizar facilmente o deploy de trechos de código para ambientes de alta-disponibilidade, escalabilidade e sem se preocupar com provisionamento, para o seu ambiente no Azure. SIM! O Azure fará toda essa gestão para você, don't worry, be happy.

Utilizando o Azure Functions, você só precisa escrever o seu código, necessário para atender as expectativas do seu negócio, testa-lo na plataforma de nuvem ou realizando debugging, através do Tooling no Visual Studio, que foi lançado em 1 de dezembro de 2016 e fazer o deploy do seu código. Com isso, proporcionando ainda mais produtividade nas entregas e resoluções de problemas no seu negócio.

Azure Functions suporta uma gama interessante de linguagens de programação, tais como:

  • C#
  • F#
  • Python
  • NodeJs
  • PHP

Características do Azure Functions

  • Escolha sua linguagem que você se sente mais confortável para desenvolver suas Funções no Azure: C#, F#, Python, NodeJs ou PHP;
  • Paga apenas pela execução do seu código;
  • Azure Functions já vem com ferramentas de gerenciamento de pacote: Nuget ou NPM;
  • Possui integração com segurança para requisiçoes Http-Trigger através de implementação OAuth, como: Azure Active Directory, Facebook, Twitter, Google e Microsoft Account. Isso ofere maior confidencialidade e credibilidade;
  • Oferece uma grande quantidade de integrações com plataformas como serviço (SaaS) no azure;
  • Deploy Flexível, Você tem a possibilidade de codificar seu código através do Portal Azure ou configurar a integração continua e deploy através do seu reposítório no Github, Visual Studio Team Services ou IDE do Visual Studio.

Dirigido à Eventos (Event-Driven)

O ponto de entrada para executar Functions são hospedadas em uma arquitetura do tipo Serverless, a qual é construida em cima do conceito: Event-Driven. O desenho do Event-Driven, em cima da arquitetura de Serverless é ideal, uma vez que Functions são hospedadas individualmente.

Functions, em uma arquitura Serverless são configuradas e ligadas á eventos específicos e as funções de código (Functions) são executadas, APENAS quando necessário. Abaixo, são listados alguns modelos de eventos que podem ser utilizados para executar Funtions:

  • HTTP / HTTPS Request
  • Message Queue Trigger
  • File / Storage Trigger
  • Timer / Schedule

Pague pelo Uso (Pay-per-Use)

Antes com a necessidade de trabalhar em uma VM - Como no caso dos WebJobs, a cobrança é feita pelo Time Up Server da VM que está hospedando o WebJobs. No caso do Azure Functions, a cobrança será feita pelo tempo que seu código ficar executando, somados o uso de de alocação de CPU e Memória RAM, recursos esses que serão reservados e dispobibilizados para o seu trecho de código.

Pay-per-Use, dentro de uma arquitetura Serverless é simplificado, pois acobrança será realizada só e somente só, quando sua Functions estiver, de fato, executando. Quando algum evento aciona o mecanismo de execução de uma Functions, o recurso consumido pela Function serão acompanhado pela plataforma do Azure e cobrado. Quando sua Function NÃO está em execução, NENHUMA cobrança será realizada.

Cenários de aplicação

  • Timer-based processing - Azure Functions são executadas com base em eventos que são configurados utilizando CRON, ou seja, são agendamentos que podemos fazer para que as Functions sejam executadas em horários pré-programados;

  • Azure service event processing - Azure Functions são executadas com base em eventos que acontecem em algum serviço SaaS do azure, tais como: Queue, Table Storage, File System, Blob, DocumentDB;

  • SaaS event processing - Azure Functions são executadas por meio de eventos que são gerados em serviços SaaS. Por exemplo, quando um arquivo é enviado para o OneDrive, um gatilho de execução pode ser ativado para execução de uma Function;

  • Serverless web application architectures - Azure Functions são executadas com base em notificações de serviços externos através do conceito de WebHook. Por exemplo, sua Function pode receber uma notificação de commit realizada no seu repositório no Github ou uma Issue que foi aberta;

  • Serverless mobile backends - Azure Functions são executadas por meio de chamadas HTTP que são feitas por meio de uma aplicação móvel (Mobile Application). Por exemplo, através de uma aplicação móvel (Mobile App) você tira uma foto de um cupom fiscal e envia para o aplicativo, aplicativo então envia essa imagem para uma Function processar a análise de OCR desse cupom fiscal;

  • Real-time stream processing - Em cenários de IoT, milhões de mensagens são enviadas e analisadas por meio do Azure Stream Analytics , o qual pode enviar mensagens para uma Function, e esta pode realizar o trabalho de transformação dos dados;

  • Real-time bot messaging - Aqui você pode integrar a ação de do Cortana Analytics e realizar chamadas para uma Function, através de um Bot, usando o Microsoft Bot Framework.

Gostou do assunto?
Quer receber mais novidades sobre Tecnologia? Assine minha página no Facebook.

Quer debater mais sobre assunto? Deixe seu comentário. Terei o maior prazer em debater sobre o assunto.

Comments