Arquitetura de referência do Azure IoTAzure IoT reference architecture

Esta arquitetura de referência mostra uma arquitetura recomendada para aplicações IoT no Azure com componentes PaaS (plataforma como serviço).This reference architecture shows a recommended architecture for IoT applications on Azure using PaaS (platform-as-a-service) components.

Diagrama da arquitetura

As aplicações IoT podem ser descritas como coisas (dispositivos) que enviam dados que geram informações.IoT applications can be described as things (devices) sending data that generates insights. Estas informações geram ações que visam melhorar uma empresa ou um processo.These insights generate actions to improve a business or process. Um exemplo disto é um motor (a coisa) que envia dados de temperatura.An example is an engine (the thing) sending temperature data. Estes dados são utilizados para avaliar se o motor está a funcionar conforme esperado (as informações).This data is used to evaluate whether the engine is performing as expected (the insight). As informações são utilizadas para definir proativamente as prioridades da agenda de manutenção do motor (a ação).The insight is used to proactively prioritize the maintenance schedule for the engine (the action).

Esta arquitetura de referência utiliza componentes PaaS (plataforma como serviço) do Azure.This reference architecture uses Azure PaaS (platform-as-a-service) components. Outras opções para criar soluções IoT no Azure incluem:Other options for building IoT solutions on Azure include:

  • O Azure IoT Central.Azure IoT Central. O IoT Central é uma solução SaaS (software como serviço) totalmente gerida.IoT Central is a fully managed SaaS (software-as-a-service) solution. Resume as opções técnicas e permite-lhe concentrar-se exclusivamente na sua solução.It abstracts the technical choices and lets you focus on your solution exclusively. Esta simplicidade vem com a contrapartida de ser menos personalizável do que uma solução baseada em PaaS.This simplicity comes with a tradeoff in being less customizable than a PaaS-based solution.
  • Utilizar componentes OSS, como a pilha SMACK (Spark, Mesos, Akka, Cassandra, Kafka), implementados nas VMs do Azure.Using OSS components such as the SMACK stack (Spark, Mesos, Akka, Cassandra, Kafka) deployed on Azure VMs. Esta abordagem confere um elevado grau de controlo, mas é mais complexa.This approach offers a great deal of control but is more complex.

Num nível alto, existem duas formas de processar dados telemétricos: o caminho frequente e o caminho esporádico.At a high level, there are two ways to process telemetry data, hot path and cold path. A diferença encontra-se nos requisitos de latência e acesso aos dados.The difference has to do with requirements for latency and data access.

  • O caminho frequente analisa os dados em tempo quase real, à medida que chegam.The hot path analyzes data in near-real-time, as it arrives. No caminho frequente, a telemetria tem de ser processada com latência muito baixa.In the hot path, telemetry must be processed with very low latency. Normalmente, o caminho frequente é implementado através de um motor de processamento de fluxos.The hot path is typically implemented using a stream processing engine. A saída pode acionar um alerta ou ser escrita num formato estruturado que possa ser consultado com ferramentas de análise.The output may trigger an alert, or be written to a structured format that can be queried using analytical tools.
  • O caminho esporádico realiza o processamento em lotes em intervalos mais longos (por hora ou diariamente).The cold path performs batch processing at longer intervals (hourly or daily). Normalmente, o caminho esporádico opera grandes volumes de dados, mas os resultados não têm de ser tão atempados como no caminho frequente.The cold path typically operates over large volumes of data, but the results don't need to be as timely as the hot path. No caminho esporádico, a telemetria não processada é capturada e, em seguida, inserida num processo em lotes.In the cold path, raw telemetry is captured and then fed into a batch process.

ArquiteturaArchitecture

Esta arquitetura é composta pelos seguintes componentes.This architecture consists of the following components. Algumas aplicações podem não requerer todos os componentes listados aqui.Some applications may not require every component listed here.

Dispositivos IoT.IoT devices. Os dispositivos podem ser registados com segurança na cloud e ligar à cloud para enviar e receber dados.Devices can securely register with the cloud, and can connect to the cloud to send and receive data. Alguns dispositivos podem ser dispositivos edge que realizam algum processamento de dados no próprio dispositivo ou num gateway de campo.Some devices may be edge devices that perform some data processing on the device itself or in a field gateway. Recomendamos o Azure IoT Edge para processamento edge.We recommend Azure IoT Edge for edge processing.

