Чат-бот корпоративного уровняEnterprise-grade conversational bot

Эта эталонная архитектура описывает процесс создания чат-бота корпоративного уровня с помощью Azure Bot Framework.This reference architecture describes how to build an enterprise-grade conversational bot (chatbot) using the Azure Bot Framework. Все боты отличаются друг от друга, но при работе с ними важно знать ряд распространенных шаблонов, рабочих процессов и технологий.Each bot is different, but there are some common patterns, workflows, and technologies to be aware of. Это особенно важно для ботов, которые обслуживают корпоративные рабочие нагрузки, ведь помимо основных функций существует много рекомендаций по проектированию.Especially for a bot to serve enterprise workloads, there are many design considerations beyond just the core functionality. В этой статье рассматриваются наиболее важные аспекты разработки и некоторые средства, которые позволяют создать надежные, безопасные и активно обучающиеся боты.This article covers the most essential design aspects, and introduces the tools needed to build a robust, secure, and actively learning bot.

Схема архитектурыDiagram of the architecture

Скачайте файл Visio этой архитектуры.Download a Visio file of this architecture.

Лучшие примеры служебных с открытым кодом, используемые в этой архитектуре, доступны на GitHub.The best practice utility samples used in this architecture are fully open-sourced and available on GitHub.

АрхитектураArchitecture

В представленной здесь архитектуре используются следующие службы Azure.The architecture shown here uses the following Azure services. В своем боте вы можете использовать некоторые из этих служб или включить дополнительные службы.Your own bot may not use all of these services, or may incorporate additional services.

Логика бота и взаимодействие с пользователемBot logic and user experience

  • Служба Bot Framework.Bot Framework Service (BFS). Эта служба подключает бота к приложению для общения, например к Кортане, Facebook Messenger или Slack.This service connects your bot to a communication app such as Cortana, Facebook Messenger, or Slack. Она обеспечивает обмен данными между ботом и пользователем.It facilitates communication between your bot and the user.
  • Служба приложений Azure.Azure App Service. В Службе приложений Azure размещается логика приложения бота.The bot application logic is hosted in Azure App Service.

Когнитивные и интеллектуальные возможности ботаBot cognition and intelligence

  • Language Understanding (Luis).Language Understanding (LUIS). Служба LUIS входит в состав Azure Cognitive Services и предоставляет ботам возможность понимать естественный язык, определяя намерения пользователя и сущности.Part of Azure Cognitive Services, LUIS enables your bot to understand natural language by identifying user intents and entities.
  • Поиск Azure.Azure Search. Поиск Azure — это управляемая служба, которая предоставляет индекс документов для быстрого поиска по ним.Search is a managed service that provides a quick searchable document index.
  • QnA Maker.QnA Maker. QnA Maker — это облачная служба API, которая позволяет работать с данными в форме вопросов и ответов.QnA Maker is a cloud-based API service that creates a conversational, question-and-answer layer over your data. Обычно в нее загружается частично структурированное содержимое, например список часто задаваемых вопросов.Typically, it's loaded with semi-structured content such as FAQs. Используйте ее для создания базы знаний, позволяющей отвечать на вопросы на естественном языке.Use it to create a knowledge base for answering natural-language questions.
  • Веб-приложение.Web app. Если вашему боту потребуются решения искусственного интеллекта (ИИ), не предоставляемые существующими службами, вы можете реализовать собственные пользовательские службы ИИ и разместить их в формате веб-приложения.If your bot needs AI solutions not provided by an existing service, you can implement your own custom AI and host it as a web app. Так вы получите конечную веб-точку, к которой будет обращаться ваш бот.This provides a web endpoint for your bot to call.

Прием данныхData ingestion

Бот использует необработанные данные, которые ему нужно принять и подготовить.The bot will rely on raw data that must be ingested and prepared. Для оркестрации этого процесса можно применить следующие варианты.Consider any of the following options to orchestrate this process:

  • Фабрика данных Azure.Azure Data Factory. Фабрика данных координирует и автоматизирует перемещение и преобразование данных.Data Factory orchestrates and automates data movement and data transformation.
  • Logic Apps.Logic Apps. Logic Apps является бессерверной платформой для создания рабочих процессов, включающих приложения, данные и службы.Logic Apps is a serverless platform for building workflows that integrate applications, data, and services. Logic Apps предоставляет соединители данных для многих приложений, включая Office 365.Logic Apps provides data connectors for many applications, including Office 365.
  • Функции Azure.Azure Functions. Вы можете использовать функции Azure для написания пользовательского кода, который вызывается триггером , — например, при добавлении документа в хранилище BLOB-объектов или Cosmos DB.You can use Azure Functions to write custom serverless code that is invoked by a trigger — for example, whenever a document is added to blob storage or Cosmos DB.

