Попробуйте Compass бесплатно
Повышайте удовлетворенность разработчиков, каталогизируйте все сервисы и улучшайте работоспособность программного обеспечения.
Статьи
Обучающие материалы
Интерактивные руководства
Как Atlassian обеспечивает готовность к эксплуатации
Изучите рекомендации по обеспечению готовности к эксплуатации, чтобы повысить надежность, безопасность и степень соответствия требованиям
.png?cdnVersion=2644)
Уоррен Марусяк
Старший технический эксперт
Даже в современных проектных структурах, таких как DevOps, во многих проектах отсутствует важнейшая процедура планирования — автоматизированный процесс оценки готовности. Без проверки готовности к эксплуатации команды разработчиков ПО не знают, готова ли среда к новой системе или продукту. Однако оценка готовности к эксплуатации — это не те действия, которые выполняются непосредственно перед развертыванием. Эту процедуру нужно внедрить как можно раньше — вместе с разработкой проектных требований и спецификаций.
Что такое готовность к эксплуатации?

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

Связанные материалы
Что такое DevOps

Связанные материалы
Как практиковать DevOps
Ниже описан процесс оценки готовности к эксплуатации, используемый в Atlassian. С его помощью команды могут наладить собственный процесс, однако каждой организации придется адаптировать процедуры под собственные задачи и среду.
Определение уровней служб
Уровни служб позволяют группировать службы с помощью понятных категорий. Каждый уровень служб определяет SLA и набор требований по части готовности к эксплуатации. В основе SLA и требований по части готовности к эксплуатации лежат сценарии использования, характерные для служб на этом уровне. Уровни служб можно рассматривать как категории важности. Все службы в определенной категории одинаково важны, поэтому их следует обрабатывать аналогичным образом. К категории критически важных служб, ориентированных на клиентов, скорее всего, предъявляются более строгие требования, чем к категории третичных служб, влияющих только на сотрудников.
Вот примеры уровней служб, основанных на уровнях, использующихся в Atlassian.
- Уровень 0: критические компоненты, на которые опирается все остальное.
- Уровень 1: продукты и службы, ориентированные на клиентов.
- Уровень 2: бизнес-системы.
- Уровень 3: внутренние инструменты.
Уровень 0: критическая магистральная инфраструктура
Служба уровня 0 предоставляет вспомогательную инфраструктуру и общие служебные компоненты, на которые опираются службы уровня 1. Компоненты считаются критически важными, если выполняется одно из следующих условий.
- Они необходимы для запуска службы уровня 1 или предоставления пользователям доступа к ней.
- Они необходимы для оформления подписки на службу уровня 1 со стороны клиента.
- Они необходимы сотрудникам для поддержки или выполнения ключевых операционных функций в службе уровня 1, таких как:
- запуск/останов/перезапуск службы;
- развертывание, обновление, откат или исправление;
- определение текущего состояния (работает / не работает / снижена производительность).
Уровень 1: основные службы
Служба уровня 1 предоставляет критически важную функцию для бизнеса, клиентов или продукта. К этому уровню относятся службы, ориентированные на клиентов, или критически важные для бизнеса внутренние службы. В случае снижения производительности или недоступности службы компания терпит убытки либо не может выполнять важнейшие бизнес-функции и/или клиент теряет доступ к основному функционалу. Службы уровня 1 требуют круглосуточной поддержки, высоких SLA по ключевым показателям и строгого набора требований к запуску.
Уровень 2: неосновные службы
Служба уровня 2 предоставляет ориентированные на клиентов сервисы, которые не входят в состав основного функционала. Службы уровня 2 обеспечивают дополнительную ценность или пользовательские возможности, которые считаются желательными, но не обязательными.
A tier-2 service includes public services that function mainly in a marketing capacity, such as public company websites. They don’t offer customers direct business-grade services and internal services used by teams to perform aspects of their roles, such as collaboration tools, work tracking, and more.
Службы уровня 2 могут не требовать круглосуточной службы поддержки, а также могут иметь более низкие SLA и меньше требований к запуску.
Уровень 3: только внутренние или некритические функции
Служба уровня 3 предоставляет компании внутренний функционал или экспериментальные бета-службы. Сюда также могут входить службы, которые в настоящий момент являются экспериментальными и доступны небольшой группе пользователей по причине того, что во время бета-тестирования возможно ухудшение качества службы. Эта категория включает низкие SLA для служб, поддержка которых производится только при наличии соответствующей возможности.
Определение SLA для уровней служб