Gateway de cloud.Cloud gateway. Um gateway de cloud fornece um hub de cloud para os dispositivos ligarem em segurança à cloud e enviarem dados.A cloud gateway provides a cloud hub for devices to connect securely to the cloud and send data. Fornece também gestão de dispositivos e capacidades, incluindo o comando e o controlo de dispositivos.It also provides device management, capabilities, including command and control of devices. Para o gateway de cloud, recomendamos o Hub IoT.For the cloud gateway, we recommend IoT Hub. O Hub IoT é um serviço cloud alojado que ingere eventos a partir de dispositivos e atua como um mediador de mensagens entre dispositivos e serviços de back-end.IoT Hub is a hosted cloud service that ingests events from devices, acting as a message broker between devices and backend services. O Hub IoT fornece conectividade segura, ingestão de eventos, comunicação bidirecional e gestão de dispositivos.IoT Hub provides secure connectivity, event ingestion, bidirectional communication, and device management.

Aprovisionamento de dispositivos.Device provisioning. Para registar e ligar grandes conjuntos de dispositivos, recomendamos que utilize o Serviço de Aprovisionamento de Dispositivos no Hub IoT (DPS).For registering and connecting large sets of devices, we recommend using the IoT Hub Device Provisioning Service (DPS). O DPS permite-lhe atribuir e registar dispositivos em pontos finais específicos do Hub IoT do Azure à escala.DPS lets you assign and register devices to specific Azure IoT Hub endpoints at scale.

Processamento de fluxos.Stream processing. O processamento de fluxos analisa grandes fluxos de registos de dados e avalia as regras para esses fluxos.Stream processing analyzes large streams of data records and evaluates rules for those streams. Para o processamento de fluxos, recomendamos o Azure Stream Analytics.For stream processing, we recommend Azure Stream Analytics. O Stream Analytics pode executar análises complexas à escala através de funções de janela de tempo, agregações de fluxos e associações de origens de dados externas.Stream Analytics can execute complex analysis at scale, using time windowing functions, stream aggregations, and external data source joins. Outra opção é o Apache Spark no Azure Databricks.Another option is Apache Spark on Azure Databricks.

A aprendizagem automática permite executar algoritmos preditivos em dados telemétricos de histórico, o que permite cenários como a manutenção preditiva.Machine learning allows predictive algorithms to be executed over historical telemetry data, enabling scenarios such as predictive maintenance. Para a aprendizagem automática, recomendamos o Serviço Azure Machine Learning.For machine learning, we recommend Azure Machine Learning Service.

O armazenamento de caminho pouco frequente contém dados que têm de estar disponíveis imediatamente a partir do dispositivo para geração de relatórios e visualização.Warm path storage holds data that must be available immediately from device for reporting and visualization. Para o armazenamento de caminho pouco frequente, recomendamos o Cosmos DB.For warm path storage, we recommend Cosmos DB. O Cosmos DB é uma base de dados com múltiplos modelos distribuída globalmente.Cosmos DB is a globally distributed, multi-model database.

O armazenamento de caminho esporádico contém dados que são mantidos a longo prazo e utilizados no processamento em lotes.Cold path storage holds data that is kept longer-term and is used for batch processing. Para o armazenamento de caminho esporádico, recomendamos o Armazenamento de Blobs do Azure.For cold path storage, we recommend Azure Blob Storage. Os dados podem ser arquivados no armazenamento de Blobs indefinidamente a um custo reduzido e são de acesso fácil para o processamento em lotes.Data can be archived in Blob storage indefinitely at low cost, and is easily accessible for batch processing.

A transformação de dados manipula ou agrega o fluxo de telemetria.Data transformation manipulates or aggregates the telemetry stream. Os exemplos incluem a transformação de protocolos, como a conversão de dados binários em formato JSON, ou a combinação de pontos de dados.Examples include protocol transformation, such as converting binary data to JSON, or combining data points. Se os dados tiverem de ser transformados antes de chegarem ao Hub IoT, recomendamos que utilize um gateway de protocolo (não mostrado).If the data must be transformed before reaching IoT Hub, we recommend using a protocol gateway (not shown). Caso contrário, os dados podem ser transformados depois de chegarem ao Hub IoT.Otherwise, data can be transformed after it reaches IoT Hub. Nesse caso, recomendamos que utilize as Funções do Azure, que têm a integração incorporada no Hub IoT, Cosmos DB e Armazenamento de Blobs.In that case, we recommend using Azure Functions, which has built-in integration with IoT Hub, Cosmos DB, and Blob Storage.