Ведение журналов и мониторингLogging and monitoring

  • Application Insights.Application Insights. Application Insights позволяет регистрировать метрики работы бота для мониторинга, диагностики и аналитики.Use Application Insights to log the bot's application metrics for monitoring, diagnostic, and analytical purposes.
  • Хранилище BLOB-объектов Azure.Azure Blob Storage. Хранилище BLOB-объектов оптимизировано для хранения больших объемов неструктурированных данных.Blob storage is optimized for storing massive amounts of unstructured data.
  • Cosmos DB.Cosmos DB. Cosmos DB подходит для хранения частично структурированных данных журналов, например бесед бота.Cosmos DB is well-suited for storing semi-structured log data such as conversations.
  • Power BI.Power BI. Power BI позволяет создавать для бота панели мониторинга.Use Power BI to create monitoring dashboards for your bot.

Безопасность и контрольSecurity and governance

Контроль качества и улучшенияQuality assurance and enhancements

  • Azure DevOps.Azure DevOps. Предоставляет множество служб для управления приложениями, в том числе для управления версиями, сборки, тестирования, развертывания и отслеживания проектов.Provides many services for app management, including source control, building, testing, deployment, and project tracking.
  • VS Code  — простой редактор кода для разработки приложений.VS Code A lightweight code editor for app development. Также можно использовать любую другую интегрированную среду разработки со сходными функциями.You can use any other IDE with similar features.

Рекомендации по проектированиюDesign considerations

На высоком уровне функциональные возможности чат-бота можно разделить на основные ("мозг" бота) и требования окружающей среды (его "тело").At a high level, a conversational bot can be divided into the bot functionality (the "brain") and a set of surrounding requirements (the "body"). "Мозг" содержит компоненты, имеющие отношение к предметной области, в том числе логику бота и функции машинного обучения.The brain includes the domain-aware components, including the bot logic and ML capabilities. Другие компоненты не зависят от предметной области и отвечают за нефункциональные требования, например возможности CI/CD, контроль качества и безопасность.Other components are domain agnostic and address non-functional requirements such as CI/CD, quality assurance, and security.

Логическая схема функциональности бота

Прежде чем рассматривать эту архитектуру подробно, давайте разберемся с потоком данных, который проходит через каждый из ее компонентов.Before getting into the specifics of this architecture, let's start with the data flow through each subcomponent of the design. Поток данных включает потоки данных, которые инициируются пользователем и системой.The data flow includes user-initiated and system-initiated data flows.

Поток сообщений пользователяUser message flow

Проверка подлинности.Authentication. Пользователи начинают взаимодействие с проверки подлинности, используя штатный механизм для выбранного канала связи с ботом.Users start by authenticating themselves using whatever mechanism is provided by their channel of communication with the bot. Bot Framework поддерживает различные каналы связи, включая Кортану, Microsoft Teams, Facebook Messenger, Kik и Slack.The bot framework supports many communication channels, including Cortana, Microsoft Teams, Facebook Messenger, Kik, and Slack. Полный список каналов вы найдете в статье Подключение бота к каналам.For a list of channels, see Connect a bot to channels. При создании бота с помощью службы Azure Bot канал Веб-чат настраивается автоматически.When you create a bot with Azure Bot Service, the Web Chat channel is automatically configured. С помощью этого канала пользователям могут напрямую взаимодействовать с ботом с веб-страницы.This channel allows users to interact with your bot directly in a web page. Вы также можете подключить бота к пользовательскому приложению с помощью канала Direct Line.You can also connect the bot to a custom app by using the Direct Line channel. Удостоверение пользователя используется для управления доступом на основе ролей и для персонализации предоставляемого содержимого.The user's identity is used to provide role-based access control, as well as to serve personalized content.

