Эталонная архитектура Интернета вещей AzureAzure IoT reference architecture

В этой эталонной архитектуре показана рекомендуемая архитектура для приложений Интернета вещей в Azure, использующая компоненты платформы как услуги (PaaS).This reference architecture shows a recommended architecture for IoT applications on Azure using PaaS (platform-as-a-service) components.

Схема архитектуры

Приложения Интернета вещей можно описать как вещи (устройства) для передачи данных, которые создают аналитические сведения.IoT applications can be described as things (devices) sending data that generates insights. Эти сведения создают действия для улучшения компании или процессов.These insights generate actions to improve a business or process. Например, модуль (вещь), отправляющий данные температуры.An example is an engine (the thing) sending temperature data. Эти данные используются для оценки правильности работы модуля (анализ).This data is used to evaluate whether the engine is performing as expected (the insight). Аналитические сведения используются, чтобы упреждающе назначить приоритет расписания обслуживания для модуля (действие).The insight is used to proactively prioritize the maintenance schedule for the engine (the action).

Эта эталонная архитектура использует компоненты Azure PaaS (платформа как услуга).This reference architecture uses Azure PaaS (platform-as-a-service) components. Еще один рекомендуемый вариант создания решений IoT в Azure:Another recommended option for building IoT solutions on Azure is:

  • IOT Central Azure.Azure IoT Central. IoT Central — это полностью управляемое решение SaaS (программное обеспечение как услуга).IoT Central is a fully managed SaaS (software-as-a-service) solution. Оно абстрагирует технические решения и позволяет сосредоточиться исключительно на собственном.It abstracts the technical choices and lets you focus on your solution exclusively. Однако вместе с простотой вы получаете меньше настраиваемых решений, чем в решении на основе PaaS.This simplicity comes with a tradeoff in being less customizable than a PaaS-based solution.

На высшем уровне существует два способа обработки данных телеметрии: "горячий" и "холодный" путь.At a high level, there are two ways to process telemetry data, hot path and cold path. Разница связана с требованиями к задержке и доступу к данным.The difference has to do with requirements for latency and data access.

  • "Горячий" путь позволяет анализировать данные в режиме реального времени по мере их поступления.The hot path analyzes data in near-real-time, as it arrives. При применении этого способа данные телеметрии должны обрабатываться с очень низкой задержкой.In the hot path, telemetry must be processed with very low latency. "Горячий" путь обычно реализуется с помощью подсистемы потоковой обработки.The hot path is typically implemented using a stream processing engine. Выходные данные могут инициировать оповещение или записываться в структурированный формат, который можно запросить с помощью средств аналитики.The output may trigger an alert, or be written to a structured format that can be queried using analytical tools.
  • "Холодный" путь позволяет выполнить пакетную обработку в течение более длительных интервалов (ежечасно или ежедневно).The cold path performs batch processing at longer intervals (hourly or daily). "Холодный" путь обычно работает с большими объемами данных, однако результаты не требуются также своевременно, как в "горячем" пути.The cold path typically operates over large volumes of data, but the results don't need to be as timely as the hot path. В "холодном" пути собираются необработанные данные телеметрии, а затем передаются в процесс пакетной обработки.In the cold path, raw telemetry is captured and then fed into a batch process.

ArchitectureArchitecture

Архитектура состоит из следующих компонентов.This architecture consists of the following components. Для некоторых приложений могут требоваться лишь некоторые из перечисленных здесь компонентов.Some applications may not require every component listed here.

Устройства IOT.IoT devices. Устройства можно безопасно зарегистрировать в облаке и подключать к нему для отправки и получения данных.Devices can securely register with the cloud, and can connect to the cloud to send and receive data. Некоторые устройства могут быть пограничными устройствами , выполняющими определенную обработку данных на самом устройстве или в полевом шлюзе.Some devices may be edge devices that perform some data processing on the device itself or in a field gateway. Мы рекомендуем использовать Azure IoT Edge для обработки пограничных устройств.We recommend Azure IoT Edge for edge processing.

