Azure – Notificações Utilizando Webhooks (com Zapier e Twilio)

Durante meus testes / aprendizado no mundo Azure, uma das coisas que eu achei mais interessante foi a possibilidade de utilizar Webhooks, possbilitando diversas customizações na forma em que podemos ser alertados sobre algum evento em nossos serviços no Azure (vídeo exemplo ao final do post).

Da Wikipedia:

Um webhook em desenvolvimento Web é um método de argumentar ou alterar o comportamento de uma página da Web, ou aplicação da Web, com callbacks personalizados. Estas ligações de retorno poderão ser mantidas, modificadas, e geridas por terceiros e responsáveis pelo desenvolvimento que poderão não necessariamente estar afiliados com a origem do site da Web ou aplicação. O termo “webhook” foi inventado por Jeff Lindsay em 2007 a partir do termo de programação de computador Hook.[1]

Ou seja: em determinado evento de meu serviço, em real-time, o Azure irá fazer uma chamada http post para alguma URL (utilizando JSON). A partir deste momento, as possibilidades ficam interessantes.

Vamos para aplicabilidade em um cenário real: um website rodando com auto-scale configurado (Scale-Out), entre 1 e 3 instancias. Regra: se a CPU permanecer acima de 70% por um período de 10 minutos, aumento automático de 1 instancia. Da mesma forma, o oposto (CPU inferior a 70% por determinado período de tempo, diminuição automática de número de instancias – “Scale-In”). Para cada evento “Scale-Out” ou “Scale-In”, gostaria de receber uma ligação de voz para meu celular, com uma mensagem personalizada, fornecendo alguns detalhes (por exemplo: Serviço XYZ Escalou de 1 para 2 Instâncias) ou uma mensagem SMS.

Para conseguir criar este fluxo de maneira relativamente fácil, precisamos de outros dois serviços: Twilio e Zappier, Gostaria de ressaltar que são dois serviços independentes do Azure, sendo duas empresas diferentes. Twilio tem sede em San Francisco/CA, e fornece serviços de mensageria, voz, vídeo e autenticação através de suas API´s 100% cloud based. Já o Zapier fornece componentes (conhecidos como “Zaps”) para integração de aplicações web (ao invés de fazer manualmente chamadas para API´s, este serviço fornece uma abstração de todo esse processo, sendo necessario somente definir os passos necessários e preencher alguns campos).

Quanto ao custo: o Twilio fornece um trial, com crédito de U$ 15.00. O Zapier oferece um plano grátis, mas com limitação de 2 steps por “Zap”. Para fins de teste, são suficientes. Mesmo nos planos pagos, eu acho que vale a pena. É possível agregar um valor imenso aos seus serviços e aplicações por um custo acessível.

Implementação:

  • Crie sua conta no Zapier e Twilio
  • Faça login no Zapier, clique em “Make a Zap”
  • Escolha um nome para o Zap. Na configuração da trigger, opção “Choose App“, escolha “WebHook“:

1 - Azure-Creating-Zapier-Twilio-Webhook

 

  • Em “Choose Trigger“, selecione “Catch Hook“:

2 - Azure-Creating-Zapier-Twilio-Webhook

3 - Azure-Creating-Zapier-Twilio-Webhook

  • Test this Step: obrigatório, caso contrário seu Zap não irá funcionar. Será necessário fazer um HTTP POST para URL do Webhook, utilizando o mesmo payload do passo anterior. No meu caso, eu utilizei o Fiddler para fazer esta chamada (você pode usar qualquer outra ferramenta, como curl por exemplo):

4 - Azure-Creating-Zapier-Twilio-Webhook

5 - Azure-Creating-Zapier-Twilio-Webhook

  • Feito o HTTP POST com sucesso, você será notificado na tela pelo Zapier. A URL utilizada será necessária no último passo de configuração (Azure)
  • O próximo passo é configurar a Action resultante da Trigger recém criada. É neste momento em que o Zap fará a chamada para a API do Twilio:

6 - Azure-Creating-Zapier-Twilio-Webhook

  • Como citado anteriormente, é possível fazer o envio de SMS ou efetuar uma ligação. Escolha “Call Phone“.

7 - Azure-Creating-Zapier-Twilio-Webhook

  • Será necessário fazer autorização do Zap para ter acesso a API. Basta fornecer a “Account SID” e “Auth Token“. Estas informações são encontradas no Twilio Console, seção “Account-> Account Settings“:

8 - Azure-Creating-Zapier-Twilio-Webhook

9 - Azure-Creating-Zapier-Twilio-Webhook

  • O passo seguinte é editar o Template. É neste local onde pode ser configurada a mensagem de voz que você irá receber. Será necessário informar o número telefônico de origem (que é criado durante o cadastro no Twilio), o número de destino (com código do país) e formatar a mensagem. Para fins de exemplo, eu estou utilizando apenas o campo “Description“. Você pode fazer qualquer combinação de campos a fim de deixar o mais personalizado possível.

