Ниже предлагается предлагаемый переход в нашем приложении:
- Веб-приложение развернуто в локальном IIS (веб-сервер 1).
- Веб-приложение имеет одну функциональность (например, Создать счет для выбранного клиента).
- Для каждого нового запроса на создание счета-фактуры веб-приложение записывает сообщение в очередь служебной шины Azure.
- Функция Azure запускается для каждого нового сообщения в очереди шины обслуживания Azure.
- Функция Azure запускает веб-API (развернуто локально).
- Web API создает счет-фактуру для клиента и сохраняет его в локальном файловом хранилище.
На данный момент у нас все настроено локально, и вместо служебной шины и функции Azure мы напрямую используем Web API. Имея инфраструктуру такого типа, мы в настоящее время регистрируем все события в коллекции MongoDB и предоставляем единый консолидированный обзор для пользователя. Таким образом, они могут определить, что произошло с запросом «Сгенерировать счет», и на каком уровне и с какой ошибкой он получил ошибку (в случае сбоев).
С новой предложенной архитектурой мы находимся в процессе определения способов ведения журнала и трассировки и отображения консолидированного представления для пользователей.
Единственный вариант, о котором я могу подумать, - это регистрировать все события в Azure Cosmos DB отовсюду (т. Е. Веб-сайт, служебная шина, функция, веб-API), а затем предоставлять сводное представление.
Может кто-нибудь предложить, если предложенный подход выглядит хорошо? Или если у кого-то есть лучшее решение?