Облачный шлюз.Cloud gateway. Облачный шлюз предоставляет центр облачных вычислений устройств для безопасного подключения к облаку и отправки данных.A cloud gateway provides a cloud hub for devices to connect securely to the cloud and send data. Он также предоставляет возможности управления устройствами, включая команды и контроль устройств.It also provides device management, capabilities, including command and control of devices. Для облачного шлюза мы рекомендуем использовать Центр Интернета вещей.For the cloud gateway, we recommend IoT Hub. Центр Интернета вещей — это размещенная облачная служба, которая принимает данные о событиях с устройств, действуя как брокер сообщений между устройствами и серверными службами.IoT Hub is a hosted cloud service that ingests events from devices, acting as a message broker between devices and backend services. Центр Интернета вещей предоставляет безопасное подключение, получение данных событий, двусторонний обмен сообщениями и управление устройствами.IoT Hub provides secure connectivity, event ingestion, bidirectional communication, and device management.

Подготовка устройства.Device provisioning. При регистрации и подключении большого набора устройств мы рекомендуем использовать Службу подготовки устройств к добавлению в Центр Интернета вещей (DPS).For registering and connecting large sets of devices, we recommend using the IoT Hub Device Provisioning Service (DPS). DPS позволяет назначать и регистрировать устройства в определенные конечные точки Центра Интернета вещей Azure в нужном масштабе.DPS lets you assign and register devices to specific Azure IoT Hub endpoints at scale.

Потоковая обработка.Stream processing. Потоковая передача анализирует большие потоки записей данных и оценивает правила для этих потоков.Stream processing analyzes large streams of data records and evaluates rules for those streams. Для обработки потоков данных рекомендуем использовать Azure Stream Analytics.For stream processing, we recommend Azure Stream Analytics. Stream Analytics может выполнять сложный анализ в необходимом масштабе с помощью функций ограничения окна, агрегаций потока и внешних соединителей источников данных.Stream Analytics can execute complex analysis at scale, using time windowing functions, stream aggregations, and external data source joins. Кроме того, вы можете использовать Apache Spark в Azure Databricks.Another option is Apache Spark on Azure Databricks.

Машинное обучение позволяет выполнять прогнозные алгоритмы по отношению к историческим данным телеметрии, включая такие сценарии, как прогнозное обслуживание.Machine learning allows predictive algorithms to be executed over historical telemetry data, enabling scenarios such as predictive maintenance. Для работы с машинным обучением мы рекомендуем использовать службу Машинное обучение Azure.For machine learning, we recommend Azure Machine Learning.

Хранилище "горячего" пути содержит данные, которые должны быть сразу же доступны на устройстве для создания отчетов и визуализации.Warm path storage holds data that must be available immediately from device for reporting and visualization. В качестве хранилища "горячего" пути мы рекомендуем использовать Cosmos DB.For warm path storage, we recommend Cosmos DB. Cosmos DB — это многомодельная глобально распределенная база данных.Cosmos DB is a globally distributed, multi-model database.

Хранилище "холодного" пути содержит данные, которые хранятся долгосрочно и используются в пакетной обработке.Cold path storage holds data that is kept longer-term and is used for batch processing. В качестве хранилища "холодного" пути мы рекомендуем использовать хранилище BLOB-объектов Azure.For cold path storage, we recommend Azure Blob Storage. Данные можно заархивировать в хранилище BLOB-объектов на неопределенное время без лишних затрат. Такие данные легко доступны для пакетной обработки.Data can be archived in Blob storage indefinitely at low cost, and is easily accessible for batch processing.

При преобразовании данных выполняются действия с потоком данных телеметрии или его объединение.Data transformation manipulates or aggregates the telemetry stream. Примеры включают преобразование протоколов, например, преобразование двоичных данных в JSON или объединение точек данных.Examples include protocol transformation, such as converting binary data to JSON, or combining data points. Если данные необходимо преобразовать до поступления в Центр Интернета вещей, мы рекомендуем использовать шлюз протокола (не показано).If the data must be transformed before reaching IoT Hub, we recommend using a protocol gateway (not shown). В противном случае данные можно преобразовать после поступления в Центр Интернета вещей.Otherwise, data can be transformed after it reaches IoT Hub. В этом случае мы рекомендуем использовать Функции Azure. Это решение поддерживает интеграцию с Центром Интернета вещей, Cosmos DB и хранилищем BLOB-объектов.In that case, we recommend using Azure Functions, which has built-in integration with IoT Hub, Cosmos DB, and Blob Storage.

