Подготовить

Завершено

Вы добавите собственные усовершенствования в существующую архитектуру, которая соответствует высоким требованиям к надежности организации. Здесь мы обсудим фоновый контекст, необходимый для успешного выполнения упражнений.

Контекст проблемы

Компания Contoso Shoes должна быть готова к следующему запуску высокопрофилного продукта, что, как ожидается, создаст значительный рост трафика. За последние два года было несколько инцидентов, из-за которых веб-сайт будет в автономном режиме до половины дня. Система не была полностью проверена в среде разработки и тестирования, и некоторые ошибки врезались в рабочую среду. Устранение неполадок и исправление заняло много времени, так как операторы не смогли быстро определить первопричины.

Существуют некоторые проблемы, когда некоторые компоненты недоступны. Операции горизонтального масштабирования с вычислительными ресурсами были затронуты при неправильной настройке Azure Key Vault. Кроме того, существуют не какие-либо стратегии для региональных сбоев. В недавнем инциденте весь регион Западной Европы снизился. Так как рабочая нагрузка выполнялась только в этом регионе, они должны были нести финансовую потерю, пока регион не будет резервной копии.

Текущая архитектура

Для выполнения этой задачи необходимо иметь хорошее представление о текущей архитектуре Contoso Shoe. Основное внимание будет сосредоточено на уровне API.

Diagram of the basic architecture for a web application.

Компоненты

Все компоненты этой архитектуры развертываются в одном регионе.

  • план обслуживания приложение Azure Стандарт S2 предоставляет вычислительные платформы, на котором размещено приложение. Автомасштабирование включено. В среде разработки используется номер SKU basic B1.

  • служба приложение Azure предоставляет платформу приложений, которая запускает код API в контейнере. Функция проверки подлинности Служба приложений включена для авторизации.

  • Слоты развертывания позволяют выполнять развертывание, а затем переключать его на рабочее развертывание. Они используются только в рабочей среде.

  • Реестр контейнеров Azure хранит контейнерный код API и отправляется через конвейеры непрерывной интеграции и непрерывной доставки (CI/CD), созданные и управляемые командой рабочей нагрузки. Реестр контейнеров используется как рабочими, так и средами разработки и тестирования.

  • Azure Cosmos DB с API SQL** сохраняет все состояние, связанное с рабочей нагрузкой. Учетная запись базы данных Cosmos DB содержит одну базу данных, содержащую несколько контейнеров в модели общей пропускной способности. Учетная запись Azure Cosmos использует режим бессерверной емкости. Существует один экземпляр для рабочей среды и один для разработки и тестирования.

  • Azure Key Vault хранит секреты, необходимые ДЛЯ API, чтобы выполнить вызов HTTP POST во внешний сторонний API в рамках одного потока запроса. Приложение обращается к секретам через ссылку Key Vault в конфигурации приложения приложение Azure. Существует один Key Vault для рабочей среды и один для разработки и тестирования.

  • Azure Log Analytics используется в качестве единого приемника для хранения журналов и метрик для всех параметров Диагностика Azure для всех компонентов, используемых в решении. Существует одна рабочая область для рабочей среды и одна для разработки и тестирования.

  • приложение Azure Аналитика используется для записи данных телеметрии и журналов из API. Приложение Аналитика использует автономный режим, а не запись в выделенную рабочую область log analytics. Рабочие и разработки и тесты не используют общий экземпляр.

  • Azure Pipelines используется для CI/CD, который создает, тестирует и развертывает рабочую нагрузку в предварительной и рабочей средах. Конвейеры управляются командой рабочей нагрузки, которая также управляет всей инфраструктурой в решении. Bicep — это выбор технологии для инфраструктуры как кода (IaC).

Проектные решения

В списке компонентов метка развертывания состоит из служб, участвующих в обработке запроса: эти службы включают Служба приложений и код API и Cosmos DB. Метка также включает нефункциональный компонент: Key Vault, Реестр контейнеров. Приложение имеет стороннюю зависимость от платформы производительности и устойчивости. Управляемые системой удостоверения используются между компонентами метки.

