Arquitetura de referência de IoT do AzureAzure IoT reference architecture

Essa arquitetura de referência mostra uma arquitetura recomendada para aplicativos de IoT no Azure usando os componentes do 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

Os aplicativos de IoT podem ser descritos como coisas (dispositivos) enviando dados que geram insights.IoT applications can be described as things (devices) sending data that generates insights. Esses insights geram ações para melhorar um negócio ou um processo.These insights generate actions to improve a business or process. Um exemplo é um mecanismo (a coisa) enviando dados de temperatura.An example is an engine (the thing) sending temperature data. Esses dados são usados para avaliar se o mecanismo está funcionando conforme o esperado (o insight).This data is used to evaluate whether the engine is performing as expected (the insight). O insight é usado para priorizar proativamente o agendamento de manutenção para o mecanismo (a ação).The insight is used to proactively prioritize the maintenance schedule for the engine (the action).

Essa arquitetura de referência usa componentes do PaaS do Azure (plataforma como serviço).This reference architecture uses Azure PaaS (platform-as-a-service) components. Outra opção recomendada para criar soluções de IoT no Azure é:Another recommended option for building IoT solutions on Azure is:

  • IOT central do Azure.Azure IoT Central. IoT Central é uma solução de SaaS (software como serviço) totalmente gerenciada.IoT Central is a fully managed SaaS (software-as-a-service) solution. Ele abstrai as escolhas técnicas e permite que você se concentre exclusivamente em sua solução.It abstracts the technical choices and lets you focus on your solution exclusively. Essa simplicidade vem com uma compensação por 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.

Em um nível alto, há duas maneiras de processar dados de telemetria, o caminho quente e o caminho frio.At a high level, there are two ways to process telemetry data, hot path and cold path. A diferença tem a ver com os requisitos de latência e acesso a dados.The difference has to do with requirements for latency and data access.

  • O caminho quente analisa os dados quase em tempo real, conforme chegam.The hot path analyzes data in near-real-time, as it arrives. No caminho quente, a telemetria deve ser processada com latência muito baixa.In the hot path, telemetry must be processed with very low latency. O caminho quente geralmente é implementado usando um mecanismo de processamento de fluxo.The hot path is typically implemented using a stream processing engine. A saída pode disparar um alerta ou ser gravada em um formato estruturado que pode ser consultado com ferramentas analíticas.The output may trigger an alert, or be written to a structured format that can be queried using analytical tools.
  • O caminho frio executa processamento em lotes em intervalos mais longos (por hora ou diariamente).The cold path performs batch processing at longer intervals (hourly or daily). O caminho frio geralmente opera em grandes volumes de dados, mas os resultados não precisam ser tão pontuais como o caminho quente.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 frio, a telemetria bruta é capturada e, em seguida, inserida em um processo em lote.In the cold path, raw telemetry is captured and then fed into a batch process.

ArquiteturaArchitecture

Essa arquitetura é formada pelos componentes a seguir.This architecture consists of the following components. Alguns aplicativos não exigem todos os componentes listados aqui.Some applications may not require every component listed here.

Dispositivos IOT.IoT devices. Os dispositivos podem se registrar com segurança na nuvem e podem se conectar à nuvem 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 de borda que executam algum processamento de dados no próprio dispositivo ou em um gateway de campo.Some devices may be edge devices that perform some data processing on the device itself or in a field gateway. É recomendável o uso do Azure IoT Edge para o processamento de borda.We recommend Azure IoT Edge for edge processing.

Gateway de nuvem.Cloud gateway. Um gateway de nuvem fornece um hub de nuvem para que os dispositivos se conectem com segurança à nuvem e enviem dados.A cloud gateway provides a cloud hub for devices to connect securely to the cloud and send data. Ele também fornece gerenciamento de dispositivos, recursos, incluindo o comando e o controle de dispositivos.It also provides device management, capabilities, including command and control of devices. Para o gateway de nuvem, recomendamos o Hub IoT.For the cloud gateway, we recommend IoT Hub. O Hub IoT é um serviço de nuvem hospedado que recebe eventos dos dispositivos, atuando como um agente de mensagem entre os dispositivos e os 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 gerenciamento de dispositivos.IoT Hub provides secure connectivity, event ingestion, bidirectional communication, and device management.