При интеграции бизнес-процессов действия выполняются на основе аналитических сведений из данных устройства.Business process integration performs actions based on insights from the device data. Сюда входит хранение информационных сообщений, создание оповещений, отправка электронной почты или текстовых сообщений или интеграция с CRM.This could include storing informational messages, raising alarms, sending email or SMS messages, or integrating with CRM. Для интеграции бизнес-процессов мы рекомендуем использовать Azure Logic Apps.We recommend using Azure Logic Apps for business process integration.

Управление пользователями позволяет настроить ограничение пользователей или групп для выполнения действий на устройствах, таких как обновление встроенного ПО.User management restricts which users or groups can perform actions on devices, such as upgrading firmware. Оно также определяет возможности для пользователей в приложениях.It also defines capabilities for users in applications. Для аутентификации и авторизации пользователей мы рекомендуем использовать Azure Active Directory.We recommend using Azure Active Directory to authenticate and authorize users.

Средство мониторинга безопасности Azure Security Center для Интернета вещей предоставляет комплексное решение по обеспечению безопасности для рабочих нагрузок IOT и упрощает их защиту за счет унифицированной видимости и контроля, адаптивной защиты от угроз, а также интеллектуального обнаружения угроз и реагирования между рабочими нагрузками с конечных устройств через пограничные и через облака.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.

Вопросы масштабируемостиScalability considerations

Приложение Интернета вещей следует создавать как отдельную службу, которую можно масштабировать независимо от других.An IoT application should be built as discrete services that can scale independently. Учитывайте следующие моменты масштабируемости:Consider the following scalability points:

IoTHub.IoTHub. Для Центра Интернета вещей необходимо учитывать следующие факторы масштабирования:For IoT Hub, consider the following scale factors:

  • максимальная дневная квота сообщений в Центре Интернета вещей;The maximum daily quota of messages into IoT Hub.
  • квота на число подключенных устройств в экземпляре Центра Интернета вещей;The quota of connected devices in an IoT Hub instance.
  • пропускная способность приема данных — насколько быстро Центр Интернета вещей может принимать сообщения;Ingestion throughput — how quickly IoT Hub can ingest messages.
  • пропускная способность обработки — скорость обработки входящих сообщений.Processing throughput — how quickly the incoming messages are processed.

Каждый центр Интернета вещей подготавливается с определенным количеством единиц для каждого конкретного уровня.Each IoT hub is provisioned with a certain number of units in a specific tier. Уровень и число единиц определяют максимальную дневную квоту сообщений, которые вы можете отправить в центр.The tier and number of units determine the maximum daily quota of messages that devices can send to the hub. Дополнительные сведения см. в разделе о квотах и регулировании Центра Интернета вещей.For more information, see IoT Hub quotas and throttling. Вы можете увеличить масштаб, не прерывая имеющиеся операции.You can scale up a hub without interrupting existing operations.

Stream Analytics.Stream Analytics. Задания Stream Analytics лучше всего масштабируются, если они параллельны во всех точках конвейера Stream Analytics, от ввода данных до запроса и вывода данных.Stream Analytics jobs scale best if they are parallel at all points in the Stream Analytics pipeline, from input to query to output. Полностью параллельные задания позволяют Stream Analytics разделить работу между несколькими вычислительными узлами.A fully parallel job allows Stream Analytics to split the work across multiple compute nodes. В противном случае Stream Analytics должен объединять данные потока в одном расположении.Otherwise, Stream Analytics has to combine the stream data into one place. Дополнительные сведения см. в статье Использование параллелизации запросов в Azure Stream Analytics.For more information, see Leverage query parallelization in Azure Stream Analytics.

Центр Интернета вещей автоматически разбивает сообщения устройств на основе идентификатора устройства.IoT Hub automatically partitions device messages based on the device ID. Все сообщения с определенного устройства будут всегда доставляться в тот же раздел, однако в одном разделе всегда будут сообщения с нескольких устройств.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. Таким образом, единицей измерения параллелизации является идентификатор раздела.Therefore, the unit of parallelization is the partition ID.