A integração de processos de negócio realiza ações com base nas informações dos dados do dispositivo.Business process integration performs actions based on insights from the device data. Pode incluir o armazenamento de mensagens informativas, a geração de alarmes, o envio de e-mails ou mensagens SMS ou a integração no CRM.This could include storing informational messages, raising alarms, sending email or SMS messages, or integrating with CRM. Recomendamos que utilize o Azure Logic Apps para a integração de processos de negócio.We recommend using Azure Logic Apps for business process integration.

A gestão de utilizadores restringe os utilizadores ou grupos que podem realizar ações nos dispositivos, como atualizar o firmware.User management restricts which users or groups can perform actions on devices, such as upgrading firmware. Define também as capacidades dos utilizadores nas aplicações.It also defines capabilities for users in applications. Recomendamos que utilize o Azure Active Directory para autenticar e autorizar utilizadores.We recommend using Azure Active Directory to authenticate and authorize users.

Considerações de escalabilidadeScalability considerations

Uma aplicação IoT deve ser criada como serviços discretos que possam ser dimensionados de forma independente.An IoT application should be built as discrete services that can scale independently. Considere os seguintes pontos de escalabilidade:Consider the following scalability points:

Hub IoT.IoTHub. Para o Hub IoT, considere os seguintes fatores de dimensionamento:For IoT Hub, consider the following scale factors:

  • A quota diária máxima de mensagens para o Hub IoT.The maximum daily quota of messages into IoT Hub.
  • A quota de dispositivos ligados numa instância do Hub IoT.The quota of connected devices in an IoT Hub instance.
  • Débito de ingestão — a rapidez com que o Hub IoT consegue ingerir mensagens.Ingestion throughput — how quickly IoT Hub can ingest messages.
  • Débito de processamento — a rapidez com que as mensagens a receber são processadas.Processing throughput — how quickly the incoming messages are processed.

Cada hub IoT é aprovisionado com um determinado número de unidades num escalão específico.Each IoT hub is provisioned with a certain number of units in a specific tier. O escalão e o número de unidades determinam a quota diária máxima de mensagens que os dispositivos podem enviar para o hub.The tier and number of units determine the maximum daily quota of messages that devices can send to the hub. Para obter mais informações, veja as quotas e a limitação do Hub IoT.For more information, see IoT Hub quotas and throttling. Pode aumentar verticalmente um hub sem interromper as operações existentes.You can scale up a hub without interrupting existing operations.

Stream Analytics.Stream Analytics. O dimensionamento das tarefas do Stream Analytics é mais eficiente se as mesmas forem paralelas em todos os pontos no pipeline do Stream Analytics, desde a entrada para consulta até à saída.Stream Analytics jobs scale best if they are parallel at all points in the Stream Analytics pipeline, from input to query to output. Uma tarefa totalmente paralela permite ao Stream Analytics dividir o trabalho por vários nós de computação.A fully parallel job allows Stream Analytics to split the work across multiple compute nodes. Caso contrário, o Stream Analytics tem de combinar os dados de fluxo num único local.Otherwise, Stream Analytics has to combine the stream data into one place. Para obter mais informações, veja Tirar partido da paralelização de consultas no Azure Stream Analytics.For more information, see Leverage query parallelization in Azure Stream Analytics.

O Hub IoT cria automaticamente partições das mensagens do dispositivo com base no ID do dispositivo.IoT Hub automatically partitions device messages based on the device ID. Todas as mensagens de um dispositivo específico chegarão sempre à mesma partição, mas uma única partição terá mensagens de vários dispositivos.All of the messages from a particular device will always arrive on the same partition, but a single partition will have messages from multiple devices. Portanto, a unidade de paralelização é o ID da partição.Therefore, the unit of parallelization is the partition ID.