Provisionamento de dispositivos.Device provisioning. Para registrar e conectar grandes conjuntos de dispositivos, é recomendável usar o Serviço de Provisionamento 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 que você atribua e registre dispositivos em pontos de extremidade específicos do Hub IoT do Azure em escala.DPS lets you assign and register devices to specific Azure IoT Hub endpoints at scale.

Processamento de fluxo.Stream processing. O processamento de fluxo analisa grandes fluxos de registros de dados e avalia as regras para eles.Stream processing analyzes large streams of data records and evaluates rules for those streams. Para o processamento de fluxo, recomendamos o Azure Stream Analytics.For stream processing, we recommend Azure Stream Analytics. O Stream Analytics pode executar análises complexas em escala, usando as funções de janela de tempo, agregações de fluxo e junções de fontes 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.

O Machine Learning permite que algoritmos preditivas sejam executados sobre dados de telemetria históricos, permitindo cenários como manutenção preditiva.Machine learning allows predictive algorithms to be executed over historical telemetry data, enabling scenarios such as predictive maintenance. Para o aprendizado de máquina, recomendamos o Azure Machine Learning.For machine learning, we recommend Azure Machine Learning.

O armazenamento de caminho quente contém dados que devem estar disponíveis imediatamente no dispositivo 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 quente, recomendamos o Cosmos DB.For warm path storage, we recommend Cosmos DB. O Cosmos DB é um banco de dados multimodelo distribuído globalmente.Cosmos DB is a globally distributed, multi-model database.

O armazenamento de caminho frio contém dados que são mantidos no longo prazo e usados para processamento em lotes.Cold path storage holds data that is kept longer-term and is used for batch processing. Para o armazenamento de caminho frio, é recomendável 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 com baixo custo e são facilmente acessíveis para 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 protocolo, como converter dados binários para JSON ou combinar pontos de dados.Examples include protocol transformation, such as converting binary data to JSON, or combining data points. Se os dados devem ser transformados antes de chegar ao Hub IoT, é recomendável usar 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 chegar ao Hub IoT.Otherwise, data can be transformed after it reaches IoT Hub. Nesse caso, é recomendável usar o Azure Functions, que tem integração interna com o Hub IoT, Cosmos DB e o 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ócios executa ações com base nas informações sobre os dados do dispositivo.Business process integration performs actions based on insights from the device data. Isso pode incluir armazenar mensagens informativas, gerar alarmes, envio de email ou mensagens SMS ou a integração com o CRM.This could include storing informational messages, raising alarms, sending email or SMS messages, or integrating with CRM. É recomendável usar os Aplicativos Lógicos do Azure para a integração de processos de negócios.We recommend using Azure Logic Apps for business process integration.

O Gerenciamento de usuários restringe quais usuários ou grupos podem executar ações nos dispositivos, como a atualização do firmware.User management restricts which users or groups can perform actions on devices, such as upgrading firmware. Ele também define os recursos para os usuários nos aplicativos.It also defines capabilities for users in applications. Recomendamos usar o Azure Active Directory para autenticar e autorizar usuários.We recommend using Azure Active Directory to authenticate and authorize users.

Monitoramento de segurança a central de segurança do Azure para IOT fornece uma solução de segurança de ponta a ponta para cargas de trabalho de IOT e simplifica sua proteção ao fornecer visibilidade e controle unificados, prevenção de ameaças adaptáveis e detecção inteligente de ameaças e resposta em cargas de trabalho de dispositivos folha por meio do Edge, bem como de todas as nuvens.Security monitoring Azure Security Center for IoT provides an end-to-end security solution for IoT workloads and simplifies their protection by delivering unified visibility and control, adaptive threat prevention, and intelligent threat detection and response across workloads from leaf devices through Edge as well as up through the clouds.

Considerações sobre escalabilidadeScalability considerations

Um aplicativo de IoT deve ser criado como serviços discretos que podem ser dimensionados independentemente.An IoT application should be built as discrete services that can scale independently. Considere os seguintes pontos de escalabilidade:Consider the following scalability points:

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

  • A cota diária máxima de mensagens no Hub IoT.The maximum daily quota of messages into IoT Hub.
  • A cota de dispositivos conectados em uma instância do Hub IoT.The quota of connected devices in an IoT Hub instance.
  • Taxa de transferência de ingestão — a rapidez com que o Hub IoT pode receber as mensagens.Ingestion throughput — how quickly IoT Hub can ingest messages.
  • Taxa de transferência de processamento — a rapidez com que as mensagens de entrada são processadas.Processing throughput — how quickly the incoming messages are processed.