Сообщение пользователя.User message. После проверки подлинности пользователь отправляет боту сообщение.Once authenticated, the user sends a message to the bot. Бот считывает это сообщение и перенаправляет его в службу распознавания речи, такую как LUIS.The bot reads the message and routes it to a natural language understanding service such as LUIS. Этот этап позволяет получить намерения пользователя (что он хочет сделать) и сущности (объекты, которые интересуют пользователя).This step gets the intents (what the user wants to do) and entities (what things the user is interested in). На их основе бот создает запрос и передает его в службу, которая отвечает за предоставление сведений, например в Поиск Azure для поиска документов, в QnA Maker для обработки часто задаваемых вопросов или в пользовательскую базу знаний.The bot then builds a query that it passes to a service that serves information, such as Azure Search for document retrieval, QnA Maker for FAQs, or a custom knowledge base. Ответы от этих служб бот использует для создания ответа.The bot uses these results to construct a response. Чтобы обеспечить наилучший результат для данного запроса, Bot может выполнить несколько обратных вызовов к этим удаленным службам.To give the best result for a given query, the bot might make several back-and-forth calls to these remote services.

Ответ.Response. На этом этапе бот выбирает лучший ответ и отправляет его пользователю.At this point, the bot has determined the best response and sends it to the user. Если оценка достоверности наиболее подходящего ответа низкая, ответ может быть вопросом устранения неоднозначности или подтверждением того, что программа-робот не может ответить надлежащим образом.If the confidence score of the best-matched answer is low, the response might be a disambiguation question or an acknowledgment that the bot could not reply adequately.

Ведение журнала.Logging. При получении запроса пользователя или отправке ответа следует сохранять в хранилище журнала все сообщения, а также метрики производительности и любые полученные от внешних служб сообщения об ошибках.When a user request is received or a response is sent, all conversation actions should be logged to a logging store, along with performance metrics and general errors from external services. Эти журналы позднее пригодятся для диагностики проблем и улучшения системы.These logs will be useful later when diagnosing issues and improving the system.

Обратная связь.Feedback. Еще один полезный прием — собирать от пользователей отзывы и оценки удовлетворенности.Another good practice is to collect user feedback and satisfaction scores. В дополнение к последнему ответу бот может отправлять пользователю запрос, чтобы оценить степень удовлетворенности полученным ответом.As a follow up to the bot's final response, the bot should ask the user to rate their satisfaction with the reply. Такие отзывы помогают решить проблемы холодного запуска или понимания естественного языка, чтобы постоянно повышать точность ответов.Feedback can help you to solve the cold start problem of natural language understanding, and continually improve the accuracy of responses.

Поток данных системыSystem Data Flow

ETL.ETL. Боту для работы нужны сведения и знания, извлеченные серверной частью из необработанных данных на этапе ETL.The bot relies on information and knowledge extracted from the raw data by an ETL process in the backend. Это могут быть структурированные (база данных SQL), частично структурированные (системы CRM, часто задаваемые вопросы) или неструктурированные данные (документы Word, PDF-файлы, веб-журналы).This data might be structured (SQL database), semi-structured (CRM system, FAQs), or unstructured (Word documents, PDFs, web logs). Подсистема ETL извлекает данные по фиксированному расписанию.An ETL subsystem extracts the data on a fixed schedule. Содержимое преобразовывается и обогащается, а затем передается в промежуточное хранилище данных, например в Cosmos DB или хранилище BLOB-объектов Azure.The content is transformed and enriched, then loaded into an intermediary data store, such as Cosmos DB or Azure Blob Storage.

Данные в промежуточном хранилище индексируются в Поиск Azure, чтобы поддерживать извлечение документов, загружаются в QnA Maker для создания пар "вопрос — ответ" или передаются в пользовательское веб-приложение для обработки неструктурированного текста.Data in the intermediary store is then indexed into Azure Search for document retrieval, loaded into QnA Maker to create question and answer pairs, or loaded into a custom web app for unstructured text processing. Также эти данные используются для обучения модели LUIS, которая извлекает намерения и сущности.The data is also used to train a LUIS model for intent and entity extraction.