Функции.Functions. При чтении из конечной точки Центров событий существует максимальное количество экземпляров для каждого раздела Центра событий.When reading from the Event Hubs endpoint, there is a maximum of function instance per event hub partition. Максимальная скорость обработки определяется тем, как быстро один экземпляр функции может обрабатывать события из одного раздела.The maximum processing rate is determined by how fast one function instance can process the events from a single partition. Функция должна обрабатывать сообщения в пакетах.The function should process messages in batches.

Cosmos DB.Cosmos DB. Чтобы расширить коллекцию Cosmos DB, создайте коллекцию с ключом раздела и включите его в каждый написанный вами документ.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. Дополнительные сведения см. в разделе с рекомендациями по выбору ключа раздела.For more information, see Best practices when choosing a partition key.

  • Если вы храните и обновляете один документ на каждом устройстве, идентификатор устройства будет хорошим ключом раздела.If you store and update a single document per device, the device ID is a good partition key. Операции записи равномерно распределяются между ключами.Writes are evenly distributed across the keys. Размер каждой секции строго ограничен, так как для значения каждого ключа есть по одному документу.The size of each partition is strictly bounded, because there is a single document for each key value.
  • Если вы храните отдельный документ для каждого сообщения устройства, использование идентификатора устройства в качестве ключа раздела быстро приведет к превышению ограничения в 10 ГБ на раздел.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. Идентификатор сообщения в этом случае является более оптимальным ключом раздела.Message ID is a better partition key in that case. Обычно вы все равно включаете идентификатор устройства в документ для индексации и запросов.Typically you would still include device ID in the document for indexing and querying.

Служба "аналитика временных рядов Azure" (TSI) представляет собой аналитику, службу хранилища и визуализации для данных временных рядов, предоставляя возможности, включая фильтрацию и статистическую обработку в соответствии с SQL, устраняя необходимость в пользовательских функциях.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. " Аналитика временных рядов " предоставляет обозреватель данных для визуализации и запроса данных, а также интерфейсов API запросов на другие запросы.Time Series Insights provides a data explorer to visualize and query data as well as REST Query APIs. Помимо данных временных рядов, TSI также хорошо подходит для решений, которым необходимо запрашивать статистические выражения по большим наборам данных.In addition to time series data, TSI is also well-suited for solutions that need to query aggregates over large sets of data. Благодаря поддержке многоуровневого хранилища, расширенным API-интерфейсам, модели и интеграции с экосистемой Интернета вещей Azure, проводником для визуализаций и расширяемостью с помощью Power BI и т. д. TSI — это наша рекомендация по хранению и анализу данных временных рядов.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.

Замечания по безопасностиSecurity considerations

Надежный и безопасный обмен даннымиTrustworthy and secure communication

Все данные, поступающие с устройства и отправляющиеся на него, должны быть надежными.All information received from and sent to a device must be trustworthy. Если устройство не может поддерживать следующие возможности шифрования, оно должно быть ограничено локальными сетями и вся межсетевая связь должна проходить через полевой шлюз: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:

  • Шифрование данных с помощью надежно защищенного, публично проанализированного и широко реализованного алгоритма шифрования с симметричным ключом.Data encryption with a provably secure, publicly analyzed, and broadly implemented symmetric-key encryption algorithm.
  • Цифровая подпись с помощью надежно защищенного, публично проанализированного и широко реализованного алгоритма шифрования с симметричным ключом.Digital signature with a provably secure, publicly analyzed, and broadly implemented symmetric-key signature algorithm.
  • Поддержка TLS 1.2 для TCP или других путей обмена данными на основе потоковой передачи или DTLS 1.2 для путей обмена данными на основе датаграммы.Support for either TLS 1.2 for TCP or other stream-based communication paths or DTLS 1.2 for datagram-based communication paths. Поддержка обработки сертификата X.509 является необязательной. Ее можно заменить более эффективным с точки зрения вычислений и сети режимом ключа с предварительным общим доступом для TLS, который можно реализовать с поддержкой алгоритмов AES и 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.
  • Обновляемое хранилище ключей и ключи для каждого устройства.Updateable key-store and per-device keys. Каждое устройство должно иметь уникальный материальный ключ или маркеры, которые идентифицируют его в системе.Each device must have unique key material or tokens that identify it toward the system. Устройствам следует безопасно хранить ключи (например, с помощью безопасного хранилища ключей).The devices should store the key securely on the device (for example, using a secure key-store). Устройство должно иметь возможность периодически обновлять ключи или маркеры или мгновенно в аварийных ситуациях, например при нарушении системы безопасности.The device should be able to update the keys or tokens periodically, or reactively in emergency situations such as a system breach.
  • Встроенное ПО и программное обеспечение приложения на устройстве должны позволять применение обновлений для исправления обнаруженных уязвимостей безопасности.The firmware and application software on the device must allow for updates to enable the repair of discovered security vulnerabilities.