Cada Hub IoT é provisionado com um determinado número de unidades em uma camada específica.Each IoT hub is provisioned with a certain number of units in a specific tier. A camada e o número de unidades determinam a cota 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, confira cotas e limitação do Hub IoT.For more information, see IoT Hub quotas and throttling. Você pode escalar verticalmente um hub sem interromper as operações existentes.You can scale up a hub without interrupting existing operations.

Stream Analytics.Stream Analytics. Os trabalhos do Stream Analytics são melhor dimensionados se forem paralelos em todos os pontos no pipeline do Stream Analytics, desde a entrada para a consulta até a 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. Um trabalho totalmente paralelo permite que o Stream Analytics divida o trabalho em 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 que combinar os dados de fluxo em um só lugar.Otherwise, Stream Analytics has to combine the stream data into one place. Para obter mais informações, confira Aproveitar a paralelização de consultas no Azure Stream Analytics.For more information, see Leverage query parallelization in Azure Stream Analytics.

O Hub IoT particiona automaticamente mensagens de dispositivo com base na ID do dispositivo.IoT Hub automatically partitions device messages based on the device ID. Todas as mensagens de um determinado dispositivo sempre chegarão na 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 da paralelização é a ID da partição.Therefore, the unit of parallelization is the partition ID.

Funçõesdo.Functions. Ao ler a partir do ponto de extremidade dos Hubs de Eventos, há um máximo de instâncias 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 taxa máxima de processamento é determinada pela rapidez com que uma instância de função pode 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 mensagens em lotes.The function should process messages in batches.

Cosmos DB.Cosmos DB. Para expandir 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 você escreve.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, confira Melhores práticas para a escolha de uma chave de partição.For more information, see Best practices when choosing a partition key.

  • Se você armazenar e atualizar um único documento por dispositivo, a 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 gravações são distribuídas uniformemente entre as chaves.Writes are evenly distributed across the keys. O tamanho de cada partição é estritamente limitado, porque há 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 você armazenar um documento separado para cada mensagem do dispositivo, usando a ID do dispositivo como uma chave de partição, rapidamente excede 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. A ID da mensagem é uma chave de partição melhor nesse caso.Message ID is a better partition key in that case. Normalmente, você incluiria ainda a identificação do dispositivo no documento para indexação e consulta.Typically you would still include device ID in the document for indexing and querying.

Azure Time Series insights (TSI) é um serviço de análise, armazenamento e visualização para dados de série temporal, fornecendo recursos, incluindo filtragem e agregação do tipo SQL, aliviando a necessidade de funções definidas pelo usuário.Azure Time Series Insights (TSI) is an analytics, storage and visualization service for time-series data, providing capabilities including SQL-like filtering and aggregation, alleviating the need for user-defined functions. O Time Series insights fornece um data Explorer para visualizar e consultar dados, bem como APIs de consulta REST.Time Series Insights provides a data explorer to visualize and query data as well as REST Query APIs. Além dos dados de série temporal, o TSI também é bem adequado para soluções que precisam consultar agregações em grandes conjuntos de dados.In addition to time series data, TSI is also well-suited for solutions that need to query aggregates over large sets of data. Com suporte para armazenamento em várias camadas, APIs avançadas, modelo e integração com o ecossistema do Azure IoT, Explorer para visualizações e extensibilidade por meio de Power BI, etc. O TSI é nossa recomendação para o armazenamento e a análise de dados de série temporal.With support for multi layered storage, rich APIs, model and it’s integration with Azure IoT ecosystem, explorer for visualizations, and extensibility through Power BI, etc. TSI is our recommendation for time series data storage and analytics.

Considerações sobre segurançaSecurity considerations

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