В метке Служба приложений настроено автоматическое масштабирование на основе нагрузки.

Отдельные среды используются для рабочей среды и разработки и тестирования. В рабочей среде используется номер SKU уровня "Стандартный" Служба приложений. Этот выбор был сделан для подготовки приложения к слоту перед развертыванием в рабочей среде. В среде разработки и тестирования номер SKU уменьшается до номера SKU уровня "Базовый" для оптимизации затрат. Обе среды имеют собственные экземпляры служб. Между средами используется только реестр контейнеров.

Код контейнерного API поставляется в одном образе контейнера, который выполняется в Служба приложений. API имеет несколько конечных точек HTTP, которые используются различными интерфейсами для операций чтения и записи. Интерфейсы не область для этого модуля. Тем не менее, они в область в большой картине для критического состояния этого решения. Код был инструментирован с помощью приложения Аналитика для записи некоторых основных данных телеметрии. Команда, которая разработала этот код, также управляет конвейером CI/CD для образа контейнера API и конвейеров CI/CD.

Компромиссы

Однако, как и во всем, существуют компромиссы с текущей архитектурой. Бизнес-требования определяют оптимизацию затрат по сравнению с надежностью и операциями. Для поддержания в пределах ограничений затрат архитектура не развивалась. Компоненты не хватает при использовании возможностей надежности, предлагаемых платформой. Например, выбор номера SKU для вычислений предотвращает использование рабочей нагрузки Зоны доступности. Для телеметрии используется более старая версия приложения Аналитика, которая не интегрирована с Log Analytics.

Кроме того, доступ к рабочей нагрузке слишком широко распространяется. Например, без интеграции виртуальной сети все службы Azure можно напрямую связаться через общедоступный Интернет.

При разработке решения команда разработчиков приложений использовала одну подписку Azure, совместно используя разработку и тестирование и рабочую среду в той же подписке. Выбор был сделан, чтобы упростить инструментирование для команд DevOps. Но производственные ресурсы и ресурсы разработки и тестирования не полностью изолированы. Некоторые ресурсы совместно используются между двумя средами. Они получили изолированную подписку от остальных решений из Contoso Shoes.

Кроме того, среда разработки и тестирования — это отдельная среда, которая предоставляется всем членам группы разработки и качества обслуживания. Выбор был оправдан, учитывая размер команд и координации между ними, не нуждался в более высокой степени изоляции. По мере развития команды и решения единая среда разработки и тестирования все чаще вызвала сложность интеграции, так как жизненные циклы рабочих потоков сталкиваются. Отток и его влияние на надежность были дорогостоящими.

Спецификация проекта

Компания хочет добавить возможности в архитектуру решения, чтобы она могла справиться с ожидаемым увеличением нагрузки. Ниже приведены бизнес-требования:

  • Создайте возможность противостоять региональным сбоям, расширяя архитектуру до нескольких регионов.
  • Улучшение взаимодействия с клиентами путем ускорения обслуживания клиентов в регионе географически ближе к ним
  • Согласование с схемой развития Azure и использование новейших функций надежности, предлагаемых службами Azure.
  • Перехват проблем рано и обнаружение их каскадного влияния в системе путем создания общей модели работоспособности

Эти требования являются только приоритетным списком планов по улучшению. Группа приложений понимает, что все области разработки должны рассматриваться для обеспечения надежности этого решения до критически важных стандартов. Будьте уверены, что они не перестают улучшать свое решение и операции после того, как вы помогли им с аспектами, описанными в предстоящих упражнениях. Добро пожаловать в команду, Contoso Shoes с нетерпением ждет услышать ваши рекомендации.

Настройка

В этом проекте задачи вы будете принимать на себя роль архитектора, который поможет Contoso обувь достичь своих результатов надежности, начиная с приоритетных элементов выше.

  • Мы рекомендуем использовать средство схемы архитектуры для визуализации архитектуры.
  • Вам не нужна подписка Azure для этой проблемы, если вы комфортно с службами и их функциями.