Контроль качества.Quality assurance. Журналы бесед используются для диагностики и исправления ошибок, сбора полезных сведений об использовании бота и отслеживания общей производительности.The conversation logs are used to diagnose and fix bugs, provide insight into how the bot is being used, and track overall performance. Данные обратной связи полезны для повторного обучения моделей ИИ, которое позволяет повысить производительность бота.Feedback data is useful for retraining the AI models to improve bot performance.

Сборка ботаBuilding a bot

Прежде, чем вы напишете первую строку кода, нужно создать функциональную спецификацию, чтобы команда разработчиков хорошо понимала все ожидаемые действия бота.Before you even write a single line of code, it's important to write a functional specification so the development team has a clear idea of what the bot is expected to do. Эта спецификация должна включать относительно широкий список вариантов ввода пользователя и ожидаемых ответов бота по разным предметным областям.The specification should include a reasonably comprehensive list of user inputs and expected bot responses in various knowledge domains. Этот документ будет бесценным руководством при разработке и тестировании бота.This living document will be an invaluable guide for developing and testing your bot.

Прием данныхIngest data

После этого определите источники данных, которые позволят боту интеллектуально взаимодействовать с пользователями.Next, identify the data sources that will enable the bot to interact intelligently with users. Как упоминалось ранее, эти источники могут содержать структурированные, частично структурированные и неструктурированные наборы данных.As mentioned earlier, these data sources could contain structured, semi-structured, or unstructured data sets. Для начала работы мы рекомендуем один раз передать копию нужных данных в централизованное хранилище, например в Cosmos DB или службу хранилища Azure.When you're getting started, a good approach is to make a one-off copy of the data to a central store, such as Cosmos DB or Azure Storage. По мере развития системы можно создать конвейер автоматического приема данных, чтобы поддерживать актуальность этих данных.As you progress, you should create an automated data ingestion pipeline to keep this data current. Для создания конвейера автоматического приема данных можно применить Фабрику данных, Функции Azure и (или) Logic Apps.Options for an automated ingestion pipeline include Data Factory, Functions, and Logic Apps. В зависимости от особенностей хранилища или схемы данных вы можете сочетать эти подходы в разных комбинациях.Depending on the data stores and the schemas, you might use a combination of these approaches.

При начале работы имеет смысл вручную создать все нужные ресурсы Azure с помощью портала Azure.As you get started, it's reasonable to use the Azure portal to manually create Azure resources. Позднее можно подумать и об автоматизации развертывания этих ресурсов.Later on, you should put more thought into automating the deployment of these resources.

Основная логика бота и пользовательский интерфейсCore bot logic and UX

Подготовив спецификацию и начальный набор данных, пора приступить к реализации бота.Once you have a specification and some data, it's time to start making your bot into reality. Давайте рассмотрим основную логику бота.Let's focus on the core bot logic. Так называют код, который обрабатывает диалог с пользователем и содержит логику маршрутизации, устранения неоднозначностей и ведения журнала.This is the code that handles the conversation with the user, including the routing logic, disambiguation logic, and logging. Для начала ознакомьтесь с платформой Bot Framework, например изучите следующее:Start by familiarizing yourself with the Bot Framework, including:

  • Основные понятия и термины этой платформы, особенно беседы, репликовые [шаги] и действия.Basic concepts and terminology used in the framework, especially conversations, turns, and activities.
  • Возможности службы соединителя бота, которая обрабатывает сетевое взаимодействие между ботом и каналами.The Bot Connector service, which handles the networking between the bot and your channels.
  • Механизмы поддержания состояния беседы, для которых применяется хранилище в памяти или (предпочтительно) хранилище BLOB-объектов Azure или Azure Cosmos DB.How conversation state is maintained, either in memory or better yet in a store such as Azure Blob Storage or Azure Cosmos DB.
  • ПО промежуточного слоя и его применение для подключения бота к внешним службам, таким как Cognitive Services.Middleware, and how it can be used to hook up your bot with external services, such as Cognitive Services.

У вас есть много возможностей для расширения взаимодействия с пользователем.For a rich user experience, there are many options.

  • Вы можете использовать карты для добавления кнопок, изображений, каруселей и меню.You can use cards to include buttons, images, carousels, and menus.
  • Бот даже может поддерживать речь.A bot can support speech.
  • Вы можете внедрить бот в приложение или веб-сайт, чтобы использовать возможности этого приложения или сайта.You can even embed your bot in an app or website and use the capabilities of the app hosting it.

