Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Методология проектирования критически важных для миссии лежит в основе пяти ключевых принципов проектирования, которые служат компасом для последующих решений по проектированию в критически важных областях проектирования. Мы настоятельно рекомендуем ознакомиться с этими принципами, чтобы лучше понять их влияние и компромиссы, связанные с несоблюдением.
Надежность
Принцип проектирования | Соображения |
---|---|
Активный или активный дизайн | Чтобы обеспечить максимальную доступность и обеспечить отказоустойчивость региона, компоненты решения должны распределяться между несколькими зонами доступности и регионами Azure с помощью модели активного и активного развертывания, где это возможно. |
Снижение радиуса воздействия и изоляция неисправностей | Сбой невозможно избежать в высокораспространимой облачной среде гипермасштабирования, такой как Azure. Предусматривая сбои и коррелированные последствия, от отдельных компонентов до целых регионов Azure, решение может быть спроектировано и разработано устойчивым образом. |
Наблюдение за работоспособностью приложения | Прежде чем устранить проблемы, влияющие на надежность приложения, сначала их необходимо обнаружить и понять. Благодаря мониторингу работы приложения относительно известного работоспособного состояния становится возможным обнаружить или даже прогнозировать проблемы надежности, что позволяет выполнять быстрые действия по исправлению. |
Автоматизация приводов | Одной из основных причин простоя приложения является человеческая ошибка, связанная с развертыванием недостаточно протестированного программного обеспечения или неправильной настройки. Чтобы свести к минимуму возможность и влияние человеческих ошибок, важно стремиться к автоматизации во всех аспектах облачного решения для повышения надежности; автоматическое тестирование, развертывание и управление. |
Проектирование самовосстановления | Самовосстановление описывает возможность системы справиться с сбоями автоматически с помощью предварительно определенных протоколов исправления, подключенных к режимам сбоя в решении. Это сложная концепция, требующая высокого уровня зрелости системы с мониторингом и автоматизацией, но должна быть целью с самого начала, чтобы максимально повысить надежность. |
Избегание сложности | Избегайте ненужной сложности при разработке решения и всех операционных процессов для повышения надежности и эффективности управления, минимизируя вероятность сбоев. |
Эффективность производительности
Принцип проектирования | Соображения |
---|---|
Проектирование для горизонтального масштабирования | Горизонтальное масштабирование — это концепция, которая фокусируется на способности системы реагировать на спрос посредством горизонтального роста. Это означает, что по мере роста трафика больше единиц ресурсов добавляются параллельно, а не увеличивают размер существующих ресурсов. Способность системы справляться с увеличениями трафика, как ожидаемыми, так и непредвиденными, посредством единиц масштабирования, существенно важна для общей производительности и надежности, дополнительно снижая последствия отказа одного элемента системы. |
Автоматизация для гипермасштабирования | Операции масштабирования во всем решении должны быть полностью автоматизированы, чтобы минимизировать влияние на производительность и доступность при непредвиденном или ожидаемом увеличении трафика. При этом время, необходимое для выполнения операций масштабирования, должно быть соответствующим и согласованным с моделью работоспособности приложений. |
Непрерывная проверка и тестирование | Автоматическое тестирование должно выполняться в процессах CI/CD, чтобы обеспечить непрерывную проверку для каждого изменения приложения. Для проверки существующих пороговых значений, целевых объектов и допущений необходимо включить нагрузочное тестирование на основе синхронизированного эксперимента хаоса, а также для быстрого определения рисков устойчивости и доступности. Такое тестирование следует проводить в промежуточных и тестовых средах, но также при необходимости в средах разработки. Кроме того, можно использовать подмножество тестов в рабочей среде, особенно в сочетании с синей и зеленой моделью развертывания, чтобы проверить новые метки развертывания перед получением рабочего трафика. |
Сокращение затрат с помощью управляемых служб вычислений | Использование управляемых вычислительных служб и контейнерных архитектур значительно сокращает текущие административные и операционные затраты на проектирование, эксплуатацию и масштабирование приложений путем переноса развертывания инфраструктуры и обслуживания в управляемый поставщик услуг. |
Создание базовых показателей производительности и определение узких мест | Тестирование производительности с подробными данными телеметрии из каждого компонента системы позволяет определить узкие места в системе, включая компоненты, которые необходимо масштабировать по отношению к другим компонентам, и эти сведения должны быть включены в модель емкости. |
Емкость модели | Модель емкости позволяет планировать уровни масштабирования ресурсов для заданного профиля нагрузки, а также предоставляет способ выполнения системных компонентов в отношении друг друга, что позволяет планировать распределение емкости на уровне системы. |
Операционное превосходство
Принцип проектирования | Соображения |
---|---|
Слабо связанные компоненты | Свободное подключение позволяет независимо и по запросу тестировать, развертывать и обновлять компоненты приложения при минимизации зависимостей между командами для поддержки, служб, ресурсов или утверждений. |
Автоматизация процессов сборки и выпуска | Полностью автоматизированные процессы сборки и выпуска снижают нагрузку и повышают скорость развертывания обновлений, что приводит к повторяемости и согласованности в средах. Автоматизация сокращает цикл обратной связи от разработчиков, внося изменения в получение аналитических сведений о качестве кода, охвате тестов, устойчивости, безопасности и производительности, что повышает производительность разработчиков. |
Гибкость разработчика | Автоматизация процессов непрерывной интеграции и непрерывного развертывания (CI/CD) позволяет использовать кратковременные среды разработки с жизненным циклом, связанным с соответствующей ветвью функций, что способствует гибкости разработчика и ускоряет проверку на самой ранней стадии инженерного цикла, чтобы минимизировать затраты на исправление ошибок. |
Квантифицировать работоспособности операций | Полное инструментирование диагностики всех компонентов и ресурсов обеспечивает постоянную наблюдаемость журналов, метрик и трассировок, а также упрощает моделирование работоспособности для оценки работоспособности приложений в контексте доступности и требований к производительности. |
Репетировать восстановление и отрабатывать случаи неудач | Планирование непрерывности бизнес-процессов (BC) и аварийное восстановление (DR), а также практические учения по ним являются важными и должны проводиться часто, поскольку полученные знания могут итеративно улучшать планы и процедуры для максимизации устойчивости в случае незапланированного простоя. |
Принятие непрерывного улучшения операционной деятельности | Приоритизация регулярного улучшения системы и опыта пользователя, используя модель работоспособности для понимания и оценки эффективности работы с использованием механизмов обратной связи, чтобы команды приложений могли понимать и устранять пробелы в итеративном режиме. |
Безопасность
Принцип проектирования | Соображения |
---|---|
Мониторить безопасность всего решения и планировать реагирование на инциденты | Сопоставляйте события безопасности и аудита для моделирования работоспособности приложений и выявления активных угроз. Создайте автоматизированные и ручные процедуры для реагирования на инциденты с помощью средств управления сведениями и событиями безопасности (SIEM) для отслеживания. |
Модель и проверка на наличие потенциальных угроз | Убедитесь в надлежащем усилении защиты ресурсов и разработке процедур для выявления и смягчения известных угроз, используя тестирование на проникновение для проверки мер смягчения, а также анализ статического кода и сканирование кода. |
Определение и защита конечных точек | Отслеживайте и защищайте сетевую целостность внутренних и внешних конечных точек с помощью функций и устройств безопасности, таких как брандмауэры или брандмауэры веб-приложений. Используйте стандартные отраслевые подходы для защиты от распространенных векторов атак, таких как распределенные атаки типа "ОтказOf-Service в отказе" (DDoS), например SlowLoris. |
Защита от уязвимостей уровня кода | Выявление и устранение уязвимостей на уровне кода, таких как межсайтовый скрипт или внедрение SQL, а также включение исправлений безопасности в операционный жизненный цикл для всех частей базы кода, включая зависимости. |
Автоматизация и использование минимальных привилегий | Обеспечение автоматизации, чтобы свести к минимуму потребность в взаимодействии с человеком и реализовать минимальные привилегии как в приложении, так и в плоскости управления для защиты от кражи данных и сценариев вредоносных субъектов. |
Классификация и шифрование данных | Классифицируйте данные в соответствии с риском и применять стандартное шифрование отрасли при хранении и передаче, обеспечивая безопасное хранение ключей и сертификатов и управление ими должным образом. |
Оптимизация затрат
Существуют очевидные компромиссы, связанные с затратами и введением повышенной надежности, которые следует тщательно рассмотреть в контексте требований к рабочей нагрузке.
Максимальное повышение надежности может повлиять на общую финансовую стоимость решения. Например, дублирование ресурсов и распределение ресурсов между регионами для обеспечения высокой доступности имеет четкие последствия для затрат. Чтобы избежать лишних затрат, не закладывайте излишнюю сложность и не перерасходуйте ресурсы свыше соответствующих бизнес-требований.
Кроме того, добавляется стоимость, связанная с инженерными инвестициями в основные понятия надежности, такие как использование инфраструктуры как код, автоматизация развертывания и автоматизация тестирования. Это связано с затратами времени и усилий, которые можно направить на другие задачи для предоставления новых функций и возможностей приложений.
Следующий шаг
Области проектирования связаны друг с другом, поэтому изменения в одной области могут повлиять на другие. Начните с наиболее важной области для вашего бизнеса, а затем изучите рекомендации и соображения, чтобы понять, как ваши решения создают компромиссы по всей архитектуре.