Todas as informações recebidas e enviadas para um dispositivo devem ser confiáveis.All information received from and sent to a device must be trustworthy. A menos que um dispositivo tenha suporte para os recursos de criptografia a seguir, ele deve ser restrito a redes locais e toda a comunicação entre redes deve 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:

  • Criptografia de dados com um algoritmo de criptografia de chave simétrica provavelmente 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 provavelmente seguro, publicamente analisado e amplamente implementado.Digital signature with a provably secure, publicly analyzed, and broadly implemented symmetric-key signature algorithm.
  • Suporte para o TLS 1.2 para TCP ou outros caminhos de comunicação baseada em fluxo ou DTLS 1.2 para caminhos de comunicação baseada em datagrama.Support for either TLS 1.2 for TCP or other stream-based communication paths or DTLS 1.2 for datagram-based communication paths. Suporte de manipulação de certificado X.509 é opcional e pode ser substituído pelo modo de chave pré-compartilhada mais eficiente de computação e eficiente de transmissão para o 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.
  • Repositório de chaves atualizável e chaves por dispositivo.Updateable key-store and per-device keys. Cada dispositivo deve ter o material de chave exclusiva ou tokens que o identifiquem perante o sistema.Each device must have unique key material or tokens that identify it toward the system. Os dispositivos devem armazenar a chave com segurança (por exemplo, usando um repositório de chaves seguro).The devices should store the key securely on the device (for example, using a secure key-store). O dispositivo deve ser capaz de atualizar as chaves ou tokens periodicamente, ou de modo reativo em situações de emergência, como uma violação de sistema.The device should be able to update the keys or tokens periodically, or reactively in emergency situations such as a system breach.
  • O software de aplicativo e o firmware no dispositivo devem permitir atualizações para habilitar o reparo de vulnerabilidades de segurança descobertas.The firmware and application software on the device must allow for updates to enable the repair of discovered security vulnerabilities.

No entanto, muitos dispositivos são muito restritos para dar suporte a esses requisitos.However, many devices are too constrained to support these requirements. Nesse caso, um gateway de campo deve ser usado.In that case, a field gateway should be used. Os dispositivos se conectam com segurança ao gateway de campo por meio de uma rede local e o gateway permite a comunicação segura com a nuvem.Devices connect securely to the field gateway through a local area network, and the gateway enables secure communication to the cloud.

Integridade física à prova de adulteraçãoPhysical tamper-proofing

É altamente recomendável que o design do dispositivo incorpore recursos que protejam contra tentativas de manipulação física, para ajudar a garantir a integridade de segurança e a confiabilidade do sistema geral.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 fornece armazenamento seguro e uso de material de chave de criptografia, como integração TPM (Trusted Platform Module).Choose microcontrollers/microprocessors or auxiliary hardware that provides secure storage and use of cryptographic key material, such as trusted platform module (TPM) integration.
  • Proteja o carregador de inicialização e o carregamento de software, ancorados no TPM.Secure boot loader and secure software loading, anchored in the TPM.
  • Use sensores para detectar tentativas de invasão e de manipular o ambiente do dispositivo com alertas e potencialmente "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 outras considerações de segurança, confira Arquitetura de segurança da Internet das Coisas (IoT).For additional security considerations, see Internet of Things (IoT) security architecture.

Monitoramento e registro em logMonitoring and logging

Sistemas de monitoramento e registro em log são usados para determinar se a solução está funcionando e para ajudar a solucionar problemas.Logging and monitoring systems are used to determine whether the solution is functioning and to help troubleshoot problems. Os sistemas de monitoramento e registro em log ajudam a responder às seguintes perguntas operacionais:Monitoring and logging systems help answer the following operational questions:

  • Os dispositivos ou sistemas estão em uma 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 gerando dados precisos?Are devices or systems generating accurate data?
  • Os sistemas estão atendendo às expectativas dos clientes finais e de negócios?Are systems meeting the expectations of both the business and end customers?

As ferramentas de monitoramento e registro em log são geralmente compostas pelos quatro componentes a seguir:Logging and monitoring tools are typically comprised of the following four components:

  • Ferramentas de visualização da linha do tempo e de desempenho do sistema para o monitoramento do sistema e para a solução básica de problemas.System performance and timeline visualization tools to monitor the system and for basic troubleshooting.
  • Ingestão de dados armazenados em buffer, para armazenar em buffer dados de log.Buffered data ingestion, to buffer log data.
  • Armazenamento de persistência, para armazenar dados de log.Persistence store to store log data.
  • Recursos de pesquisa e consulta, para exibir dados de log para uso na solução detalhada de problemas.Search and query capabilities, to view log data for use in detailed troubleshooting.