Соглашения об уровне обслуживания (SLA) определяют целевые показатели доступности и надежности, а также время реагирования в случае перебоя в работе службы. Каждый уровень служб имеет свое соглашение об уровне обслуживания. В следующей таблице приведен пример соглашения об уровне обслуживания для каждого из четырех уровней служб, описанных в этой статье.
SLA по уровням служб | Уровень 0 | Уровень 1 | Уровень 2 | Уровень 3 |
---|---|---|---|---|
Название показателя | Уровень 0 Уровень служб | |||
Уровень 0 Уровень 0 | Уровень 1 Уровень 1 | Уровень 2 Уровень 2 | Уровень 3 Уровень 3 | |
Доступность | Уровень 0 99,99 | Уровень 1 99,95 | Уровень 2 99,90 | Уровень 3 99,00 |
Надежность | Уровень 0 99,99 | Уровень 1 99,95 | Уровень 2 99,90 | Уровень 3 99,00 |
Потеря данных (RPO) | Уровень 0 < 1 часа | Уровень 1 < 1 часа | Уровень 2 < 8 часов | Уровень 3 < 24 часов |
Восстановление работы службы (RTO) | Уровень 0 < 4 часов | Уровень 1 < 6 часов | Уровень 2 < 24 часов | Уровень 3 < 72 часов |
Доступность | | | |
---|---|---|---|
Уровень 0 | Уровень 1 | Уровень 2 | Уровень 3 |
До 1 минуты простоя в неделю. До 4 минут простоя в месяц. | До 5 минут простоя в неделю. До 20 минут простоя в месяц. | До 10 минут простоя в неделю. До 40 минут простоя в месяц. | До 1 часа 40 минут простоя в неделю. До 6 часов 40 минут простоя в месяц. |
Надежность | | | |
---|---|---|---|
Уровень 0 | Уровень 1 | Уровень 2 | Уровень 3 |
1 сбой на 10 000 запросов | 1 сбой на 2000 запросов | 1 сбой на 1000 запросов | 1 сбой на 100 запросов |
Потеря данных (RPO)
Это число представляет собой максимальный объем данных, который будет потерян службой в случае сбоя. В случае со службой уровня 0 будут потеряны данные менее чем за час работы.
Восстановление работы службы (RTO)
Это число представляет собой максимальное время, в течение которого служба должна восстановиться и возобновить работу. Работа службы уровня 0 будет полностью восстановлена менее чем за 4 часа.
Определение проверок готовности к эксплуатации
Проверка готовности к эксплуатации — это тест конкретного аспекта качества службы с результатами «пройдено» и «не пройдено». Он связан не с функциональностью службы, а с ее доступностью, надежностью и отказоустойчивостью. Команды должны создать набор проверок, которые будут использоваться для определения готовности к эксплуатации. Эти проверки не универсальны. Некоторые из них будут актуальны только для определенных уровней служб. К службе уровня 0 предъявляются более строгие требования, чем к службе уровня 3. В следующем разделе приведены примеры проверок готовности к эксплуатации, которые можно использовать в качестве отправной точки.