Чтобы приступить к работе, создайте бот с подключением к Интернету с помощью службы Azure Bot, выбрав любой из доступных шаблонов для C# и Node.js.To get started, you can build your bot online using the Azure Bot Service, selecting from the available C# and Node.js templates. Когда бот станет более сложным, его лучше сначала создавать локально, а затем разворачивать в Интернете.As your bot gets more sophisticated, however, you will need to create your bot locally then deploy it to the web. Выберите интегрированную среду разработки, например Visual Studio или Visual Studio Code, и язык программирования.Choose an IDE, such as Visual Studio or Visual Studio Code, and a programming language. Пакеты SDK доступны для следующих языков:SDKs are available for the following languages:

В качестве отправной точки можно скачать исходный код бота, созданный в службе Azure Bot.As a starting point, you can download the source code for the bot you created using the Azure Bot Service. Также вы можете выбрать любой из примеров кода, где представлены как простые боты для повторения сообщений, так и более сложные системы с интеграцией служб ИИ.You can also find sample code, from simple echo bots to more sophisticated bots that integrate with various AI services.

Добавьте извилин вашему ботуAdd smarts to your bot

Для простых ботов с четко определенным набором команд можно использовать набор правил для анализа пользовательского ввода по регулярным выражениям.For a simple bot with a well-defined list of commands, you might be able to use a rules-based approach to parse the user input via regex. Этот подход отличается детерминированностью и простотой для понимания.This has the advantage of being deterministic and understandable. Но если бот должен понимать намерения и сущности в сообщениях, сформулированных более естественным языком, вам помогут службы ИИ.However, when your bot needs to understand the intents and entities of a more natural-language message, there are AI services that can help.

  • Служба LUIS разработана специально для понимания намерений и сущностей в сообщениях пользователя.LUIS is specifically designed to understand user intents and entities. Ее можно обучить по относительно небольшой коллекции сообщений пользователя с нужными ответами, чтобы служба смогла возвращать намерения и сущности для произвольного сообщения пользователя.You train it with a moderately sized collection of relevant user input and desired responses, and it returns the intents and entities for a user's given message.

  • Поиск Azure может работать параллельно с LUIS.Azure Search can work alongside LUIS. В Поиске вы можете создать индекс, поддерживающий поиск по всем подходящим данным.Using Search, you create searchable indexes over all relevant data. Бот запрашивает из этих индексов сущности, извлеченные ранее службой LUIS.The bot queries these indexes for the entities extracted by LUIS. Поиск Azure также поддерживает синонимы, что позволяет расширить сеть сопоставлений с правильным словом.Azure Search also supports synonyms, which can widen the net of correct word mappings.

  • Служба QnA Maker также предназначена для возврата ответов на определенные вопросы.QnA Maker is another service that is designed to return answers for given questions. Она обычно обучается по частично структурированным данным, таким как часто задаваемые вопросы.It's typically trained over semi-structured data such as FAQs.

Бот может использовать и другие службы ИИ для расширения возможностей пользователя.Your bot can use other AI services to further enrich the user experience. Набор готовых служб ИИ в Cognitive Services (куда входят LUIS и QnA Maker) содержит службы компьютерного зрения, речи, языка, поиска и расположения.The Cognitive Services suite of pre-built AI services (which includes LUIS and QnA Maker) has services for vision, speech, language, search, and location. Вы также можете быстро добавлять новые функциональные возможности, например перевод на другие языки, проверку орфографии, анализ тональности, распознавание текста, отслеживание расположения и модерацию содержимого.You can quickly add functionality such as language translation, spell checking, sentiment analysis, OCR, location awareness, and content moderation. Эти службы можно оформить как модули ПО промежуточного слоя, при подключении которых бот будет лучше и более естественно взаимодействовать с пользователем.These services can be wired up as middleware modules in your bot to interact more naturally and intelligently with the user.