Os sistemas de monitoramento fornecem insights sobre a integridade, a segurança, a estabilidade e o desempenho de uma solução de IoT.Monitoring systems provide insights into the health, security, and stability, and performance of an IoT solution. Esses sistemas também podem fornecer uma exibição mais detalhada, registrar alterações de configuração de componentes e fornecer dados de log extraídos, que podem mostrar possíveis vulnerabilidades de segurança, aprimorar o processo de gerenciamento de incidentes e ajudar o proprietário do sistema a solucionar 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. Soluções abrangentes de monitoramento incluem a capacidade de consultar informações de subsistemas específicos ou de agregação nos 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 monitoramento deve começar com a definição de operação íntegra, conformidade a normas e requisitos de auditoria.Monitoring system development should begin by defining healthy operation, regulatory compliance, and audit requirements. As métricas coletadas podem incluir:Metrics collected may include:

  • Dispositivos físicos, dispositivos de borda e componentes de infraestrutura que relatam as alterações de configuração.Physical devices, edge devices, and infrastructure components reporting configuration changes.
  • Aplicativos que relatam alterações de configuração, logs de auditoria de segurança, taxas de solicitação, tempos de resposta, taxas de erro e estatísticas de coleta de lixo para linguagens gerenciadas.Applications reporting configuration changes, security audit logs, request rates, response times, error rates, and garbage collection statistics for managed languages.
  • Bancos de dados, armazenamentos de persistência e caches que relatam desempenho de consultas e gravação, alterações de esquema, log de auditoria de segurança, bloqueios ou deadlocks, desempenho do índice, CPU, memória e uso 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 gerenciados (IaaS, PaaS, SaaS e FaaS) que relatam as métricas de integridade e as alterações de configuração que afetam o desempenho e a integridade do sistema dependente.Managed services (IaaS, PaaS, SaaS, and FaaS) reporting health metrics and configuration changes that impact dependent system health and performance.

A visualização da métrica de monitoramento alerta os operadores para instabilidades do sistema e facilita a resposta a incidentes.Visualization of monitoring metrics alert operators to system instabilities and facilitate incident response.

Telemetria de rastreamentoTracing telemetry

A telemetria de rastreamento permite que um operador acompanhe a jornada de um trecho da telemetria desde a criação por meio do sistema.Tracing telemetry allows an operator to follow the journey of a piece of telemetry from creation through the system. O rastreamento é importante para depuração e solução de problemas.Tracing is important for debugging and troubleshooting. Para soluções de IoT que usam o Hub IoT do Azure e o SDKs do dispositivo de Hub IoT, os datagramas de rastreamento podem ser criados como mensagens da nuvem 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.

Registrando em logLogging

Os sistemas de registro são essenciais para entender quais ações ou atividades uma solução realizou, falhas que ocorreram e que podem fornecer ajuda na correção dessas 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 logs podem ser analisados para ajudar a entender e corrigir condições de erro, aprimorar as características de desempenho e garantir a conformidade com as regras e regulamentos vigentes.Logs can be analyzed to help understand and remedy error conditions, enhance performance characteristics, and ensure compliance with governing rule and regulations.

Embora o registro em log de texto sem formatação tenha um impacto menor nos custos de desenvolvimento iniciais, é mais difícil para um computador ler/analisar.Though plain-text logging is lower impact on upfront development costs, it is more challenging for a machine to parse/read. É recomendável que o registro em log estruturado seja usado, porque as informações coletadas são analisáveis por máquina e legíveis por humanos.We recommend structured logging be used, as collected information is both machine parsable and human readable. O registro em log estruturado adiciona contexto e metadados situacionais às informações de log.Structured logging adds situational context and metadata to the log information. No registro em log estruturado, as propriedades são cidadãos de primeira classe formatados como pares de chave/valor, ou com um esquema fixo, para aprimorar os recursos 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.

Considerações de DevOpsDevOps considerations