Funções.Functions. Ao ler a partir do ponto final dos Hubs de Eventos, existe um máximo de instância de função por partição do hub de eventos.When reading from the Event Hubs endpoint, there is a maximum of function instance per event hub partition. A velocidade máxima de processamento é determinada pela rapidez com que uma instância de função consegue processar os eventos de uma única partição.The maximum processing rate is determined by how fast one function instance can process the events from a single partition. A função deve processar as mensagens em lotes.The function should process messages in batches.

Cosmos DB.Cosmos DB. Para ampliar uma coleção do Cosmos DB, crie a coleção com uma chave de partição e inclua a chave de partição em cada documento que escrever.To scale out a Cosmos DB collection, create the collection with a partition key and include the partition key in each document that you write. Para obter mais informações, veja Melhores práticas ao escolher uma chave de partição.For more information, see Best practices when choosing a partition key.

  • Se armazenar e atualizar um único documento por dispositivo, o ID do dispositivo é uma boa chave de partição.If you store and update a single document per device, the device ID is a good partition key. As escritas são distribuídas uniformemente pelas chaves.Writes are evenly distributed across the keys. O tamanho de cada partição é estritamente limitado, porque existe um único documento para cada valor de chave.The size of each partition is strictly bounded, because there is a single document for each key value.
  • Se armazenar um documento separado para cada mensagem do dispositivo, a utilização do ID do dispositivo como chave de partição excederia rapidamente o limite de 10 GB por partição.If you store a separate document for every device message, using the device ID as a partition key would quickly exceed the 10-GB limit per partition. Nesse caso, o ID da mensagem é uma chave de partição melhor.Message ID is a better partition key in that case. Normalmente, ainda incluiria o ID do dispositivo no documento para indexação e consulta.Typically you would still include device ID in the document for indexing and querying.

Considerações de segurançaSecurity considerations

Comunicação fiável e seguraTrustworthy and secure communication

Todas as informações recebidas de e enviadas para um dispositivo têm de ser fiáveis.All information received from and sent to a device must be trustworthy. A menos que um dispositivo consiga suportar as seguintes capacidades criptográficas, deve estar limitado às redes locais e todas as comunicações entre redes devem passar por um gateway de campo:Unless a device can support the following cryptographic capabilities, it should be constrained to local networks and all internetwork communication should go through a field gateway:

  • Encriptação de dados com um algoritmo de encriptação de chave simétrica comprovadamente seguro, publicamente analisado e amplamente implementado.Data encryption with a provably secure, publicly analyzed, and broadly implemented symmetric-key encryption algorithm.
  • Assinatura digital com um algoritmo de assinatura de chave simétrica comprovadamente seguro, publicamente analisado e amplamente implementado.Digital signature with a provably secure, publicly analyzed, and broadly implemented symmetric-key signature algorithm.
  • Suporte para TLS 1.2 para TCP ou outros caminhos de comunicação baseados em fluxos ou para DTLS 1.2 para caminhos de comunicação baseados em datagramas.Support for either TLS 1.2 for TCP or other stream-based communication paths or DTLS 1.2 for datagram-based communication paths. O suporte do processamento de certificados X.509 é opcional e pode ser substituído pelo modo de chave pré-partilhada mais eficiente em termos de computação e transmissão para TLS, que pode ser implementado com suporte para os algoritmos AES e SHA-2.Support of X.509 certificate handling is optional and can be replaced by the more compute-efficient and wire-efficient pre-shared key mode for TLS, which can be implemented with support for the AES and SHA-2 algorithms.
  • Arquivo de chaves atualizável e chaves por dispositivo.Updateable key-store and per-device keys. Cada dispositivo tem de ter material de chave exclusivo ou tokens que o identifiquem no sistema.Each device must have unique key material or tokens that identify it toward the system. Os dispositivos devem armazenar a chave em segurança no dispositivo (por exemplo, através de um arquivo de chaves seguro).The devices should store the key securely on the device (for example, using a secure key-store). O dispositivo deve conseguir atualizar as chaves ou os tokens de forma periódica ou reativa em situações de emergência, como em caso de falha do sistema.The device should be able to update the keys or tokens periodically, or reactively in emergency situations such as a system breach.
  • O firmware e o software da aplicação no dispositivo têm de permitir atualizações para a reparação de vulnerabilidades de segurança detetadas.The firmware and application software on the device must allow for updates to enable the repair of discovered security vulnerabilities.