Кроме этого, вы можете интегрировать собственную службу ИИ.Another option is to integrate your own custom AI service. Это более сложный подход, но зато он дает полную гибкость по выбору алгоритма, режима и моделей машинного обучения.This approach is more complex, but gives you complete flexibility in terms of the machine learning algorithm, training, and model. Например, вы можете реализовать собственную модель разделов и использовать такой алгоритм, как LDA, чтобы искать схожие или подходящие документы.For example, you could implement your own topic modeling and use algorithm such as LDA to find similar or relevant documents. Мы рекомендуем предоставлять пользовательское решение ИИ в виде конечной точки веб-службы и обращаться к этой точке из основной логики бота.A good approach is to expose your custom AI solution as a web service endpoint, and call the endpoint from the core bot logic. Такую веб-службу можно разместить в Службе приложений или в кластере виртуальных машин.The web service could be hosted in App Service or in a cluster of VMs. Машинное обучение Azure предоставляет ряд служб и библиотек, которые помогут вам при обучении и развертывании моделей.Azure Machine Learning provides a number of services and libraries to assist you in training and deploying your models.

Контроль качества и улучшенияQuality assurance and enhancement

Ведение журнала.Logging. Сохраняйте журналы всех бесед пользователей с ботом, а также базовые метрики производительности и любые ошибки.Log user conversations with the bot, including the underlying performance metrics and any errors. Эти журналы будут бесценным ресурсом для отладки проблем, анализа взаимодействия с пользователем и улучшения системы.These logs will prove invaluable for debugging issues, understanding user interactions, and improving the system. Для разных типов журналов лучше выбрать разные типы хранилищ.Different data stores might be appropriate for different types of logs. Например, служба Application Insights удобна для веб-журналов, Cosmos DB — для бесед, а служба хранилища Azure — для полезных данных большого объема.For example, consider Application Insights for web logs, Cosmos DB for conversations, and Azure Storage for large payloads. См. дополнительные сведения о записи данных напрямую в службу хранилища Azure.See Write directly to Azure Storage.

Обратная связь.Feedback. Также важно понимать, насколько пользователи довольны своим взаимодействием с ботом.It's also important to understand how satisfied users are with their bot interactions. Сохраняя отзывы пользователей, вы сможете на основе этих данных выбрать аспекты взаимодействий для возможных улучшений и (или) повторно обучить модели ИИ для повышения производительности.If you have a record of user feedback, you can use this data to focus your efforts on improving certain interactions and retraining the AI models for improved performance. Используйте обратную связь для обучения используемых моделей, например LUIS.Use the feedback to retrain the models, such as LUIS, in your system.

Тестирование.Testing. Тестирование бота включает модульные тесты, интеграционные тесты, тесты регрессии и функциональные тесты.Testing a bot involves unit tests, integration tests, regression tests, and functional tests. Для тестирования мы рекомендуем сохранять реальные HTTP-ответы от внешних служб, таких как Поиск Azure или QnA Maker, чтобы воспроизводить их для тестов и избавиться от создания реальных сетевых вызовов к внешним службам.For testing, we recommend recording real HTTP responses from external services, such as Azure Search or QnA Maker, so they can be played back during unit testing without needing to make real network calls to external services.

Примечание

Чтобы быстро начать разработку по этим направлениям, ознакомьтесь с репозиторием Botbuilder Utils for JavaScript.To jump-start your development in these areas, look at the Botbuilder Utils for JavaScript. Этот репозиторий содержит пример служебного кода для ботов, созданных с помощью Microsoft Bot Framework версии 4 и работающих на Node.js.This repo contains sample utility code for bots built with Microsoft Bot Framework v4 and running Node.js. Он содержит следующие пакеты.It includes the following packages:

Эти пакеты предоставляются в формате примеров кода для служебных программ и не предполагают никаких гарантий, обновлений или поддержки.These packages are provided as utility sample code, and come with no guarantee of support or updates.

Вопросы доступностиAvailability considerations

При развертывании новых функций или исправлений для бота лучше всего использовать несколько сред развертывания, например промежуточную и рабочую.As you roll out new features or bug fixes to your bot, it's best to use multiple deployment environments, such as staging and production. С помощью слотов развертывания, предлагаемых в Azure DevOps, вы сможете полностью избавиться от времени простоя.Using deployment slots from Azure DevOps allows you to do this with zero downtime. Все обновления можно будет проверить в промежуточной среде, прежде чем переключать их в рабочую среду.You can test your latest upgrades in the staging environment before swapping them to the production environment. С точки зрения обработки нагрузки Служба приложений позволяет выполнять горизонтальное и вертикальное масштабирование вручную или автоматически.In terms of handling load, App Service is designed to scale up or out manually or automatically. Бот размещается в глобальной инфраструктуре центров обработки данных корпорации Майкрософт, а значит для него гарантируется высокий уровень доступности, включенный в соглашение об уровне обслуживания для Службы приложений.Because your bot is hosted in Microsoft's global datacenter infrastructure, the App Service SLA promises high availability.