Тем не менее многие устройства слишком ограничены для поддержки таких требований.However, many devices are too constrained to support these requirements. В этом случае следует использовать полевой шлюз.In that case, a field gateway should be used. Безопасное подключение устройств к полевому шлюзу через локальную сеть и шлюз обеспечивает безопасный обмен данными с облаком.Devices connect securely to the field gateway through a local area network, and the gateway enables secure communication to the cloud.

Физическая проверка наличия незаконных измененийPhysical tamper-proofing

Чтобы обеспечить целостность системы безопасности и надежность системы, архитектура устройства должна включать функции, защищающие от попыток физической манипуляции.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.

Пример:For example:

  • Выберите микроконтроллеры/микропроцессоры или вспомогательное оборудование, которое обеспечивает безопасное хранение и использование материала криптографического ключа, например интеграцию доверенного платформенного модуля (TPM).Choose microcontrollers/microprocessors or auxiliary hardware that provides secure storage and use of cryptographic key material, such as trusted platform module (TPM) integration.
  • Безопасный загрузчик и безопасная загрузка программного обеспечения, привязанная в доверенном платформенном модуле.Secure boot loader and secure software loading, anchored in the TPM.
  • Используйте датчики, чтобы обнаружить попытки вторжения и манипуляции средой устройства путем оповещения и потенциального цифрового самоуничтожения устройства.Use sensors to detect intrusion attempts and attempts to manipulate the device environment with alerting and potentially "digital self-destruction" of the device.

Дополнительные сведения о безопасности см. в статье Архитектура безопасности Интернета вещей.For additional security considerations, see Internet of Things (IoT) security architecture.

Мониторинг и ведение журналаMonitoring and logging

Системы мониторинга и ведения журнала используются для определения работоспособности устройства и устранения неполадок.Logging and monitoring systems are used to determine whether the solution is functioning and to help troubleshoot problems. Они помогают ответить на следующие вопросы по операциям:Monitoring and logging systems help answer the following operational questions:

  • Есть ли в устройствах или системах ошибки?Are devices or systems in an error condition?
  • Правильно ли устройства или системы настроены?Are devices or systems correctly configured?
  • Создают ли устройства или системы точные данные?Are devices or systems generating accurate data?
  • Соответствуют ли системы ожиданиям компании и клиентов?Are systems meeting the expectations of both the business and end customers?

Средства ведения журнала и мониторинга обычно состоят из следующих четырех компонентов:Logging and monitoring tools are typically comprised of the following four components:

  • средства проверки производительности системы и визуализации временной шкалы для мониторинга системы и базового устранения неполадок;System performance and timeline visualization tools to monitor the system and for basic troubleshooting.
  • прием данных в буфере, что позволяет поместить в буфер данные журнала;Buffered data ingestion, to buffer log data.
  • постоянное хранилище для хранения данных журнала;Persistence store to store log data.
  • возможности поиска и запросов для просмотра данных журнала, используемых при детальном устранении неполадок.Search and query capabilities, to view log data for use in detailed troubleshooting.