No entanto, muitos dispositivos estão demasiado restritos para suportar estes requisitos.However, many devices are too constrained to support these requirements. Nesse caso, deve utilizar um gateway de campo.In that case, a field gateway should be used. Os dispositivos ligam em segurança ao gateway de campo através de uma rede local e o gateway permite a comunicação segura com a cloud.Devices connect securely to the field gateway through a local area network, and the gateway enables secure communication to the cloud.

Protegido com adulterações físicasPhysical tamper-proofing

É altamente recomendável que o design do dispositivo incorpore funcionalidades que permitam a defesa contra tentativas de manipulação física, para ajudar a garantir a integridade da segurança e a fiabilidade do sistema global.It is strongly recommended that device design incorporates features that defend against physical manipulation attempts, to help ensure the security integrity and trustworthiness of the overall system.

Por exemplo:For example:

  • Escolha microcontroladores/microprocessadores ou hardware auxiliar que forneçam armazenamento seguro e permitam a utilização de material de chave criptográfica, como a integração do módulo de plataforma fidedigna (TPM).Choose microcontrollers/microprocessors or auxiliary hardware that provide secure storage and use of cryptographic key material, such as trusted platform module (TPM) integration.
  • Proteja o carregador de arranque e o carregamento de software, ancorados no TPM.Secure boot loader and secure software loading, anchored in the TPM.
  • Utilize sensores para detetar tentativas de intrusão e de manipulação do ambiente do dispositivo com alertas e potencial "autodestruição digital" do dispositivo.Use sensors to detect intrusion attempts and attempts to manipulate the device environment with alerting and potentially "digital self-destruction" of the device.

Para ver considerações de segurança adicionais, veja Arquitetura de segurança da Internet das Coisas (IoT).For additional security considerations, see Internet of Things (IoT) security architecture.

Monitorização e registosMonitoring and logging

Os sistemas de registo e monitorização são utilizados para determinar se a solução está a funcionar e ajudar a resolver problemas.Logging and monitoring systems are used to determine whether the solution is functioning and to help troubleshoot problems. Os sistemas de monitorização e registo ajudam a responder às seguintes questões operacionais:Monitoring and logging systems help answer the following operational questions:

  • Os dispositivos ou sistemas estão numa condição de erro?Are devices or systems in an error condition?
  • Os dispositivos ou sistemas estão configurados corretamente?Are devices or systems correctly configured?
  • Os dispositivos ou sistemas estão a gerar dados precisos?Are devices or systems generating accurate data?
  • Os sistemas estão a cumprir as expectativas da empresa e dos clientes finais?Are systems meeting the expectations of both the business and end customers?

As ferramentas de registo e monitorização são, normalmente, compostas pelos quatro componentes seguintes:Logging and monitoring tools are typically comprised of the following four components:

  • Ferramentas de visualização de desempenho e de linha cronológica do sistema para monitorizar o sistema e resolver problemas básicos.System performance and timeline visualization tools to monitor the system and for basic troubleshooting.
  • Ingestão de dados em memória intermédia, para colocar os dados de registo na memória intermédia.Buffered data ingestion, to buffer log data.
  • Arquivo de persistência para armazenar dados de registo.Persistence store to store log data.
  • Capacidades de pesquisa e consulta, para ver os dados de registo para utilização na resolução de problemas detalhada.Search and query capabilities, to view log data for use in detailed troubleshooting.

Os sistemas de monitorização fornecem informações sobre o estado de funcionamento, a segurança, a estabilidade e o desempenho de uma solução IoT.Monitoring systems provide insights into the health, security, and stability, and performance of an IoT solution. Estes sistemas também podem fornecer uma vista mais detalhada, ao registar as alterações à configuração dos componentes e ao fornecer dados de registo extraídos que podem revelar potenciais vulnerabilidades de segurança, melhorar o processo de gestão de incidentes e ajudar o proprietário do sistema a resolver problemas.These systems can also provide a more detailed view, recording component configuration changes and providing extracted logging data that can surface potential security vulnerabilities, enhance the incident management process, and help the owner of the system troubleshoot problems. As soluções de monitorização abrangentes incluem a capacidade de consultar informações de subsistemas específicos ou de agregar em vários subsistemas.Comprehensive monitoring solutions include the ability to query information for specific subsystems or aggregating across multiple subsystems.

