Gerir instalações físicas em grande escala exige visibilidade em tempo real de milhares de dispositivos. Seja monitorando sistemas de HVAC, geradores ou sensores de ocupação, o desafio para as empresas brasileiras não é apenas processar esses streams de telemetria, mas garantir que a arquitetura suporte o crescimento, a consistência dos dados e a segurança operacional sem criar débitos técnicos impagáveis.
Este artigo analisa uma implementação robusta utilizando o ecossistema serverless do Azure — focando não apenas nas tecnologias escolhidas, mas no porquê das decisões e nas lições aprendidas em cenários de alta demanda.
Arquitetura de Referência
A plataforma adota uma arquitetura de microserviços, composta por seis serviços independentes, construídos sobre Azure Functions v4 com TypeScript e containerizados via Azure Container Apps.
Os componentes desta arquitetura são:
- IoT Portal UI: Frontend em React 18.
- IoT Portal API: Back-end principal em Node.js (Azure Functions) para gestão de ativos.
- IoT Profile API: Camada de RBAC com JWT customizado.
- HTTP Ingestion: Endpoints agnósticos para telemetria.
- Telemetry Processor: Processamento de eventos (State Management e histórico).
- Rule Engine: Automação baseada em regras com notificações.
Pipeline de Ingestão e Processamento
A escalabilidade começa na ingestão. Utilizar o Azure API Management (APIM) logo na entrada garante rate limiting e validação de requisições, protegendo os serviços downstream. A adoção de CloudEvents como padrão de comunicação via Azure Event Grid cria um desacoplamento fundamental.
Gestão de Dispositivos e Regras
A escolha pelo modelo de "three-tier template hierarchy" (Capability, Asset, Location) reduz drasticamente a necessidade de hardcoding. Quando um novo modelo de sensor é adicionado, a equipe apenas cadastra um novo Capability Template. O Telemetry Processor então utiliza o Redis para realizar o lookup desses esquemas, garantindo que o processamento seja dinâmico e eficiente. O uso de Azure Cosmos DB com hierarchical partition keys resolve o gargalo de escalabilidade de leitura e escrita.
Hardening e Resiliência
Construir é a etapa simples; manter é o desafio. O projeto identificou pontos críticos:
- Race Conditions: Implementação de distributed locking via Azure Blob Storage leases para evitar notificações duplicadas.
- Resiliência (Circuit Breaker): Uso da biblioteca
opossumpara evitar falhas em cascata em integrações de terceiros. - Segurança de Identidade: Validação rigorosa com chaves públicas (OpenID/Azure AD).
Considerações Finais
A escolha por Azure Functions e Storage Queues foca em custo e simplicidade. Para empresas operando no Brasil, a chave está em tratar as regras de negócio como templates e focar na validação rigorosa dos dados na borda da arquitetura (edge validation).