Поделиться через


Принципы проектирования критически важной рабочей нагрузки

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

Схема, показывающая пять критически важных принципов проектирования: надежность, эффективность производительности, эффективность работы, безопасность и оптимизация затрат, организованная в циклической схеме с взаимосвязанными связями.

Надежность

Принцип проектирования Соображения
Активный или активный дизайн Чтобы обеспечить максимальную доступность и обеспечить отказоустойчивость региона, компоненты решения должны распределяться между несколькими зонами доступности и регионами Azure с помощью модели активного и активного развертывания, где это возможно.
Снижение радиуса воздействия и изоляция неисправностей Сбой невозможно избежать в высокораспространимой облачной среде гипермасштабирования, такой как Azure. Предусматривая сбои и коррелированные последствия, от отдельных компонентов до целых регионов Azure, решение может быть спроектировано и разработано устойчивым образом.
Наблюдение за работоспособностью приложения Прежде чем устранить проблемы, влияющие на надежность приложения, сначала их необходимо обнаружить и понять. Благодаря мониторингу работы приложения относительно известного работоспособного состояния становится возможным обнаружить или даже прогнозировать проблемы надежности, что позволяет выполнять быстрые действия по исправлению.
Автоматизация приводов Одной из основных причин простоя приложения является человеческая ошибка, связанная с развертыванием недостаточно протестированного программного обеспечения или неправильной настройки. Чтобы свести к минимуму возможность и влияние человеческих ошибок, важно стремиться к автоматизации во всех аспектах облачного решения для повышения надежности; автоматическое тестирование, развертывание и управление.
Проектирование самовосстановления Самовосстановление описывает возможность системы справиться с сбоями автоматически с помощью предварительно определенных протоколов исправления, подключенных к режимам сбоя в решении. Это сложная концепция, требующая высокого уровня зрелости системы с мониторингом и автоматизацией, но должна быть целью с самого начала, чтобы максимально повысить надежность.
Избегание сложности Избегайте ненужной сложности при разработке решения и всех операционных процессов для повышения надежности и эффективности управления, минимизируя вероятность сбоев.

Эффективность производительности

Принцип проектирования Соображения
Проектирование для горизонтального масштабирования Горизонтальное масштабирование — это концепция, которая фокусируется на способности системы реагировать на спрос посредством горизонтального роста. Это означает, что по мере роста трафика больше единиц ресурсов добавляются параллельно, а не увеличивают размер существующих ресурсов. Способность системы справляться с увеличениями трафика, как ожидаемыми, так и непредвиденными, посредством единиц масштабирования, существенно важна для общей производительности и надежности, дополнительно снижая последствия отказа одного элемента системы.
Автоматизация для гипермасштабирования Операции масштабирования во всем решении должны быть полностью автоматизированы, чтобы минимизировать влияние на производительность и доступность при непредвиденном или ожидаемом увеличении трафика. При этом время, необходимое для выполнения операций масштабирования, должно быть соответствующим и согласованным с моделью работоспособности приложений.
Непрерывная проверка и тестирование Автоматическое тестирование должно выполняться в процессах CI/CD, чтобы обеспечить непрерывную проверку для каждого изменения приложения. Для проверки существующих пороговых значений, целевых объектов и допущений необходимо включить нагрузочное тестирование на основе синхронизированного эксперимента хаоса, а также для быстрого определения рисков устойчивости и доступности. Такое тестирование следует проводить в промежуточных и тестовых средах, но также при необходимости в средах разработки. Кроме того, можно использовать подмножество тестов в рабочей среде, особенно в сочетании с синей и зеленой моделью развертывания, чтобы проверить новые метки развертывания перед получением рабочего трафика.
Сокращение затрат с помощью управляемых служб вычислений Использование управляемых вычислительных служб и контейнерных архитектур значительно сокращает текущие административные и операционные затраты на проектирование, эксплуатацию и масштабирование приложений путем переноса развертывания инфраструктуры и обслуживания в управляемый поставщик услуг.
Создание базовых показателей производительности и определение узких мест Тестирование производительности с подробными данными телеметрии из каждого компонента системы позволяет определить узкие места в системе, включая компоненты, которые необходимо масштабировать по отношению к другим компонентам, и эти сведения должны быть включены в модель емкости.
Емкость модели Модель емкости позволяет планировать уровни масштабирования ресурсов для заданного профиля нагрузки, а также предоставляет способ выполнения системных компонентов в отношении друг друга, что позволяет планировать распределение емкости на уровне системы.