Системы мониторинга предоставляют аналитические сведения о работоспособности, безопасности, стабильности и производительности решения Интернета вещей.Monitoring systems provide insights into the health, security, and stability, and performance of an IoT solution. Эти системы также могут предоставлять более подробное представление, записывать изменения конфигурации компонентов и предоставлять извлеченные данные журнала, с помощью которых можно выявить потенциальные уязвимости системы безопасности, улучшить процесс управления инцидентами и помочь владельцу системы устранять неполадки.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. Комплексные решения для мониторинга включают возможность запрашивать информацию для определенных подсистем или выполнять статистическую обработку в нескольких подсистемах.Comprehensive monitoring solutions include the ability to query information for specific subsystems or aggregating across multiple subsystems.

Разработку системы мониторинга следует начинать с определения работоспособных операций, соблюдения нормативных требований и требований к аудиту.Monitoring system development should begin by defining healthy operation, regulatory compliance, and audit requirements. Собранные метрики могут включать:Metrics collected may include:

  • физические устройства, пограничные устройства и компоненты инфраструктуры, сообщающие об изменениях конфигурации;Physical devices, edge devices, and infrastructure components reporting configuration changes.
  • приложения, сообщающие об изменениях конфигурации, журналах аудита безопасности, сведения о частоте запросов, времени отклика, частоте появления ошибок и статистику сборки мусора для управляемых языков;Applications reporting configuration changes, security audit logs, request rates, response times, error rates, and garbage collection statistics for managed languages.
  • базы данных, постоянные хранилища, кэши, сообщающие о производительности запросов и записи, изменениях схемы, журналах аудита безопасности, блокировках и взаимоблокировках, производительности индекса, потреблении ЦП, памяти и диска;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.
  • управляемые службы (IaaS, PaaS, SaaS и FaaS), которые сообщают о метриках работоспособности и изменениях конфигурации, влияющих на работоспособность и производительность зависимой системы.Managed services (IaaS, PaaS, SaaS, and FaaS) reporting health metrics and configuration changes that impact dependent system health and performance.

Визуализация метрик мониторинга позволяет операторам получать оповещения о нестабильности системы и облегчает реагирование на инциденты.Visualization of monitoring metrics alert operators to system instabilities and facilitate incident response.

Трассировка данных телеметрииTracing telemetry

Трассировка данных телеметрии позволяет оператору отслеживать перемещение фрагмента данных телеметрии по системе с момента его создания.Tracing telemetry allows an operator to follow the journey of a piece of telemetry from creation through the system. Трассировка очень важна для отладки и устранения неполадок.Tracing is important for debugging and troubleshooting. В решениях Интернета вещей, которые используют Центр Интернета вещей и пакеты SDK для устройств Центра Интернета вещей, датаграммы трассировки можно создавать в качестве сообщений из облака на устройство и включать в поток телеметрии.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.

Ведение журналаLogging

Системы ведения журнала являются неотъемлемой частью понимания действий, выполненных решением, произошедших сбоев и могут помочь в устранении этих сбоев.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. Вы можете проанализировать журналы, чтобы помочь понять и исправить ошибки, улучшить характеристики производительности, а также обеспечить соответствие действующим правилам и нормам.Logs can be analyzed to help understand and remedy error conditions, enhance performance characteristics, and ensure compliance with governing rule and regulations.

Несмотря на то что ведение журнала обычным текстом меньше влияет на первоначальные затраты на разработку, компьютеру сложнее его анализировать и читать.Though plain-text logging is lower impact on upfront development costs, it is more challenging for a machine to parse/read. Мы рекомендуем использовать структурированное ведение журнала, чтобы собранная информация была доступна для анализа компьютером и удобной для чтения.We recommend structured logging be used, as collected information is both machine parsable and human readable. Структурированное ведение журнала добавляет ситуационный контекст и метаданные к информации журнала.Structured logging adds situational context and metadata to the log information. При структурированном ведении журнала свойства привилегированы и отформатированы по парам "ключ — значение" или имеют предопределенную схему для улучшения возможностей поиска и запросов.In structured logging, properties are first class citizens formatted as key/value pairs, or with a fixed schema, to enhance search and query capabilities.

Рекомендации для DevOpsDevOps considerations

