Подготовить
Вы добавите собственные усовершенствования в существующую архитектуру, которая соответствует требованиям высокой надежности организации. Здесь мы обсудим фоновый контекст, который необходимо выполнить с упражнениями.
Контекст проблемы
Компания Contoso Shoes должна быть готова к следующему запуску высокопрофилного продукта, что, как ожидается, создаст значительный рост трафика. За последние два года было несколько инцидентов, из-за которых веб-сайт будет в автономном режиме до половины дня. Система не была полностью проверена в среде разработки и тестирования, и некоторые ошибки врезались в рабочую среду. Устранение неполадок и исправление заняло много времени, так как операторы не смогли быстро определить первопричины.
Существуют некоторые проблемы, когда некоторые компоненты недоступны. Операции горизонтального масштабирования с вычислительными ресурсами были затронуты при неправильной настройке Azure Key Vault. Кроме того, существуют не какие-либо стратегии для региональных сбоев. В недавнем инциденте весь регион Западной Европы снизился. Так как рабочая нагрузка выполнялась только в этом регионе, компания должна была нести финансовые потери до тех пор, пока регион не будет резервной копии.
Текущая архитектура
Для выполнения этой задачи необходимо иметь хорошее представление об текущей архитектуре Contoso Shoes. Давайте сосредоточимся на уровне API.
Компоненты
Все компоненты этой архитектуры развертываются в одном регионе.
план службы приложение Azure Номер SKU уровня "Стандартный" предоставляет вычислительные платформы, в котором размещается приложение. Автомасштабирование включено. В среде разработки используется номер SKU "Базовый" 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 Insights используется для записи данных телеметрии и журналов из API. Application Insights использует автономный режим, а не запись в выделенную рабочую область log analytics. Рабочие и разработки и тесты не используют общий экземпляр.
Azure Pipelines используется для CI/CD, который создает, тестирует и развертывает рабочую нагрузку в предварительной и рабочей средах. Команда рабочей нагрузки управляет конвейерами, которые также управляют всей инфраструктурой в решении. Bicep — это выбор технологии для инфраструктуры как кода (IaC).
Проектные решения
В списке компонентов метка развертывания состоит из служб, участвующих в обработке запроса. Эти службы включают Служба приложений и код API и Cosmos DB. Метка также включает нефункциональные компоненты: Key Vault и Реестр контейнеров. Приложение имеет стороннюю зависимость от платформы производительности и устойчивости. Управляемые системой удостоверения используются между компонентами метки.
В метке Служба приложений настроено автоматическое масштабирование на основе нагрузки.
Отдельные среды используются для рабочей среды и разработки и тестирования. В рабочей среде используется SKU плана Служба приложений уровня "Стандартный". Компания сделала этот выбор, чтобы иметь возможность предварять приложение в слот, прежде чем развертывать его в рабочей среде. Среда разработки и тестирования использует номер SKU "Базовый" для оптимизации затрат. Обе среды имеют собственные экземпляры служб. Среды совместно используют только реестр контейнеров.
Код контейнерного API поставляется в одном образе контейнера, который выполняется в Служба приложений. API содержит несколько конечных точек HTTP, используемых различными интерфейсными интерфейсами для операций чтения и записи. Интерфейсы выходят за рамки этого модуля, но они находятся в области в большой картине для критического состояния этой ситуации. Код был инструментирован с помощью Application Insights для записи некоторых основных данных телеметрии. Команда, которая разработала этот код, также управляет конвейером CI/CD для образа контейнера API и конвейеров CI/CD.
Компромиссы
Однако, как и во всем, существуют компромиссы с текущей архитектурой. Бизнес-требования определяют оптимизацию затрат по сравнению с надежностью и операциями. Для поддержания в пределах ограничений затрат архитектура не развивалась. Компоненты не хватает при использовании возможностей надежности, которые предлагает платформа. Например, выбор номера SKU для вычислений предотвращает использование рабочей нагрузки Зоны доступности. Для телеметрии используется более ранняя версия Application Insights, которая не интегрирована с Log Analytics.
Кроме того, доступ к рабочей нагрузке слишком широко распространяется. Например, без интеграции виртуальной сети все службы Azure можно напрямую связаться через общедоступный Интернет.
Когда решение было разработано, команда разработчиков приложений использовала одну подписку Azure, совместно размещая разработку и тестирование и рабочую среду в той же подписке, чтобы упростить инструментирование для команд DevOps. Однако производственные ресурсы и ресурсы разработки и тестирования не полностью изолированы. Некоторые ресурсы совместно используются между двумя средами, хотя они получили изолированную подписку от остальных решений Contoso Shoes.
Кроме того, среда разработки и тестирования — это отдельная среда, которая предоставляется всем членам команды разработки и качества обслуживания. Выбор был оправдан, учитывая размер команд и координации между ними, не нуждался в более высокой степени изоляции. По мере развития команды и решения единая среда разработки и тестирования все чаще вызвала сложность интеграции, так как жизненные циклы рабочих потоков столкнулись. Отток и его влияние на надежность были дорогостоящими.
Спецификация проекта
Компания хочет добавить возможности в архитектуру решения, чтобы она могла справиться с ожидаемым увеличением нагрузки. Ниже приведены бизнес-требования:
- Создайте возможность противостоять региональным сбоям, расширяя архитектуру до нескольких регионов.
- Улучшение взаимодействия с клиентами путем ускорения обслуживания клиентов в регионе географически ближе к ним
- Согласование с схемой развития Azure и использование новейших функций надежности служб Azure
- Перехват проблем рано и обнаружение их каскадного влияния в системе путем создания общей модели работоспособности
Эти требования являются только приоритетным списком планов по улучшению. Группа приложений понимает, что все области разработки должны рассматриваться для обеспечения надежности этого решения до критически важных стандартов. Будьте уверены, что они не перестают улучшать свое решение и операции после того, как вы помогли им с аспектами, описанными в предстоящих упражнениях.
Добро пожаловать в команду! Компания Contoso Shoes с нетерпением ожидает слушания ваших рекомендаций.
Настройка
В этом проекте задачи вы будете принимать на себя роль архитектора, который поможет Contoso Shoes достичь своих результатов надежности, начиная с приоритетных элементов в предыдущем разделе.
- Мы рекомендуем использовать средство схемы архитектуры для визуализации архитектуры.
- Вам не нужна подписка Azure для этой проблемы, если вы комфортно с службами и их функциями.