Операционное превосходство

Принцип проектирования Соображения
Слабо связанные компоненты Свободное подключение позволяет независимо и по запросу тестировать, развертывать и обновлять компоненты приложения при минимизации зависимостей между командами для поддержки, служб, ресурсов или утверждений.
Автоматизация процессов сборки и выпуска Полностью автоматизированные процессы сборки и выпуска снижают нагрузку и повышают скорость развертывания обновлений, что приводит к повторяемости и согласованности в средах. Автоматизация сокращает цикл обратной связи от разработчиков, внося изменения в получение аналитических сведений о качестве кода, охвате тестов, устойчивости, безопасности и производительности, что повышает производительность разработчиков.
Гибкость разработчика Автоматизация процессов непрерывной интеграции и непрерывного развертывания (CI/CD) позволяет использовать кратковременные среды разработки с жизненным циклом, связанным с соответствующей ветвью функций, что способствует гибкости разработчика и ускоряет проверку на самой ранней стадии инженерного цикла, чтобы минимизировать затраты на исправление ошибок.
Квантифицировать работоспособности операций Полное инструментирование диагностики всех компонентов и ресурсов обеспечивает постоянную наблюдаемость журналов, метрик и трассировок, а также упрощает моделирование работоспособности для оценки работоспособности приложений в контексте доступности и требований к производительности.
Репетировать восстановление и отрабатывать случаи неудач Планирование непрерывности бизнес-процессов (BC) и аварийное восстановление (DR), а также практические учения по ним являются важными и должны проводиться часто, поскольку полученные знания могут итеративно улучшать планы и процедуры для максимизации устойчивости в случае незапланированного простоя.
Принятие непрерывного улучшения операционной деятельности Приоритизация регулярного улучшения системы и опыта пользователя, используя модель работоспособности для понимания и оценки эффективности работы с использованием механизмов обратной связи, чтобы команды приложений могли понимать и устранять пробелы в итеративном режиме.

Безопасность

Принцип проектирования Соображения
Мониторить безопасность всего решения и планировать реагирование на инциденты Сопоставляйте события безопасности и аудита для моделирования работоспособности приложений и выявления активных угроз. Создайте автоматизированные и ручные процедуры для реагирования на инциденты с помощью средств управления сведениями и событиями безопасности (SIEM) для отслеживания.
Модель и проверка на наличие потенциальных угроз Убедитесь в надлежащем усилении защиты ресурсов и разработке процедур для выявления и смягчения известных угроз, используя тестирование на проникновение для проверки мер смягчения, а также анализ статического кода и сканирование кода.
Определение и защита конечных точек Отслеживайте и защищайте сетевую целостность внутренних и внешних конечных точек с помощью функций и устройств безопасности, таких как брандмауэры или брандмауэры веб-приложений. Используйте стандартные отраслевые подходы для защиты от распространенных векторов атак, таких как распределенные атаки типа "ОтказOf-Service в отказе" (DDoS), например SlowLoris.
Защита от уязвимостей уровня кода Выявление и устранение уязвимостей на уровне кода, таких как межсайтовый скрипт или внедрение SQL, а также включение исправлений безопасности в операционный жизненный цикл для всех частей базы кода, включая зависимости.
Автоматизация и использование минимальных привилегий Обеспечение автоматизации, чтобы свести к минимуму потребность в взаимодействии с человеком и реализовать минимальные привилегии как в приложении, так и в плоскости управления для защиты от кражи данных и сценариев вредоносных субъектов.
Классификация и шифрование данных Классифицируйте данные в соответствии с риском и применять стандартное шифрование отрасли при хранении и передаче, обеспечивая безопасное хранение ключей и сертификатов и управление ими должным образом.

Оптимизация затрат

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

Максимальное повышение надежности может повлиять на общую финансовую стоимость решения. Например, дублирование ресурсов и распределение ресурсов между регионами для обеспечения высокой доступности имеет четкие последствия для затрат. Чтобы избежать лишних затрат, не закладывайте излишнюю сложность и не перерасходуйте ресурсы свыше соответствующих бизнес-требований.

Кроме того, добавляется стоимость, связанная с инженерными инвестициями в основные понятия надежности, такие как использование инфраструктуры как код, автоматизация развертывания и автоматизация тестирования. Это связано с затратами времени и усилий, которые можно направить на другие задачи для предоставления новых функций и возможностей приложений.

Следующий шаг

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