Используйте инфраструктуру как код (IaC).Use the Infrastructure as code (IaC). IaC — это управление инфраструктурой (сетями, виртуальными машинами, подсистемами балансировки нагрузки и топологией подключения) с декларативным подходом.IaC is the management of infrastructure (networks, virtual machines, load balancers, and connection topology) with a declarative approach. Шаблоны должны иметь версию и часть конвейера выпуска.Templates should be versioned and part of the release pipeline. Наиболее надежные процессы развертывания автоматизированы и идемпотентными.The most reliable deployment processes are automated and idempotent. Один из способов — создать шаблон Azure Resource Manager для подготовки ресурсов Интернета вещей и инфраструктуры.One way is to create Azure Resource Manager template for provisioning the IoT resources and the infrastructure.

Чтобы автоматизировать развертывание инфраструктуры, можно использовать Azure DevOps Services, Jenkins или другие решения CI/CD.To automate infrastructure deployment, you can use Azure DevOps Services, Jenkins, or other CI/CD solutions. Предложение Azure Pipelines — это часть Azure DevOps Services, которая выполняет автоматизированные сборки, тесты и развертывания.Azure Pipelines is part of Azure DevOps Services and runs automated builds, tests, and deployments.

Рассмотрите возможность промежуточного хранения рабочих нагрузок путем развертывания на различных стадиях и выполнения проверок на каждом этапе перед переходом к следующему. Таким образом, вы можете принудительно отправлять обновления в рабочие среды с высоким уровнем контроля и сокращать непредвиденные проблемы развертывания.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. Для обновления динамических рабочих сред рекомендуются такие выпуски , как синий-зеленый и ранний.Blue-green deployment and Canary releases are recommended deployment strategies for updating live production environments. Также рекомендуется иметь хорошую стратегию отката при сбое развертывания. Например, можно автоматически повторно развернуть предыдущее успешное развертывание из журнала развертывания, в Azure CLI — хороший пример.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.

Рассмотрите возможность мониторинга решения с помощью Azure Monitor.Consider monitoring your solution by using Azure Monitor. Azure Monitor является основным источником мониторинга и ведения журнала для всех служб Azure, он предоставляет диагностические сведения для ресурсов Azure.Azure Monitor is the main source of monitoring and logging for all your Azure services, it provides diagnostics information for Azure resources. Например, можно отслеживать операции, выполняемые в центре Интернета вещей.You can for example, monitor the operations that take place within your IoT hub. Существуют определенные метрики и события, которые Azure Monitor поддерживают, а также службы, схемы и категории для журналов диагностики Azure.There are specific metrics and events that Azure Monitor supports, as well as services, schemas, and categories for Azure Diagnostic Logs.

Дополнительные сведения см. в подразделе DevOps статьи Microsoft Azure Well-Architected Framework.For more information, see the DevOps section in Microsoft Azure Well-Architected Framework.

Рекомендации по стоимостиCost considerations

Как правило, для оценки затрат используйте Калькулятор цен Azure .In general, use the Azure pricing calculator to estimate costs. Другие рекомендации описаны в разделе "затраты" в Microsoft Azure Well-Architected Framework.Other considerations are described in the Cost section in Microsoft Azure Well-Architected Framework.

Существуют способы оптимизации затрат, связанных со службами, используемыми в этой эталонной архитектуре.There are ways to optimize costs associated the services used in this reference architecture.

Центр Интернета вещей AzureAzure IoT Hub

В этой архитектуре центр Интернета вещей — это облачный шлюз, принимающий события от устройств.In this architecture, IoT Hub is the cloud gateway that ingests events from devices. Выставление счетов за центр Интернета вещей зависит от типа операции.IoT Hub billing varies depending on the type of operation. Создание, обновление, вставка и удаление доступны бесплатно.Create, update, insert, delete are free. За успешные операции, такие как устройства в облако и сообщения, отправляемые из облака на устройство, начисляются счета.Successful operations such as device-to-cloud and cloud-to-device messages are charged.

Успешно отправленные сообщения с устройства в облако начисляются в блоках по 4 КБ на входе в центр Интернета вещей.Device-to-cloud messages sent successfully are charged in 4-KB chunks on ingress into IoT Hub. Например, сообщение размером 6 КБ будет оплачено как два сообщения.For example, a 6-KB message is charged as two messages.

