Fala dataholics, hoje veremos uma ferramenta sensacional que nos permite automatizar qualquer coisa que você imaginar, trarei um caso pratico para o nosso mundo e que já utilizei em diversas situações parecidas, falaremos sobre o Azure Logic App.
Hoje falaremos sobre o fluxo da imagem abaixo, monitorando eventos no SQL Server (ou em no banco de dados que você usa) e na sequência disparando um Job Databricks e um e-mail de notificação.
O que é o Azure Logic App?
O Azure Logic App é como a varinha mágica do mundo da automação na nuvem! É uma ferramenta que te permite criar fluxos de trabalho automatizados para lidar com tarefas e processos de negócios de forma super simples. Não precisa ser um mestre em programação para usá-lo, conhecido como Low Code você pode configurar quase tudo via interface grafica, como blocos lógicos, para criar uma sequência de ações que acontecem quando algum evento ocorrer, como um e-mail entrando na sua caixa de entrada ou um arquivo sendo atualizado no sharepoint. O Azure Logic App torna a vida mais simples, automatizando o que costumava ser trabalhoso e repetitivo.
Agora, se você já ouviu falar sobre o Power Automate no Office 365, perceberá que ele tem algo em comum com o Azure Logic App. Ambos são como primos que compartilham alguns talentos. O Power Automate é a resposta do Office 365 para a automação de fluxo de trabalho, mas com foco em integrações com aplicativos e serviços do ecossistema Microsoft. Enquanto o Azure Logic App é mais como um canivete suíço universal para automação na nuvem, o Power Automate é como uma chave de fenda especializada para tarefas de automação que envolvem os aplicativos e serviços do Office 365, como SharePoint, Outlook, e outros. Portanto, escolher entre o Azure Logic App e o Power Automate depende de suas necessidades e da sua preferência por um escopo mais amplo ou uma abordagem mais focada nas ferramentas da Microsoft. Ambos são ótimas opções para simplificar o trabalho e melhorar a eficiência!
Demonstração
Vamos para a prática, abaixo o ambiente criado para esse exemplo, estou usando Azure SQL Database com Free Tier (incrível não? Falaremos mais em outros posts como estruturar um banco de dados de controle de forma escalável, barata e organizada, só seguir o blog aí), Azure Logic App e Azure Databricks.
Esses são os recursos na minha conta Azure, note que para o Logic App temos 2 conectores criados, 1 para SQL e 1 para Office365 que usaremos para mandar um e-mail, esse diagrama é gerado no Resource Group na aba "Resource Visualizer".
Primeiro, vamos ao SQL criar nossa tabela de logs, importante a definição de um Primary Key, estou usando um ID inteiro com auto incremento.
Já nessa tabela vamos armazenar informações importantes como o Job ID e Job Name que dispararemos no Databricks, a lista de e-mail de quem receberá a notificação e um campo CustomBody se você quiser adicionar alguma informação no corpo do e-mail.
CREATE TABLE tb_OrchestratorEvents
(
id int IDENTITY PRIMARY KEY,
jobName VARCHAR(200),
jobId VARCHAR(200),
databricksWorkspace VARCHAR(200),
emailList VARCHAR(MAX),
subject VARCHAR(MAX),
customBody VARCHAR(MAX),
dateLog datetime
)
Após a tabela criada criaremos nosso Logic App com o fluxo abaixo para monitorar essa tabela e na sequência fazer uma chamada na API do Databricks.
A criação do Logic App não tem segredo, contudo é importante estudar as opções de configuração.
1 - Criar o recurso no seu ambiente, busque por Logic App e crie um novo recurso.
Informações importantes na criação, você tem duas opções de cobrança, por demanda (Consumption) ou um recurso dedicado (Standard).
No nosso caso usaremos o Consumption, pois, pagaremos apenas por eventos disparados e isso fica muito barato.
Para ter uma noção de preço, se você disparar 1000 eventos por dia durante 30 dias, custará menos de R$4 reais, os primeiros 4 mil eventos são de graça, então da para brincar muito.
O preço também pode variar com a quantidade de conectores que você esta utilizando e quais conectores.
2 - Criar seu workflow na aba Logic App Designer
Você tem a opção de criar ele na aba de designer um método mais visual e fácil e também tem a opção de criar via código, é basicamente um arquivo JSON, no final deixarei o meu disponível para vocês usarem.
3 - Criar um conector com SQL e configurar os detalhes de monitoramento.
Crie um novo com o template branco e dentro na primeira task busque por SQL Server.
Selecione o SQL Server.
Com ele você tem 2 opções de trigger, monitorar novos INSERTS em uma tabela ou monitorar UPDATES em uma tabela.
E você também terá uma lista das ações possíveis com o SQL Server, contudo para esse exemplo usaremos apenas a Trigger.
Essa é a configuração da minha task, note que ja informar os detalhes da conexão como o servidor, database e qual tabela quero monitorar.
Para conexão com o SQL Server você terá várias opções, como usando um login e senha, usando o AAD (Microsoft Entra ID) ou uma App Registration por exemplo, use da maneira mais adequada para o seu ambiente.
Quando essa tarefa estiver criada, qualquer novo INSERT que aparecer nessa tabela em até 1 minuto será disparado nosso Workflow no Logic App.
4 - Fazer uma chamada de um Job Databricks.
Ainda não temos um conector nativo com Azure Databricks, como temos, por exemplo, para o Azure Data Factory, então, usaremos uma chamada de HTTP fazendo um post na API api/2.1/jobs/run-now
Note que estou fazendo autenticação com um PAT (personal access token) no Databricks, a URI vem da tarefa anterior, lembra que na nossa tabela tem uma coluna chamada databricksWorkspace, essa URI vem de la, isso facilita a customização.
No Body dessa requisição precisamos passar o Job ID, que também vem da nossa tabela no SQL Server.
5 - Enviar um e-mail de notificação.
Para essa task estou usando um conector do Office365 para disparar um e-mail, contudo você poderia usar outras opções como uma task de GMAIL.
Note que todos os parâmetros são customizados com resultado das tasks anteriores, como o Subject e TO que vem da tabela do SQL Server.
No corpo do e-mail estamos enviando informações do nome do job, data que foi disparado o evento e também o retorno da API.
Você pode usar HTML para customizar seu e-mail e deixar ele bonitão, mas vamos de menos é mais por agora.
Pronto nosso workflow está concluído, agora vamos gerar um evento na nossa tabela de logs e testar.
-- Generate Event
INSERT INTO tb_OrchestratorEvents VALUES (
'Job1-Teste',
'981175440018532',
'https://adb-4013955633331914.14.azuredatabricks.net/api/2.1/jobs/run-now',
'reginaldo.silva@dataside.com.br',
'LogicApp - Item criado na tabela tb_OrchestratorEvents',
'Event Information: Job Run created ',
GETDATE()
)
O Job id do Databricks você precisa pegar nas configurações do Job ou via API fazendo um GET, ou LIST, ou pode usar o Databricks SDK para isso também.
Evento gerado agora vamos à tela inicial do Logic App para ver se ele foi disparado.
Temos um evento novo que rodou em menos de 1 segundo, podemos clicar nele e ver todos os logs de cada etapa.
Note que todas tasks rodaram bem rápido.
Você pode observar os Inputs e Outputs de cada task.
Aqui na task de HTTP temos o retorno da API do Databricks, informando o Run_id criado para execução do nosso Job.
E por último o e-mail enviado:
Vamos la ver nosso Job Databricks se de fato ele foi disparado.
Disparado com sucesso, note a coluna Launched fica marcada como se fosse uma execução manual quando vem via API.
E por último nosso e-mail recebido com sucesso, usando o assunto que informamos no INSERT do SQL e também com algumas informações.
Eai curtiu?
O Azure Logic App tem centenas de conectores, ou seja, a imaginação aqui é o limite, você pode automatizar o que você quiser, exemplo, você pode plugar no twitter e monitorar um Tweet especifico, uma hashtag especifica e gerar ações com isso, analisar sentimento das mensagens e por aí vai, é realmente incrível o poder dessa ferramenta.
Link dos códigos:
Fique bem e até a próxima.
Referências:
Comments