Обзор основных принципов обеспечения надежности

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

Сборка для обеспечения надежности включает в себя:

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

Чтобы оценить надежность рабочей нагрузки с помощью принципов Microsoft Azure Well-Architected Framework, ознакомьтесь со сведениями на этой странице.

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


При традиционной разработке приложений основное внимание уделялось увеличению среднего времени между сбоями. Все усилия были направлены на попытки предотвратить сбои в системе. Для облачных вычислений требуется другой подход. Это объясняется несколькими факторами:

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

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

  • Служба хранилища Azure, Azure SQL База данных и Azure Cosmos DB обеспечивают встроенную репликацию данных между зонами доступности и регионами.
  • Управляемые диски Azure автоматически размещаются в разных единицах масштабирования хранилища, чтобы ограничить влияние сбоев оборудования.
  • Виртуальные машины в группе доступности распределены между несколькими доменами сбоя. Домен сбоя — это группа виртуальных машин, совместно использующих общий источник питания и сетевой коммутатор. Распределив виртуальные машины между несколькими доменами сбоя, можно ограничить воздействие сбоев физического оборудования, сети или электропитания.
  • Зоны доступности — это физически разделенные расположения в пределах каждого региона Azure. Каждая зона состоит из одного или нескольких центров обработки данных, оснащенных независимыми системами электроснабжения и охлаждения, а также сетевыми инфраструктурами. С помощью зон доступности можно проектировать и эксплуатировать приложения и базы данных, которые автоматически переходят между зонами без прерывания, что гарантирует устойчивость в случае негативного влияния на одну зону. Дополнительные сведения см. в статье Регионы и Зоны доступности в Azure.

И все же вам необходимо обеспечить дополнительную устойчивость в приложении. Стратегии устойчивости можно применять на всех уровнях архитектуры. Некоторые методы устранения рисков имеют тактический характер, например позволяют повторить попытку удаленного вызова после временного сбоя сети. Другие же разработаны стратегически, как, например, отработка отказа всего приложения в дополнительный регион. Тактическое устранение рисков может играть очень важную роль. Вероятность того, что во всем регионе произойдет сбой, мала. Но временные проблемы, такие как перегрузка сети, происходят довольно часто, поэтому на этих проблемах следует сосредоточиться в первую очередь. Очень важно проводить надлежащий мониторинг и диагностику. Это позволит оперативно выявлять сбои и определять их первопричины.

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

Темы и рекомендации

Основные принципы обеспечения надежности охватывают следующие темы и рекомендации по созданию устойчивой рабочей нагрузки:

Тема надежности Описание
Принципы надежности Эти критические принципы используются как индикаторы для оценки надежности приложения, развернутого в Azure.
Проектирование для обеспечения надежности Изучите, как системы используют Зоны доступности, выполняют масштабирование, реагируют на сбои и реализуют другие стратегии, повышающие надежность при проектировании приложений.
Контрольный список для обеспечения устойчивости конкретных служб Azure Каждая технология имеет собственные режимы сбоев, которые необходимо учитывать при разработке и реализации приложения. Используйте этот контрольный список для проверки факторов устойчивости конкретных служб Azure.
Целевые и нефункциональные требования Целевые и нефункциональные требования, такие как целевые показатели доступности и цели восстановления, позволяют измерять время доступности и простои рабочих нагрузок. Наличие четко определенных целевых показателей имеет решающее значение для достижения цели и измерения прогресса.
Устойчивость и зависимости Встроенная возможность восстановления системы после сбоя должна быть частью архитектуры и этапов проектирования с самого начала, чтобы избежать риска сбоя. Зависимости необходимы для полноценной работы приложения.
Зоны доступности Зоны доступности можно использовать для распределения решения по нескольким зонам в пределах одного региона, что позволяет приложению продолжать работать при сбое одной зоны.
Доступность служб Доступность служб в разных регионах Azure зависит от типа региона. Общая политика Azure по развертыванию служб в любом регионе, в основном, определяется типом региона, категориями служб и потребностями клиентов.
Терминология для Зон доступности Чтобы лучше понять особенности регионов и Зон доступности в Azure, полезно изучить ключевые термины или понятия.
Рекомендации На этапе разработки архитектуры уделите основное внимание внедрению практик, которые обеспечат удовлетворение бизнес-требований, помогут определять точки сбоя и минимизировать степень их влияния.
Тестирование надежности Для проверки существующих пороговых значений, целевых показателей и допущений следует выполнять регулярное тестирование в рамках каждого крупного изменения.
Мониторинг для обеспечения надежности Получите общее представление о работоспособности приложения. Если происходит какой-либо сбой, вам нужно об этом знать, знать время сбоя и понять его причину.
Шаблоны для обеспечения надежности Приложения должны быть спроектированы и реализованы для обеспечения максимальной доступности.

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