Резервное копирование
В случае прерывания работы службы командам, возможно, придется использовать резервные копии для восстановления данных на определенный момент времени. Важно регулярно выполнять резервное копирование данных, а также внедрить процесс восстановления и систематически тестировать обе процедуры. Процесс резервного копирования и восстановления должен быть надежен и эффективен. Документация и тестирование имеют для него первостепенную важность.
Критерии готовности работы
- Внедрение процесса резервного копирования и восстановления.
- Документирование и тестирование процесса резервного копирования и восстановления.
- Систематическое тестирование процесса резервного копирования и восстановления.
Управление ресурсами
Четко опишите, какие возможности служба предоставляет потребителям. В частности, выявите все ограничения, налагаемые службой на потребителей. Внедрите тестирование производительности, чтобы обеспечить надлежащую работу службы в заданных пределах.
Вот несколько примеров информации, которую необходимо протестировать и предоставить потребителям.
- Служба может обрабатывать до X требований в секунду.
- Служба гарантирует время отклика, равное X.
- Функция X службы реплицируется или не реплицируется в различных регионах.
- Потребитель не должен делать X, например:
- перегружать службу;
- загружать файлы размером более X.
Критерии готовности работы
- Ограничения службы определены и задокументированы.
- Внедрены тесты производительности для проверки соблюдения ограничений.
Информированность клиентов
Обеспеченность поддержкой — это важный аспект качества службы наряду с надежностью и удобством использования. Командам следует разработать процессы поддержки службы или ее новой функции перед запуском самой службы. Обеспеченность поддержкой может включать процесс поддержки клиентов, процесс контроля изменений, перечни процедур и другие элементы, связанные с этим аспектом.
Процесс поддержки клиентов
В случае обращения клиентов в службу поддержки разработчики должны разобраться в ситуации и знать свои обязанности в этом процессе предоставления поддержки. Сюда могут входить ротация дежурных или решение производственных проблем по мере их возникновения.
Процесс управления изменениями
Не все изменения одинаково затрагивают клиентов. Так, исправления небольших багов проходят незаметно, в то время как другие изменения требуют от клиентов значительных усилий на внедрение, например полного переписывания API. Контроль изменений помогает оценить степень влияния изменений на клиентов.
Перечни процедур поддержки
Перечни процедур дают общее представление о работе службы; кроме того, в них подробно описаны возможные проблемы и способы их решения. Важно регулярно обновлять перечни процедур и проверять правильность задокументированных процедур поддержки, поскольку с течением времени служба меняется.
Критерии готовности работы
- Документация, отвечающая на большинство вопросов из тех, которые могут возникнуть у команды службы поддержки при расследовании проблемы.
- Работающий процесс управления изменениями.
Аварийное восстановление
Одна из составляющих аварии — это потеря зоны доступности. Службы должны быть достаточно устойчивыми для нормальной работы в случае сбоя зоны доступности. Аварийное восстановление состоит из двух компонентов: первый — это разработка и документирование процесса аварийного восстановления, а второй — постоянное тестирование задокументированного процесса. Аварийное восстановление необходимо регулярно тестировать. Проверьте, можно ли решить проблему отказа зоны доступности, используя задокументированный план аварийного восстановления.
Критерии готовности работы
- План аварийного восстановления задокументирован.
- План аварийного восстановления протестирован.
- В график внесены регулярные проверки плана аварийного восстановления.
Ведение журналов
Журналы полезны по многим причинам. Например, они помогают при обнаружении аномалий, проведении расследования во время или после отказа службы, а также при отслеживании вредоносных действий путем соотнесения связанных событий между службами с помощью уникальных идентификаторов. Существует множество видов журналов. Вот пара крайне полезных, которые должны содержаться в большинстве служб:
- журналы доступа;
- ЖУРНАЛЫ ОШИБОК
Критерии готовности работы
- Созданы соответствующие журналы.
- Журналы хранятся в удобном и доступном для поиска месте.
Логические проверки доступа
Логические проверки доступа сфокусированы на методах управления доступом внутренних и внешних пользователей, а также доступом между службами и шифрованием данных. Каким образом служба предотвращает несанкционированный доступ к функциям и данным? Как определяются, проверяются, обновляются и устаревают разрешения пользователей? Обеспечивают ли эти средства достаточную защиту конфиденциальных данных?
Внутренние пользователи
Вот несколько важных вопросов, на которые необходимо ответить. Каким образом выполняется аутентификация внутренних пользователей? Как происходит предоставление доступа и как его отключают? Каков принцип эскалации прав? В чем заключается процесс регулярных проверок и аудита доступа?
Внешние пользователи
Каким образом выполняется аутентификация клиентов? Как происходит предоставление доступа и как его отключают? Каков принцип эскалации прав? В чем заключается процесс регулярных проверок и аудита доступа?
Отношения между службами
Это аналогично внутренним и внешним пользователям. Команды должны определить, каким образом службы будут проходить аутентификацию друг с другом. Одно из возможных решений — OAuth 2.0.
Шифрование
Скорее всего, команды захотят воспользоваться шифрованием данных при передаче и хранении. Поясните, как служба управляет шифрованием данных. Каким образом команда управляет ключами? В чем заключается политика ротации ключей?
Критерии готовности работы
- Логические проверки доступа задокументированы, внедрены и протестированы на внутренних и внешних пользователях, а также между службами.
- Данные шифруются при хранении.
- Данные шифруются при передаче.
- Шифрование реализовано и протестировано.
Релизы
Развертывание новой версии службы не должно нарушать трафик клиентов сверх показателей, определенных в SLA службы. Все изменения должны быть проверены коллегами, а также протестированы и внедрены через конвейеры CI/CD. После каждого развертывания проверяйте, успешно ли оно прошло и не привело ли к нарушению работоспособности. При этом желательно внедрить автоматическую проверку после развертывания. Для тестирования развертываний используйте несколько сред, например тестовую, промежуточную, предварительную и рабочую.
Критерии готовности работы
- Развертывание службы происходит без простоев.
- Имеются среды, где выполняется развертывание и тестирование службы перед ее запуском в рабочей среде.
Список задач безопасности
Список задач безопасности — это набор практик и стандартов по разработке и обслуживанию защищенной инфраструктуры и программного обеспечения. Эти стандарты снижают вероятность нарушений конфиденциальности и утечки данных, что, в свою очередь, повышает доверие клиентов. Команды должны разработать список задач безопасности с учетом характера создаваемых ими служб. Вот несколько примеров требований.
Критерии готовности работы
- Доказательства отсутствия в службе открытых критических уязвимостей или уязвимостей с высоким уровнем опасности.
- Использование шифрования при хранении для всех хранилищ данных.
- Доказательства того, что служба не поддерживает небезопасные HTTP-соединения.
Показатели службы
Показатели службы предоставляют важную диагностическую информацию и сведения о работоспособности службы, а также позволяют командам отслеживать инциденты и реагировать на них. Сначала определите набор показателей, отслеживаемых для каждой службы. Затем создайте дашбоард с этими показателями в инструменте типа Datadog или New Relic. Оповещайте коллег в случаях, когда значение показателя выходит за допустимые пределы, и создавайте заявки на устранение неполадок при нештатных ситуациях.
Критерии готовности работы
Вот несколько примеров показателей, которые нужно измерить.
- Задержка: время, необходимое для обработки запроса.
- Трафик: места службы, нагруженные внешними пользователями.
- Ошибки: количество ошибок или сбоев, влияющих на пользователей.
- Перегрузка: уровень загрузки службы и сколько еще элементов она может обработать.
- Использование основных ресурсов, например процессора, памяти и дискового пространства.
- Внутренние компоненты приложения, такие как очереди, время и поток.
- Использование и основной функционал службы: активные пользователи, количество действий в минуту.
Устойчивость службы
Требования к устойчивости службы определяют, может ли она выдерживать изменения нагрузки и/или отказы различных компонентов. Обычно отказоустойчивые службы поддерживают автоматическое масштабирование и демонстрируют устойчивость к сбоям в работе одного узла.
Автоматическое масштабирование
Если служба имеет возможность автоматического масштабирования, убедитесь, что эта функция правильно настроена и протестирована. Определите, какой показатель будет инициировать автоматическое масштабирование, и протестируйте его, чтобы убедиться, что все работает должным образом. Например, если служба требует хранения данных на диске, она может отслеживать процент свободного пространства и автоматически добавлять место, когда показатель опустится ниже порогового значения.
Тестирование отказов одного узла
Желательно иметь службы, способные выдержать сбои в работе отдельных узлов. Служба должна продолжать функционировать (пусть и с меньшей производительностью), если один узел выйдет из строя. Чтобы это проверить, отключите хотя бы один узел службы и понаблюдайте за поведением системы. Ожидается, что ваша служба справится с такой ситуацией. С вашей стороны необходим контроль среды, в которой будет смоделирован сбой одного узла.
Критерии готовности работы
- Доказательства внедрения и тестирования автоматического масштабирования.
- Доказательства того, что в рабочей и/или промежуточной средах работает несколько узлов.
- Доказательства устойчивости службы к сбоям в работе одного узла.
Поддержка
Поддержка — это процесс сопровождения службы после релиза. Команды должны иметь в своем распоряжении перечни процедур, операционные инструменты и графики дежурств до непосредственного запуска, чтобы участники могли исправлять возможные проблемы в работе службы.
Перечни процедур
Благодаря перечням процедур дежурные сотрудники получают контекст и инструкции, необходимые для быстрого реагирования на инциденты и их устранения.
Операционные инструменты
Работа службы на должном уровне означает, что составлен график дежурств и что операционный инструмент, такой как Opsgenie, настроен на генерацию оповещений для дежурных в случае возникновения проблем в работе службы.
На дежурстве
Для службы уровней 2 и 3 требуется график дежурств.
Для службы уровней 1 и 0 требуется круглосуточный график дежурств.
Критерии готовности работы
- Перечни процедур написаны и доступны в службе поддержки.
- Операционный инструмент настроен и протестирован.
- Составлен график дежурств, а также настроены оповещения на случай возникновения проблем.
Определение проверок готовности к эксплуатации для уровней служб
После того как команда определила набор требований по части готовности к эксплуатации, необходимо понять, какие из этих требований подходят каждому из уровней служб. Одни требования могут быть применимы для всех уровней, а другие — только для служб уровня 0. Начните с самого низкого уровня служб и постепенно добавляйте требования по мере перехода к более высоким. К службам уровня 3 могут предъявляться лишь несколько базовых требований, тогда как для служб уровня 0 будут актуальны все требования по части готовности к эксплуатации.
Рекомендуемые проверки готовности к эксплуатации для уровня 3
- Резервное копирование
- Ведение журналов
- Релизы
- Список задач безопасности
- Показатели службы
- Поддержка
К службам уровня 3 предъявляются самые базовые требования по части готовности к эксплуатации.
Рекомендуемые проверки готовности к эксплуатации для уровней 2 и 1
- Резервное копирование
- Аварийное восстановление
- Ведение журналов
- Релизы
- Список задач безопасности
- Показатели службы
- Устойчивость службы
- Поддержка
К службам уровней 2 и 1 добавляются требования относительно аварийного восстановления и устойчивости. Важно отметить, что службы уровней 2 и 1 могут иметь разные требования по части готовности к эксплуатации (хотя это и не обязательно). Если для определенного уровня служб необходимо другое требование по части готовности к эксплуатации, добавьте его. Уровни 1 и 2 могут отличаться в зависимости от потребностей команды.
Рекомендуемые проверки готовности к эксплуатации для уровня 0
- Резервное копирование
- Управление ресурсами
- Информированность клиентов
- Аварийное восстановление
- Ведение журналов
- Логические проверки доступа
- Релизы
- Список задач безопасности
- Показатели службы
- Устойчивость службы
- Поддержка
Службы уровня 0 включают управление ресурсами, информированность клиентов и логические проверки доступа.
Как использовать готовность к эксплуатации?
После определения уровней служб, соглашений об уровне обслуживания и требований по части готовности к эксплуатации каждой новой службе назначается определенный уровень, а команды следуют требованиям по части готовности к эксплуатации в процессе разработки. Это гарантирует соответствие всех служб того или иного уровня одному стандарту перед их запуском в рабочей среде.
Требования по части готовности к эксплуатации не являются статичными и могут регулярно обновляться по мере изменения требований команды. Существующие службы можно привести в соответствие с новыми требованиями с помощью рабочих задач либо оставить без изменений (если таковы потребности бизнеса).
Индикатор готовности к эксплуатации
При проверке требований по части готовности к эксплуатации не помешает воспользоваться автоматизацией. С помощью автоматической проверки можно легко создать для каждой службы список задач, в котором перечислены предъявляемые требования по части готовности. Требования автоматически отмечаются флажком при выполнении. Если какое-либо из них не пройдет проверку, индикатор готовности к эксплуатации загорится красным цветом, а если все требования окажутся выполнены — зеленым.
Поместите индикатор готовности к эксплуатации на главной целевой странице конкретной службы и в любом другом месте, где он будет полезен. Примером удачного размещения индикатора готовности к эксплуатации может служить карта оценки Compass. Индикатор на карте оценки Compass для конкретной службы позволяет легко просмотреть соответствующую информацию, а также служит основой для внедрения рекомендаций и выявления областей, нуждающихся в улучшении.
Заключение
Разработка процесса для обеспечения готовности к эксплуатации требует времени. Сначала команды определяют уровни служб и соглашения об уровне обслуживания. Затем они составляют набор требований по части готовности к эксплуатации и решают, какие требования применимы к каждому уровню. При наличии такой основы участники смогут добиваться соответствия каждой новой службы требованиям по части готовности к эксплуатации в рамках стандартного процесса разработки, а команды будут уверены, что служба готова к запуску в рабочей среде, как только индикатор готовности к эксплуатации загорится зеленым.
Дополнительные ссылки
Чтобы получить дополнительную информацию по темам, затронутым в этой статье, перейдите по следующим ссылкам.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Сообщество DevOps

Образовательные программы DevOps