Use a infraestrutura como código (IaC).Use the Infrastructure as code (IaC). IaC é o gerenciamento de infraestrutura (redes, máquinas virtuais, balanceadores de carga e topologia de conexão) com uma abordagem declarativa.IaC is the management of infrastructure (networks, virtual machines, load balancers, and connection topology) with a declarative approach. Os modelos devem ter controle de versão e parte do pipeline de lançamento.Templates should be versioned and part of the release pipeline. Os processos de implantação mais confiáveis são automatizados e idempotentes.The most reliable deployment processes are automated and idempotent. Uma maneira é criar Azure Resource Manager modelo para provisionar os recursos de IOT e a infraestrutura.One way is to create Azure Resource Manager template for provisioning the IoT resources and the infrastructure.

Para automatizar a implantação de infraestrutura, você pode usar Azure DevOps Services, Jenkins ou outras soluções de CI/CD.To automate infrastructure deployment, you can use Azure DevOps Services, Jenkins, or other CI/CD solutions. O Azure Pipelines faz parte dos Azure DevOps Services e executa builds, testes e implantações automatizados.Azure Pipelines is part of Azure DevOps Services and runs automated builds, tests, and deployments.

Considere preparar suas cargas de trabalho implantando em vários estágios e executando validações em cada estágio antes de passar para a próxima; dessa forma, você pode enviar por push atualizações para seus ambientes de produção de uma maneira altamente controlada e minimizar problemas imprevistos de implantação.Consider staging your workloads by deploying to various stages and running validations at each stage before moving on to the next one; that way you can push updates to your production environments in a highly controlled way and minimize unanticipated deployment issues. A implantação azul-verde e as versões canário são estratégias de implantação recomendadas para a atualização de ambientes de produção em tempo real.Blue-green deployment and Canary releases are recommended deployment strategies for updating live production environments. Também considere ter uma boa estratégia de reversão para quando uma implantação falhar; por exemplo, você pode reimplantar automaticamente uma implantação bem-sucedida anterior do seu histórico de implantação, o parâmetro--Rollback-On-Error Flag em CLI do Azure é bom exemplo.Also consider having a good rollback strategy for when a deployment fails; for example you could automatically redeploy an earlier, successful deployment from your deployment history, the --rollback-on-error flag parameter in Azure CLI is good example.

Considere monitorar sua solução usando Azure monitor.Consider monitoring your solution by using Azure Monitor. Azure Monitor é a principal fonte de monitoramento e registro em log para todos os serviços do Azure, ele fornece informações de diagnóstico para recursos do Azure.Azure Monitor is the main source of monitoring and logging for all your Azure services, it provides diagnostics information for Azure resources. Você pode, por exemplo, monitorar as operações que ocorrem no Hub IoT.You can for example, monitor the operations that take place within your IoT hub. Há métricas e eventos específicos aos quais Azure Monitor dá suporte, bem como serviços, esquemas e categorias para logs de diagnóstico do Azure.There are specific metrics and events that Azure Monitor supports, as well as services, schemas, and categories for Azure Diagnostic Logs.

Para obter mais informações, consulte a seção DevOps em Microsoft Azure estrutura bem arquitetada.For more information, see the DevOps section in Microsoft Azure Well-Architected Framework.

Considerações de custoCost considerations

Em geral, use a calculadora de preços do Azure para estimar os custos.In general, use the Azure pricing calculator to estimate costs. Outras considerações são descritas na seção de custo em Microsoft Azure estrutura bem projetada.Other considerations are described in the Cost section in Microsoft Azure Well-Architected Framework.

Há maneiras de otimizar os custos associados aos serviços usados nesta arquitetura de referência.There are ways to optimize costs associated the services used in this reference architecture.

Hub IoT do AzureAzure IoT Hub

Nessa arquitetura, o Hub IoT é o gateway de nuvem que ingere eventos de dispositivos.In this architecture, IoT Hub is the cloud gateway that ingests events from devices. A cobrança do Hub IoT varia dependendo do tipo de operação.IoT Hub billing varies depending on the type of operation. Criar, atualizar, inserir, excluir são gratuitos.Create, update, insert, delete are free. Operações bem-sucedidas, como mensagens do dispositivo para a nuvem e da nuvem para o dispositivo, são cobradas.Successful operations such as device-to-cloud and cloud-to-device messages are charged.

As mensagens do dispositivo para a nuvem enviadas com êxito são cobradas em partes de 4 KB na entrada no Hub IoT.Device-to-cloud messages sent successfully are charged in 4-KB chunks on ingress into IoT Hub. Por exemplo, uma mensagem de 6 KB é cobrada como duas mensagens.For example, a 6-KB message is charged as two messages.

