Знакомство с справочным приложением eShopOnContainers
Совет
Это содержимое является фрагментом из электронной книги, архитектора облачных собственных приложений .NET для Azure, доступных в .NET Docs или в виде бесплатного скачиваемого PDF-файла, который можно прочитать в автономном режиме.
Корпорация Майкрософт, в партнерстве с ведущими экспертами сообщества, разработала полнофункциональное приложение справочника по микрослужбам на основе облака, eShopOnContainers. Это приложение создано для демонстрации с помощью .NET и Docker, а также при необходимости Azure, Kubernetes и Visual Studio для создания онлайн-магазина.
Рис. 2-1. Снимок экрана приложения eShopOnContainers.
Перед началом работы с этой главой рекомендуется скачать эталонное приложение eShopOnContainers. Если это сделать, вам будет проще следовать вместе с представленной информацией.
Компоненты и требования
Начнем с проверки функций и требований приложения. Приложение eShopOnContainers представляет интернет-магазин, который продает различные физические продукты, такие как футболки и кофейные кружки. Если вы купили что-нибудь онлайн раньше, опыт использования магазина должен быть относительно знакомым. Ниже приведены некоторые основные функции, которые реализует магазин:
- Список элементов каталога
- Фильтрация элементов по типу
- Фильтрация элементов по бренду
- Добавление элементов в корзину покупок
- Изменение или удаление элементов из корзины
- Оформление
- Регистрация учетной записи
- Вход
- Выйти
- Просмотр заказов
Приложение также имеет следующие нефункциональный требования:
- Он должен быть высокодоступен, и он должен автоматически масштабироваться для удовлетворения повышенного трафика (и масштабирование обратно после утихания трафика).
- Он должен обеспечить простой мониторинг работоспособности и журналов диагностики, чтобы помочь устранить проблемы, возникающие в ней.
- Она должна поддерживать гибкий процесс разработки, включая поддержку непрерывной интеграции и развертывания (CI/CD).
- Помимо двух интерфейсных веб-интерфейсов (традиционное и одностраничное приложение), приложение также должно поддерживать мобильные клиентские приложения с различными типами операционных систем.
- Она должна поддерживать кроссплатформенную разработку и кроссплатформенную разработку.
Рис. 2-2. Архитектура разработки приложений eShopOnContainers.
Приложение eShopOnContainers доступно из веб-клиентов или мобильных клиентов, обращаюющихся к приложению по протоколу HTTPS, предназначенным для приложения сервера ASP.NET Core MVC или соответствующего шлюза API. Шлюзы API предлагают несколько преимуществ, таких как отключение серверных служб от отдельных интерфейсных клиентов и повышение безопасности. Приложение также использует связанный шаблон, известный как Backends-for-Frontends (BFF), который рекомендует создавать отдельные шлюзы API для каждого внешнего клиента. Эталонная архитектура демонстрирует разбиение шлюзов API на основе того, поступает ли запрос из веб-клиента или мобильного клиента.
Функциональные возможности приложения разбиваются на множество различных микрослужб. Существуют службы, ответственные за проверку подлинности и идентификацию, перечисление элементов из каталога продуктов, управление корзинами покупок пользователей и размещение заказов. Каждая из этих отдельных служб имеет собственное постоянное хранилище. Нет единого основного хранилища данных, с которым взаимодействуют все службы. Вместо этого координация и обмен данными между службами выполняется по мере необходимости и с помощью шины сообщений.
Каждая из различных микрослужб разработана по-разному в зависимости от их индивидуальных требований. Этот аспект означает, что их стек технологий может отличаться, хотя все они построены с помощью .NET и предназначены для облака. Более простые службы предоставляют базовый доступ Create-Read-Update-Delete (CRUD) к базовым хранилищам данных, а более сложные службы используют подходы и шаблоны проектирования на основе домена для управления сложностью бизнеса.
Рис. 2-3. Различные микрослужбы.
Обзор кода
Так как он использует микрослужбы, приложение eShopOnContainers включает в себя довольно несколько отдельных проектов и решений в своем репозитории GitHub. Помимо отдельных решений и исполняемых файлов различные службы предназначены для запуска внутри собственных контейнеров как во время локальной разработки, так и во время выполнения в рабочей среде. На рисунке 2–4 показано полное решение Visual Studio, в котором организованы различные проекты.
Рис. 2-4. Проекты в решении Visual Studio.
Код организован для поддержки различных микрослужб и внутри каждой микрослужбы код разбивается на логику домена, проблемы инфраструктуры и пользовательский интерфейс или конечную точку службы. Во многих случаях зависимости каждой службы могут выполняться службами Azure в рабочей среде и альтернативными вариантами для локальной разработки. Давайте рассмотрим, как требования приложения сопоставляются со службами Azure.
Общие сведения о микрослужбах
Эта книга посвящена облачным приложениям, созданным с помощью технологии Azure. Дополнительные сведения о рекомендациях по микрослужбам и разработке приложений на основе микрослужб см. в книге-компаньоне . NET Microservices: архитектура для контейнерных приложений .NET.