10 - Azure-Creating-Zapier-Twilio-Webhook

  • Teste este passo, marque o Zap como “On” e finalize:

11 - Azure-Creating-Zapier-Twilio-Webhook

  • A última configuração necessária (e a mais fácil), é no Azure. No blade de configuração do Scale-Out, em Notifications, insira a URL do Zap criado.

12 - Azure-Creating-Zapier-Twilio-Webhook

 

Abaixo criei um vídeo com os passos acima e seu respectivo resultado:

 

Dúvidas? Me contate! Até a próxima.

[ ]´s

Global Azure Bootcamp – Porto Alegre

No último sábado (22 de abril), aconteceu o Global Azure Bootcamp. Como o próprio nome já diz, é um evento global – ocorre no mesmo dia em vários lugares do mundo. Em Porto Alegre o evento foi organizado pelo Lucas Chies (MVP Azure), e aconteceu no auditório do prédio 32 da Puc-RS. Foi um dia intenso, com várias palestras interessantes, contando com a presença dos MVP´s Rafael Felipe, Marcus Vinicius Bittencourt e Rodrigo Crespi. Como membro da MSCoP (Microsoft Community of Practices – Dell), tive a oportunidade de palestrar sobre Azure WebApps, juntamente com meu colega Gabriel Molter. Tentamos levar ao público uma idéia de como o serviço funciona (PaaS), deployment slots na prática de DevOps, distribuição multi-região e balanceamento usando Traffic Manager. Infelizmente devido ao tempo limitado, não conseguimos fazer a demo de Scale-Out que havíamos planejado. Pretendo fazer um post dessa feature em breve.

Global Azure Bootcamp Porto Alegre- Turma reunida ao final do evento
Alunos do IENH em peso

Código de Aplicação usada na demo: https://github.com/Molter/AzureBootcamp2017Demo

Exame 70-533

Recentemente fui aprovado no exame 70-533:Implementing Microsoft Azure Infrastructure Solutions. A última prova de certificação Microsoft que havia feito datava de 2009, ainda nos tempos do .Net Framework 2.0. Aproveitei a promoção Azure Single Pack: 1 exame (com re-take se necessário) + 1 simulado oficial por U$ 99,00. Como parte da política de incentivos da empresa onde eu trabalho, no caso de aprovação ainda poderia pedir reembolso. Entretanto, um desafio: ela precisava ser feita dentro de 10 dias, a fim de submeter a despesa ainda dentro do quarter corrente. Já havia “ensaiado” fazer os exames de Azure anteriormente, mas sempre algum outro compromisso ou desculpa fazia eu postergar a idéia – meus estudos sempre paravam pela metade. Desta vez havia decidido que seria diferente. Apesar do prazo extremamente curto para este tipo de preparação, marquei a prova.

No mesmo dia verifiquei todos os requisitos da prova e comecei a procurar material para estudo. Tenho experiência de dois anos na plataforma e achei que seria tranquilo me preparar para o exame (um gigantesco engano). Em novembro de 2016 este exame passou por um refresh, principalmente no que se refere a deployment model: de ASM para ARM. O livro de preparação que eu possuo cobre apenas ASM. A trilha  para a prova 70-533 no Pluralsight, em sua maioria, também foca em ASM, assim como a maioria das dicas de quem já havia feito a prova. Decidi mesmo assim fazer os treinamentos do Pluralsight, e em caso de dúvidas de como o serviço funcionaria no ARM, focar na documentação oficial.

A prova se resume a 6 tópicos. A cada dia de estudos cobri um tópico, deixando os últimos três dias para fazer o simulado oficial do pacote e revisar os pontos que tive mais dificuldade.

Material de Estudo:

Um site com boas refrências é o Build Azure. Recomendo

A prova:

  • 57 questões, com duas horas disponíveis (completei em 1,5). Score mínimo: 700
  • Powershell: muito, mas muito Powershell (certo momento achei que estava na prova errada)
  • ARM: principalmente automação de deployments de Virtual Machines

Alguns fatos:

  • Tenho certeza absoluta que uma questão não havia alternativa correta (referente a path de logs de Queues). Reportei ao final do exame.
  • Questão duplicada: sim, havia. Li várias vezes para me certificar de que não era pegadinha.
  • Set de questões onde não era permitido voltar (as primeiras 8)

Analisando o relatório recebido ao final do exame (Performance by Exam Section), fica claro que meu melhor desempenho foram nas áreas onde tenho mais experiência e vivência do dia-a-dia. Meu pior desempenho, automação com ARM model. Portanto, nada substitui o Hands-On no Azure Portal. E no Powershell, é claro!

Próximo passo: preparação para os exames 70-532 e 70-534. Prentendo fazê-los em maio.

[ ]´s