O desenvolvimento do sistema de monitorização deve começar por definir os requisitos de bom estado de funcionamento, conformidade regulamentar e auditoria.Monitoring system development should begin by defining healthy operation, regulatory compliance, and audit requirements. As métricas recolhidas podem incluir:Metrics collected may include:

  • Dispositivos físicos, dispositivos edge e componentes de infraestrutura que comunicam alterações à configuração.Physical devices, edge devices, and infrastructure components reporting configuration changes.
  • Aplicações que comunicam alterações à configuração, registos de auditoria de segurança, taxas de pedidos, tempos de resposta, taxas de erros e estatísticas de libertação da memória para as linguagens geridas.Applications reporting configuration changes, security audit logs, request rates, response times, error rates, and garbage collection statistics for managed languages.
  • Bases de dados, arquivos de persistência e caches que comunicam o desempenho de consulta e escrita, alterações ao esquema, registo de auditoria de segurança, bloqueios ou impasses, desempenho de índice, CPU, memória e utilização do disco.Databases, persistence stores, and caches reporting query and write performance, schema changes, security audit log, locks or deadlocks, index performance, CPU, memory, and disk usage.
  • Serviços geridos (IaaS, PaaS, SaaS e FaaS) que comunicam as métricas de estado de funcionamento e as alterações à configuração que afetam o desempenho e o estado de funcionamento dos sistemas dependentes.Managed services (IaaS, PaaS, SaaS, and FaaS) reporting health metrics and configuration changes that impact dependent system health and performance.

A visualização das métricas de monitorização alerta os operadores relativamente a instabilidades do sistema e facilita a resposta aos incidentes.Visualization of monitoring metrics alert operators to system instabilities and facilitate incident response.

Telemetria de rastreioTracing telemetry

A telemetria de rastreio permite a um operador seguir o percurso de uma parte da telemetria desde a criação até ao sistema.Tracing telemetry allows an operator to follow the journey of a piece of telemetry from creation through the system. O rastreio é importante para depuração e resolução de problemas.Tracing is important for debugging and troubleshooting. Para soluções IoT que utilizem o Hub IoT do Azure e os SDKs de Dispositivo do Hub IoT, os datagramas de rastreio podem ser originados como mensagens Cloud para Dispositivo e incluídos no fluxo de telemetria.For IoT solutions that use Azure IoT Hub and the IoT Hub Device SDKs, tracing datagrams can be originated as Cloud-to-Device messages and included in the telemetry stream.

RegistoLogging

Os sistemas de registo são fundamentais para compreender as ações ou atividades realizadas por uma solução e as falhas ocorridas, além de que podem prestar ajuda para corrigir essas falhas.Logging systems are integral in understanding what actions or activities a solution has performed, failures that have occurred, and can provide help in fixing those failures. Os registos podem ser analisados para ajudar a compreender e resolver condições de erro, melhorar as características de desempenho e garantir a conformidade com as regras e os regulamentos em vigor.Logs can be analyzed to help understand and remedy error conditions, enhance performance characteristics, and ensure compliance with governing rule and regulations.

Embora o registo em texto simples tenha menor impacto nos custos de desenvolvimento iniciais, dificulta as tarefas de analise/leitura por parte do computador.Though plain-text logging is lower impact on upfront development costs, it is more challenging for a machine to parse/read. Recomendamos que utilize o registo estruturado, uma vez que as informações recolhidas podem ser analisadas pelo computador e lidas por humanos.We recommend structured logging be used, as collected information is both machine parsable and human readable. O registo estruturado adiciona contexto situacional e metadados às informações de registo.Structured logging adds situational context and metadata to the log information. No registo estruturado, as propriedades são elementos cruciais formatados como pares chave-valor, ou com um esquema fixo, para melhorar as capacidades de pesquisa e consulta.In structured logging, properties are first class citizens formatted as key/value pairs, or with a fixed schema, to enhance search and query capabilities.

Passos seguintesNext steps