Центр Интернета вещей хранит сведения о состоянии каждого подключенного устройства в документе JSON двойникаа устройства.IoT Hub maintains state information about each connected device in a device twin JSON document. Операции чтения из документа двойникаа устройства начисляются.Read operations from a device twin document are charged.

Центр Интернета вещей предлагает два уровня: " базовый " и " стандартный ".IoT Hub offers two tiers: Basic and Standard.

Рекомендуется использовать уровень " стандартный ", если архитектура Интернета вещей использует возможности двунаправленной связи.Consider using the Standard tier if your IoT architecture uses bi-directional communication capabilities. Этот уровень также предлагает бесплатный выпуск, наиболее подходящий для тестирования.This tier also offers a free edition that is most suited for testing purposes.

Если вам требуется только однонаправленная связь между устройствами и облаком, используйте уровень " базовый ", который дешевле.If you only need uni-directional communication from devices to the cloud, use the Basic tier, which is cheaper.

Дополнительные сведения см. на странице цен на центр Интернета вещей.For more information, see IoT Hub Pricing.

Azure Stream AnalyticsAzure Stream Analytics

Azure Stream Analytics используется для обработки потоков и оценки правил.Azure Stream Analytics is used for stream processing and rules evaluation. Azure Stream Analytics оценивается по количеству единиц потоковой передачи (SU) в час, которое занимается вычислением, памятью и пропускной способностью, необходимой для обработки данных.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 на IoT Edge взимается плата за каждое задание.Azure Stream Analytics on IoT Edge is billed per job. Выставление счетов начинается при развертывании Stream Analytics задания на устройствах независимо от состояния задания, его выполнения, сбоя или остановки.Billing starts when a Stream Analytics job is deployed to devices regardless of the job status, running, failed, or stopped.

Дополнительные сведения о ценах см. на странице цен на Stream Analytics.For more information about pricing, see Stream Analytics pricing.

Функции AzureAzure Functions

Функции Azure используются для преобразования данных после достижения центра Интернета вещей.Azure Functions is used to transform data after it reaches the IoT Hub. С точки зрения затрат рекомендуется использовать план потребления , так как вы платите только за используемые ресурсы вычислений.From a cost perspective, the recommendation is to use consumption plan because you pay only for the compute resources you use. За каждый раз, когда событие запускает выполнение функции, выставляются счета на основе потребления ресурсов за секунду.You are charged based on per-second resource consumption each time an event triggers the execution of the function. Обработка нескольких событий в одном выполнении или пакетах может снизить затраты.Processing several events in a single execution or batches can reduce cost.

Azure Logic AppsAzure Logic Apps

В этой архитектуре Logic Apps используется для интеграции бизнес-процессов.In this architecture, Logic Apps is used for business process integration.

Цены на приложения логики работают в модели с оплатой по мере использования.Logic apps pricing works on the pay-as-you-go model. Триггеры, действия и выполнения соединителей измеряются каждый раз при запуске приложения логики.Triggers, actions, and connector executions are metered each time a logic app runs. Все успешные и неудачные действия, включая триггеры, считаются выполнением.All successful and unsuccessful actions, including triggers, are considered as executions.

Например, приложение логики обрабатывает сообщения 1000 в день.For instance, your logic app processes 1000 messages a day. Рабочий процесс, состоящий из пяти действий, будет стоить менее $6.A workflow of five actions will cost less than $6.

Дополнительные сведения см. на странице с ценами на Logic Apps.For more information, see Logic Apps pricing.

Хранилище данныхData Storage

Для хранилища "холодный путь" хранилище BLOB-объектов Azure является наиболее экономичным вариантом.For cold path storage, Azure Blob Storage is the most cost-effective option.

Для хранилища «горячий путь» рекомендуется использовать Azure Cosmos DB.For warm path storage, consider using Azure Cosmos DB. Дополнительные сведения см. в разделе цены на Cosmos DB.For more information, see Cosmos DB pricing.

Дальнейшие действияNext steps