Software · Arquitetura & Engenharia de Dados

Pipelines de Dados em Nuvem: Batch e Streaming com Azure Data Factory e Stream Analytics

A engenharia moderna de integração de dados no Azure: a transição de ETL para ELT com Azure Data Factory, orquestração de Data Flows, processamento analítico em tempo real com Azure Stream Analytics e janelas temporais de agregação.

Diagrama de pipeline de dados híbrido comparando esteira batch com Data Factory e esteira de streaming com Stream Analytics

No cenário corporativo moderno, dados de valor inestimável encontram-se fragmentados em dezenas de fontes heterogêneas: bancos relacionais transacionais (OLTP), sistemas ERP corporativos (SAP, Dynamics), aplicações SaaS de marketing, telemetria de dispositivos IoT e logs de servidores web. Transformar esse oceano de dados dispersos em inteligência acionável para dashboards de negócios e modelos de machine learning exige esteiras automatizadas de ingestão e transformação.

No ecossistema do Microsoft Azure, essa orquestração divide-se em duas grandes modalidades temporais: o processamento em lote (Batch) orquestrado pelo Azure Data Factory (ADF) sob o moderno paradigma ELT (Extract, Load, Transform), e o processamento contínuo em tempo real (Streaming) com o Azure Stream Analytics (ASA).


O Salto Paradigmático: De ETL para ELT

Por décadas, a integração clássica de dados baseou-se no modelo ETL (Extract, Transform, Load):

flowchart TD
    subgraph ETL["Abordagem Tradicional: ETL (Gargalo de Processamento)"]
        direction LR
        S1["Fontes de Dados"] --> E1["Servidor Intermediário de ETL<br/>(Aplica Limpeza e JOINs Pesados)"]
        E1 --> T1["Carga no Data Warehouse Final"]
    end

    subgraph ELT["Abordagem Moderna em Nuvem: ELT (Poder Distribuído)"]
        direction LR
        S2["Fontes de Dados"] -->|Ingestão Bruta Rápida| L2[("Data Lake Gen2 (Bronze Raw)")]
        L2 -->|Transformação Distribuída In-Database| T2[("Delta Lake / Synapse / Fabric (Silver/Gold)")]
    end

Por que a Nuvem Favorece o ELT?

No modelo antigo de ETL, o servidor intermediário dedicado frequentemente tornava-se o gargalo de performance de toda a empresa. Conforme o volume de dados crescia, os jobs de ETL estouravam a janela noturna de execução (batch window).

Com a elasticidade da computação em nuvem, migrou-se para o ELT:

  1. Extract & Load (Ingestão Imediata): Os dados são extraídos das origens e gravados no Data Lake em seu formato bruto (Raw Data) na velocidade máxima da rede, sem transformações que atrasem a chegada do dado.
  2. Transform (Transformação sob Demanda): Motores distribuídos de computação elástica (como Azure Synapse Analytics, Databricks com Apache Spark ou Microsoft Fabric) executam as transformações, cruzamentos e limpezas em paralelo diretamente sobre o lago de dados, escalando nós de hardware sob demanda.

Azure Data Factory (ADF): A Orquestração Central de Batch

O Azure Data Factory é a plataforma de integração de dados sem servidor (Serverless Data Integration) do Azure, composta por quatro blocos funcionais essenciais:

flowchart LR
    subgraph ADF["Componentes do Azure Data Factory"]
        LS["Linked Services<br/>(Strings de conexão com autenticação para 100+ conectores)"]
        DS["Datasets<br/>(Estrutura e esquema dos dados: Parquet, SQL Table, CSV)"]
        Act["Activities<br/>(Copy Activity, Notebook Execution, Stored Procedure)"]
        Pipe["Pipelines & Triggers<br/>(Fluxo encadeado com gatilhos de agendamento ou eventos)"]

        LS --> DS --> Act --> Pipe
    end

Self-Hosted Integration Runtime (SHIR) para Ambientes Híbridos

Um dos maiores desafios das empresas é acessar bancos de dados locais legados que residem dentro de datacenters protegidos por firewalls corporativos restritos.

O ADF resolve essa conectividade através do Self-Hosted Integration Runtime (SHIR):

  • Um agente leve instalado em um servidor interno no datacenter da empresa.
  • O agente estabelece uma conexão de saída (Outbound-Only) via porta 443 com o serviço do ADF na nuvem.
  • Elimina a necessidade de abrir portas de entrada no firewall corporativo local, permitindo que o Azure Data Factory extraia dados de servidores SQL locais com total segurança e criptografia.