Вопросы безопасностиSecurity considerations

Как и любое другое приложение, бот может обрабатывать конфиденциальные данные.As with any other application, the bot can be designed to handle sensitive data. Это означает, что вам нужно ограничить права на вход и взаимодействие с ботом.Therefore, restrict who can sign in and use the bot. Примените ограничение данных, к которым осуществляется доступ, на основе удостоверений или ролей пользователей.Also limit which data can be accessed, based on the user's identity or role. Используйте Azure AD для управления удостоверениями и доступом, а также Key Vault для управления ключами и секретами.Use Azure AD for identity and access control and Key Vault to manage keys and secrets.

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

Мониторинг и создание отчетовMonitoring and reporting

После того, как бот будет развернут в рабочей среде, команда DevOps должна поддерживать его в работоспособном состоянии.Once your bot is running in production, you will need a DevOps team to keep it that way. Постоянный мониторинг системы позволит убедиться, что бот работает с оптимальной производительностью.Continually monitor the system to ensure the bot operates at peak performance. Создайте панели мониторинга на основе журналов, отправляемых в Application Insights или Cosmos DB, с помощью той же службы Application Insights, Power BI или пользовательского веб-приложения для мониторинга.Use the logs sent to Application Insights or Cosmos DB to create monitoring dashboards, either using Application Insights itself, Power BI, or a custom web app dashboard. Отправляйте оповещения команде DevOps при возникновении критических ошибок или снижении производительности ниже допустимого порога.Send alerts to the DevOps team if critical errors occur or performance falls below an acceptable threshold.

Автоматизированное развертывание ресурсовAutomated resource deployment

Сам бот является частью более крупной системы, которая поддерживает его работу и снабжает его актуальными данными.The bot itself is only part of a larger system that provides it with the latest data and ensures its proper operation. Для этого нужно развернуть разные ресурсы Azure: службы оркестрации данных, например Фабрику данных; службы хранилища, например Cosmos DB и т. д.All of these other Azure resources — data orchestration services such as Data Factory, storage services such as Cosmos DB, and so forth — must be deployed. Azure Resource Manager предоставляет слой согласованного управления, доступный через портал Azure, PowerShell или Azure CLI.Azure Resource Manager provides a consistent management layer that you can access through the Azure portal, PowerShell, or the Azure CLI. Чтобы обеспечить скорость и согласованность, мы рекомендуем автоматизировать развертывание с помощью одного из описанных подходов.For speed and consistency, it's best to automate your deployment using one of these approaches.

Непрерывное развертывание ботаContinuous bot deployment

Вы можете развернуть логику бота прямо из интегрированной среды разработки или с помощью командной строки, например Azure CLI.You can deploy the bot logic directly from your IDE or from a command line, such as the Azure CLI. По мере усложнения бота лучше всего применить процесс непрерывного развертывания на основе одного из решений CI/CD (например, Azure DevOps), как описано в статье о непрерывном развертывании.As your bot matures, however, it's best to use a continual deployment process using a CI/CD solution such as Azure DevOps, as described in the article Set up continuous deployment. Этот способ избавляет от трудностей при тестировании новых функций и исправлений, предоставляя среду, максимально приближенную к рабочим условиям.This is a good way to ease the friction in testing new features and fixes in your bot in a near-production environment. Также мы рекомендуем иметь несколько сред развертывания, по меньшей мере отдельные промежуточную и рабочую среды.It's also a good idea to have multiple deployment environments, typically at least staging and production. Azure DevOps поддерживает такой подход.Azure DevOps supports this approach.

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

Для оценки затрат используйте калькулятор цен Azure.Use the Azure pricing calculator to estimate costs. Ниже приведены некоторые другие рекомендации.Here are some other considerations.

Приложение-роботBot application