O Hub IoT mantém informações de estado sobre cada dispositivo conectado em um documento JSON de dispositivo.IoT Hub maintains state information about each connected device in a device twin JSON document. São cobradas operações de leitura de um documento de dispositivos.Read operations from a device twin document are charged.

O Hub IoT oferece duas camadas: básica e padrão.IoT Hub offers two tiers: Basic and Standard.

Considere usar a camada Standard se sua arquitetura de IOT usar recursos de comunicação bidirecional.Consider using the Standard tier if your IoT architecture uses bi-directional communication capabilities. Essa camada também oferece uma edição gratuita que é mais adequada para fins de teste.This tier also offers a free edition that is most suited for testing purposes.

Se você só precisa de comunicação unidirecional de dispositivos para a nuvem, use a camada básica , que é mais barata.If you only need uni-directional communication from devices to the cloud, use the Basic tier, which is cheaper.

Para obter mais informações, consulte preços do Hub IOT.For more information, see IoT Hub Pricing.

Stream Analytics do AzureAzure Stream Analytics

Azure Stream Analytics é usado para processamento de fluxo e avaliação de regras.Azure Stream Analytics is used for stream processing and rules evaluation. Azure Stream Analytics é cobrado pelo número de unidades de streaming (SU) por hora, o que leva em computação, memória e taxa de transferência necessários para processar os dados.Azure Stream Analytics is priced by the number of Streaming Units (SU) per hour, which takes into compute, memory, and throughput required to process the data. Azure Stream Analytics no IoT Edge é cobrado por trabalho.Azure Stream Analytics on IoT Edge is billed per job. A cobrança é iniciada quando um trabalho de Stream Analytics é implantado em dispositivos, independentemente do status do trabalho, em execução, com falha ou parado.Billing starts when a Stream Analytics job is deployed to devices regardless of the job status, running, failed, or stopped.

Para obter mais informações sobre preços, consulte preços de Stream Analytics.For more information about pricing, see Stream Analytics pricing.

Azure FunctionsAzure Functions

Azure Functions é usado para transformar dados depois que ele atinge o Hub IoT.Azure Functions is used to transform data after it reaches the IoT Hub. De uma perspectiva de custo, a recomendação é usar o plano de consumo porque você paga apenas pelos recursos de computação que usa.From a cost perspective, the recommendation is to use consumption plan because you pay only for the compute resources you use. Você é cobrado com base no consumo de recursos por segundo, cada vez que um evento dispara a execução da função.You are charged based on per-second resource consumption each time an event triggers the execution of the function. O processamento de vários eventos em uma única execução ou em lotes pode reduzir o custo.Processing several events in a single execution or batches can reduce cost.

Aplicativos Lógicos do AzureAzure Logic Apps

Nessa arquitetura, os aplicativos lógicos são usados para a integração de processos empresariais.In this architecture, Logic Apps is used for business process integration.

Os preços dos aplicativos lógicos funcionam no modelo pago conforme o uso.Logic apps pricing works on the pay-as-you-go model. Gatilhos, ações e execuções de conector são monitorados sempre que um aplicativo lógico é executado.Triggers, actions, and connector executions are metered each time a logic app runs. Todas as ações bem-sucedidas e malsucedidas, incluindo gatilhos, são consideradas como execuções.All successful and unsuccessful actions, including triggers, are considered as executions.

Por exemplo, seu aplicativo lógico processa 1000 mensagens por dia.For instance, your logic app processes 1000 messages a day. Um fluxo de trabalho de cinco ações custará menos de $6.A workflow of five actions will cost less than $6.

Para obter mais informações, consulte Preços de Aplicativos Lógicos.For more information, see Logic Apps pricing.

Armazenamento de dadosData Storage

Para o armazenamento de caminho frio, o armazenamento de BLOBs do Azure é a opção mais econômica.For cold path storage, Azure Blob Storage is the most cost-effective option.

Para o armazenamento de caminho quente, considere o uso de Azure Cosmos DB.For warm path storage, consider using Azure Cosmos DB. Para obter mais informações, consulte preços de Cosmos DB.For more information, see Cosmos DB pricing.

Próximas etapasNext steps