Azure Stream Analytics: Inteligência em Tempo Real

Enquanto o Data Factory processa dados que acumulam ao longo de horas ou dias, certos cenários corporativos exigem respostas em milissegundos: detecção de transações financeiras fraudulentas no ato do pagamento, monitoramento de superaquecimento de turbinas e alertas de quedas de conexões de clientes.

O Azure Stream Analytics (ASA) é um motor de processamento de fluxo (Complex Event Processing - CEP) totalmente gerenciado:

flowchart LR
    Sensors["Fontes de Eventos<br/>(IoT Hub / Event Hubs / Kafka)"] --> ASA["Azure Stream Analytics<br/>(Consultas Contínuas em SQL Declarativo)"]
    
    ASA -->|"Agregações em Tempo Real"| PBI["Power BI Streaming Dashboard"]
    ASA -->|"Alertas de Anomalia"| Bus["Service Bus / Logic Apps"]
    ASA -->|"Arquivo Histórico Frio"| Lake[("Data Lake Storage Gen2")]

Janelas Temporais no Stream Analytics (Windowing Functions)

Como eventos em tempo real chegam continuamente em fluxos infinitos (unbounded streams), operações de agregação estatística (como COUNT, SUM e AVG) precisam ser calculadas dentro de fatias delimitadas de tempo chamadas Janelas Temporais:

flowchart TD
    subgraph Tumbling["1. Tumbling Window (Fixa e Não-Sobreposta)"]
        T1["[00:00 - 00:05]"] --- T2["[00:05 - 00:10]"] --- T3["[00:10 - 00:15]"]
    end

    subgraph Hopping["2. Hopping Window (Fixa com Salto Sobreposto)"]
        H1["Janela de 5 min (Salto de 1 min)"]
        H2["[00:00 - 00:05]"]
        H3["[00:01 - 00:06]"]
    end

    subgraph Sliding["3. Sliding Window (Deslizante por Evento)"]
        S1["Calcula quando um evento chega ou sai da janela de tempo"]
    end

Exemplo de Consulta SQL no Azure Stream Analytics

-- Identificar máquinas industriais com média de temperatura crítica nos últimos 5 minutos
SELECT
    System.Timestamp() AS FimDaJanela,
    DispositivoId,
    AVG(Temperatura) AS MediaTemperatura,
    COUNT(*) AS TotalLeituras
INTO
    [DestinoAlertasServiceBus]
FROM
    [OrigemEventHub] TIMESTAMP BY DataHoraEvento
GROUP BY
    DispositivoId,
    TumblingWindow(minute, 5)
HAVING
    AVG(Temperatura) > 85.0;

Essa consulta simples em dialeto SQL tradicional processa centenas de milhares de eventos por segundo em tempo real, emitindo um alerta para a fila de mensagens no exato momento em que a temperatura média ultrapassar o limiar crítico.


Matriz de Seleção: Batch (ADF) vs. Streaming (ASA)

Critério Batch: Azure Data Factory Streaming: Azure Stream Analytics
Gatilho de Execução Agendado (horário fixo, a cada 1h, diário) ou baseado em eventos de arquivos. Contínuo e ininterrupto; processa eventos individualmente na chegada.
Latência Típica Minutos a Horas. Milissegundos a Poucos Segundos.
Tamanho dos Dados Megabytes a Petabytes em grandes blocos fechados. Fluxo constante de pequenas mensagens (JSON/Avro de poucos KB).
Casos Típicos Relatórios de fechamento fiscal, cargas de Data Warehouse e pipelines de ML. Telemetria IoT, dashboards ao vivo em Power BI e detecção antifraude.

Conclusão

A maturidade de uma organização orientada a dados (Data-Driven) reside na capacidade de orquestrar pipelines híbridos de dados que atendam a múltiplos horizontes temporais. Ao unificar a ingestão em escala e a flexibilidade do paradigma ELT com o Azure Data Factory e a precisão em tempo real do Azure Stream Analytics, arquitetos fornecem dados limpos, governados e confiáveis para impulsionar tanto decisões operacionais imediatas quanto o planejamento estratégico corporativo de longo prazo.