В этой архитектуре основным драйвером затрат является служба приложений Azure, в которой размещается логика приложения Bot.In this architecture, the main cost driver is the Azure App Service in which the bot application logic is hosted. Выберите уровень плана службы приложений, который лучше подходит для ваших потребностей.Choose an App Service plan tier that best suits your needs. Вот несколько рекомендаций.Here are some recommendations:

  • Используйте уровни Free и Shared (Предварительная версия) для целей тестирования, так как общие ресурсы не могут масштабироваться.Use Free and Shared (preview) tiers for testing purposes because the shared resources cannot scale out.
  • Выполните рабочую рабочую нагрузку на уровнях " базовый", " стандартный" и " премиум ", так как приложение выполняется на выделенных экземплярах виртуальных машин и выделяет ресурсы, которые можно масштабировать. Счета за планы службы приложений выставляются за секунду.Run your production workload on Basic, Standard, and Premium tiers because the app runs on dedicated virtual machine instances and has allocated resources that can scale out. App Service plans are billed on a per second basis.

С вас будет взята плата за экземпляры в плане службы приложений, даже если приложение остановлено.You are charged for the instances in the App Service plan, even when the app is stopped. Удалите планы, которые не планируется использовать в долгосрочной перспективе, например тестовые развертывания.Delete plans that you don't intend to use long term, such as test deployments.

Дополнительные сведения см. в разделе Какова стоимость плана службы приложений?.For more information, see How much does my App Service plan cost?.

Прием данныхData ingestion

  • Фабрика данных AzureAzure Data Factory

    В этой архитектуре фабрика данных автоматизирует конвейер приема данных.In this architecture, Data Factory automates the data ingestion pipeline. Изучите ряд возможностей интеграции данных в соответствии с потребностями вашего бюджета от управляемых SQL Server Integration Services для эффективной миграции проектов SQL Server в облако (Экономичный вариант), в крупномасштабные конвейеры данных без сервера для интеграции данных всех форм и размеров.Explore a range of data integration capabilities to fit your budget needs, from managed SQL Server Integration Services for seamless migration of SQL Server projects to the cloud (cost effective option), to large-scale, serverless data pipelines for integrating data of all shapes and sizes.

    Пример см. в разделе " фабрика данных Azure". Пример анализа затрат.For an example, see Azure Data Factory - example cost analysis.

  • Функции AzureAzure Functions

    В этой эталонной архитектуре счета за использование функций Azure выставляются в соответствии с планом потребления.In this reference architecture, Azure Functions is billed as per the Consumption plan. Вы платите на основе потребления ресурсов за секунду и каждый раз, когда событие запускает выполнение функции.You are charged based on per-second resource consumption and each time an event triggers the execution of the function. Обработка нескольких событий в одном выполнении или пакетах может снизить затраты.Processing several events in a single execution or batches can reduce cost.

    Azure масштабирует инфраструктуру, необходимую для выполнения функций по мере необходимости.Azure scales the infrastructure required to run functions as needed. Если Рабочая нагрузка мала, инфраструктура масштабируется до нуля без связанных затрат.When workload is low, the infrastructure is scaled down up to zero with no associated cost. При увеличении рабочей нагрузки Azure использует достаточную емкость для обслуживания всех потребностей.Whenever the workload grows, Azure uses enough capacity to serve all the demand. Так как вы платите за фактическое использование, управляйте точной стоимостью каждого компонента.Because you pay per actual use, manage the exact cost of each component.

Logic AppsLogic Apps

Цены на приложения логики работают в модели с оплатой по мере использования.Logic apps pricing works on the pay-as-you-go model. В Logic Apps есть модель ценообразования с оплатой по мере использования.Logic apps have a pay-as-you-go pricing 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 в день из служебной шины Azure.For instance, your logic app processes 1000 messages a day from Azure Service Bus. Рабочий процесс, состоящий из пяти действий, будет стоить менее $6.A workflow of five actions will cost less than $6. Дополнительные сведения см. на странице с ценами на Logic Apps.For more information, see Logic Apps pricing.

Другие сведения о затратах см. в разделе "затраты" в Microsoft Azure хорошо спроектированной инфраструктурой.For other cost considerations, see the Cost section in Microsoft Azure Well-Architected Framework.

Следующие шагиNext Steps