12.2

Смотреть на английском

12.2 Контрольные списки

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

Указания, как пользоваться ими хорошо:

  • Держите контрольные списки достаточно короткими, чтобы люди действительно их выполняли. Если контрольный список рутинно пропускают, он слишком длинный или слишком общий.
  • Автоматизируйте любой пункт, который может проверить машина (форматирование, тесты, сканирования), чтобы люди тратили внимание на пункты суждения.
  • Версионируйте ваши контрольные списки и периодически рецензируйте их. Контрольный список, который никогда не меняется, вероятно, не используется.
  • Различайте блокирующие и совещательные пункты, когда это различие важно для вашего процесса.

Контрольный список рецензии кода

Для рецензента, рассматривающего чужое изменение.

  • Изменение делает то, что говорят его описание и связанная заявка.
  • Объём сфокусирован на одной логической заботе; несвязанные изменения вынесены отдельно.
  • Проект вписывается в существующую архитектуру и не вводит зацепление, которого легко избежать.
  • Крайние случаи, пути ошибок и режимы отказа обработаны, а не только благополучный путь.
  • Тесты существуют, осмысленны и упали бы, если бы поведение регрессировало.
  • Имена, структура и комментарии делают код понятным будущему читателю.
  • Никакие секреты, учётные данные, токены или персональные данные не закоммичены.
  • Чувствительный к безопасности ввод валидируется, кодируется или параметризуется надлежащим образом.
  • Публичные интерфейсы, контракты и обратная совместимость сохранены или намеренно версионированы.
  • Журналирования, метрик и отчётов об ошибках достаточно, чтобы эксплуатировать изменение в производстве.
  • Документация, руководства по эксплуатации и конфигурация обновлены в соответствии с изменением.
  • Обратная связь разделена на блокирующие проблемы и предложения и сформулирована о коде.

Контрольный список автора запроса на слияние

Для автора перед запросом рецензии.

  • Запрос на слияние достаточно мал и сфокусирован, чтобы тщательно рассмотреть его за один присест.
  • Описание сообщает, что изменилось, почему и как это проверено.
  • Связанная заявка, задача или проектный документ даёт рецензентам необходимый контекст.
  • Все автоматизированные проверки проходят локально или в CI (сборка, линтер, формат, тесты, сканирования).
  • Новое и изменённое поведение покрыто тестами.
  • Механические рефакторинги отделены от изменений поведения.
  • Саморецензия завершена: вы прочли свой diff построчно.
  • Не осталось отладочного кода, закомментированных блоков, секретов или случайных файлов.
  • Миграции базы данных, флаги функций и изменения конфигурации документированы и обратимы.
  • Ломающие изменения явно выделены с путём миграции.
  • Снимки экрана, записи или образцы вывода включены там, где помогают рецензии.
  • Запрошены нужные рецензенты и любые требуемые ролевые утверждающие.

Определение готовности

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

  • Все критерии приёмки в заявке выполнены и демонстрируемы.
  • Код рецензирован коллегами и одобрен требуемыми рецензентами.
  • Автоматизированные тесты написаны, проходят и слиты вместе с изменением.
  • Код слит в основную линию и чисто разворачивается через конвейер.
  • Не остаётся открытых известных дефектов согласованного порога серьёзности.
  • Документация, справочные тексты и руководства по эксплуатации обновлены.
  • Наблюдаемость на месте: существуют релевантные журналы, метрики и оповещения.
  • Последствия для безопасности и приватности рассмотрены и учтены.
  • Требования доступности для изменения выполнены там, где оно обращено к пользователю.
  • Флаги функций настроены, а план выкатки согласован.
  • Владелец продукта или заинтересованная сторона приняли результат.
  • Любая последующая работа зафиксирована как отслеживаемые заявки, а не оставлена неявной.

Готовность к запуску в производство

Перед отгрузкой значимого изменения или нового сервиса в производство.

  • План выкатки документирован, включая поэтапные или канареечные шаги и критерии успеха.
  • План отката документирован, протестирован и может быть быстро исполнен.
  • Тестирование мощности и нагрузки показывает, что система соответствует ожидаемому и пиковому спросу.
  • Мониторинг, панели и оповещения работают и проверены до запуска.
  • Дежурное покрытие запланировано, а реагирующие знают систему.
  • Руководства по эксплуатации существуют для наиболее вероятных сбоев и операционных сценариев.
  • Зависимости, интеграции и третьи стороны подтверждены как готовые, а ограничения частоты понятны.
  • Рецензия безопасности и требуемые подписи завершены.
  • Миграция данных, если есть, протестирована от начала до конца с проверенным откатом.
  • Флаги функций позволяют отключить изменение без повторного развёртывания.
  • Юридические одобрения, одобрения по приватности и соответствию получены там, где требуется.
  • План коммуникации охватывает заинтересованные стороны, поддержку и клиентов.
  • Решение «идти/не идти» принято названными владельцами по явным критериям.

Контрольный список рецензии безопасности / модели угроз

Для оценки состояния безопасности изменения или системы.

  • Границы доверия и потоки данных выявлены и документированы.
  • Аутентификация принуждается на каждой точке входа, которая её требует.
  • Проверки авторизации принуждают наименьшие привилегии для каждого действия и ресурса.
  • Весь внешний ввод валидируется, а вывод кодируется для своего приёмника.
  • Секреты хранятся в управляемом хранилище, никогда в коде или конфигурации, и ротируемы.
  • Данные шифруются при передаче и в покое, как требует классификация.
  • Зависимости сканируются на известные уязвимости и поддерживаются актуальными.
  • Риски инъекций, десериализации и SSRF смягчены для недоверенного ввода.
  • События, значимые для безопасности, журналируются без записи чувствительных данных.
  • Ограничение частоты, квоты и защита от злоупотреблений охраняют открытые конечные точки.
  • Сообщения об ошибках не раскрывают трассы стека, внутренности или чувствительные детали.
  • Угрозы, выявленные через STRIDE или подобное, записаны со смягчениями или принятым риском.
  • Тестирование безопасности (SAST, DAST или тестирование на проникновение) запланировано или завершено.

Контрольный список приватности и защиты данных (в стиле DPIA)

Для обработки, включающей персональные или чувствительные данные.

  • Собираемые персональные данные инвентаризированы, классифицированы и минимизированы до необходимого.
  • Правовое основание или полномочие для каждой цели обработки документировано.
  • Ограничение цели принуждается: данные используются только для заявленных целей.
  • Сроки хранения определены, а удаление или анонимизация автоматизированы.
  • Права субъектов данных (доступ, исправление, удаление, переносимость) могут быть исполнены.
  • Согласие, где на него полагаются, свободно дано, конкретно и отзываемо.
  • Третьи стороны и обработчики связаны надлежащими условиями защиты данных.
  • Трансграничные передачи имеют надлежащий правовой механизм передачи.
  • Доступ к персональным данным ограничен, журналируется и рецензируется.
  • Риски приватности для физических лиц оценены и смягчены или эскалированы.
  • Процессы обнаружения утечек данных и уведомления определены.
  • Выбор приватности по замыслу и по умолчанию документирован для функции.
  • Ответственный за защиту данных или рецензент приватности подписал там, где требуется.

Контрольный список доступности (WCAG)

Для пользовательских интерфейсов, согласованный с принципами WCAG.

  • Весь контент достижим и управляем только с клавиатуры.
  • Порядок фокуса логичен, а видимый индикатор фокуса присутствует.
  • Контраст цвета текста соответствует целевому соотношению (обычно 4,5:1 для основного текста).
  • У изображений и нетекстового содержимого есть осмысленный альтернативный текст.
  • У полей форм есть связанные подписи и ясные сообщения об ошибках.
  • Заголовки, ориентиры и структура размечены семантически.
  • Интерактивные компоненты предоставляют вспомогательным технологиям правильные имя, роль и состояние.
  • Содержимое перетекает и остаётся пригодным при увеличении 200% и на малых экранах.
  • Лимиты времени настраиваемы, а движение или автоматически воспроизводимое содержимое можно приостановить.
  • Цвет не единственное средство передачи информации.
  • У медиа есть субтитры и, где нужно, расшифровки или аудиоописание.
  • Интерфейс протестирован программой чтения с экрана и автоматизированными инструментами доступности.

Контрольный список рецензии проекта API

Перед публикацией или изменением API.

  • Именование ресурсов и операций последовательно и предсказуемо.
  • Контракт задан в машиночитаемой схеме (например, OpenAPI).
  • Стратегия версионирования определена, а обратная совместимость сохранена или управляема.
  • Постраничная выдача, фильтрация и сортировка следуют последовательным конвенциям.
  • Ответы об ошибках используют последовательную структуру, коды и применимые сообщения.
  • Аутентификация и авторизация заданы для каждой операции.
  • Валидация ввода и ограничения размера определены и принуждаются.
  • Идемпотентность определена для операций, где ожидаются повторы.
  • Ограничения частоты, квоты и поведение троттлинга документированы.
  • Тайм-ауты, повторы и семантика сбоев ясны клиентам.
  • Раскрытие чувствительных данных в ответах минимизировано и обосновано.
  • Документация включает примеры для каждой операции и случая ошибки.
  • Политика устаревания и сроки вывода определены.

Контрольный список рецензии решения по архитектуре (ADR)

Для рецензии предлагаемой записи архитектурного решения.

  • Контекст и решаемая проблема изложены ясно.
  • Решение изложено недвусмысленно как единый выбор.
  • Рассмотрены и сравнены как минимум две реалистичные альтернативы.
  • Последствия, как положительные, так и отрицательные, документированы.
  • Нефункциональные воздействия (производительность, безопасность, цена, эксплуатируемость) учтены.
  • Решение согласуется с существующими принципами и предыдущими ADR или явно их заменяет.
  • Затронутые команды и заинтересованные стороны были проконсультированы.
  • Обратимость и цена изменения оценены.
  • Допущения и ограничения сделаны явными.
  • Статус (предложено, принято, заменено) задан и датирован.
  • Решение обнаруживаемо и связано из релевантных систем.
  • Любые последующие действия или миграции зафиксированы как отслеживаемая работа.

Контрольный список реагирования на инцидент

Во время активного производственного инцидента.

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

Контрольный список разбора инцидента

Для ретроспективной рецензии после инцидента.

  • Рецензия безвинна и сосредоточена на системах и способствующих факторах.
  • Фактическая хронология инцидента с метками времени документирована.
  • Воздействие на клиентов и бизнес квантифицировано (длительность, охват, цена).
  • Обнаружение проанализировано: как и когда проблему заметили.
  • Реагирование проанализировано: что помогло и что замедлило восстановление.
  • Способствующие причины выявлены, а не только единственная первопричина.
  • Записано, что прошло хорошо, а также что прошло плохо.
  • Действия конкретны, назначены владельцам и имеют сроки.
  • Действия касаются предотвращения, обнаружения и смягчения.
  • Последующие пункты отслеживаются до завершения в обычном бэклоге.
  • Разбор широко распространён, чтобы другие могли учиться на нём.
  • Системные закономерности по инцидентам периодически рецензируются.

Контрольный список готовности к дежурству

Перед тем как кто-то принимает дежурную смену.

  • У реагирующего есть доступ ко всем системам, панелям и инструментам, что ему нужны.
  • Оповещения надёжно доходят до реагирующего и протестированы.
  • Пути эскалации и контакты вторичного дежурного известны и актуальны.
  • Руководства по эксплуатации существуют для наиболее частых и наиболее серьёзных оповещений.
  • Реагирующий прошёл вхождение или сопровождение по этим системам.
  • Недавние изменения, текущие инциденты и известные проблемы переданы.
  • Пороги оповещений настроены так, чтобы минимизировать шум и ложные вызовы.
  • Реагирующий знает, как объявить инцидент и связаться с командиром.
  • Доступ к производству возможен из рабочего окружения реагирующего.
  • Каналы связи и контакты заинтересованных сторон документированы.
  • График дежурств опубликован, а покрытие не имеет пробелов.
  • Компенсация, ожидания и пределы нагрузки для дежурства ясны.

Контрольный список определения SLO

При определении целевого уровня обслуживания.

  • Пользовательский путь или возможность, которую защищает SLO, ясно определены.
  • Индикаторы уровня обслуживания (SLI) определены как ясные измеримые величины.
  • SLI измеряются с точки зрения пользователя, где возможно.
  • Целевое значение цели задано на уровне, который пользователям действительно нужен, а не 100%.
  • Окно измерения (например, скользящие 28 дней) задано.
  • Бюджет ошибок, выведенный из цели, вычислен и понят.
  • Политика определяет, что происходит при исчерпании бюджета ошибок.
  • Источники данных для SLI надёжны и инструментированы.
  • Оповещения привязаны к скорости сжигания, а не только к нарушениям порога.
  • Владельцы и заинтересованные стороны согласны, что SLO реалистичен и осмыслен.
  • SLO документирован и виден на панели.
  • Существует график рецензии и пересмотра SLO по мере развития сервиса.

Контрольный список конвейера CI/CD

Для конвейера непрерывной интеграции и поставки.

  • Каждый коммит запускает автоматизированную сборку и прогон тестов.
  • Конвейер быстро падает и ясно сообщает результаты авторам.
  • Линтинг, форматирование и статический анализ запускаются автоматически.
  • Модульные, интеграционные и релевантные сквозные тесты запускаются в конвейере.
  • Сканирование безопасности и зависимостей запускается при каждой сборке.
  • Артефакты сборки версионированы, неизменяемы и хранятся в реестре.
  • Секреты внедряются безопасно и никогда не печатаются в журналах.
  • Развёртывания автоматизированы и повторяемы по окружениям.
  • Стратегия развёртывания (канарейка, сине-зелёное, скользящее) определена и используется.
  • Откат автоматизирован или является единственным документированным действием.
  • Права конвейера следуют наименьшим привилегиям и поддаются аудиту.
  • Конфигурация конвейера хранится в системе контроля версий как код.
  • Происхождение сборки и перечень компонентов программного обеспечения производятся там, где требуется.

Контрольный список рецензии инфраструктуры как кода

Для рецензии инфраструктуры, определённой как код.

  • Изменения выражены целиком в коде и применяются через конвейер.
  • План или вывод пробного прогона рецензируется перед применением.
  • Состояние хранится безопасно с блокировкой, предотвращающей одновременные изменения.
  • Ресурсы следуют конвенциям именования, тегирования и владения.
  • Используются роли и политики IAM с наименьшими привилегиями, без подстановочных знаков, где можно избежать.
  • Сетевое раскрытие минимизировано; нет непреднамеренного публичного доступа.
  • Секреты и чувствительные значения ссылаются из хранилища, а не зашиты в код.
  • Шифрование включено для хранилищ, баз данных и передачи.
  • Изменения идемпотентны и безопасны для повторного применения.
  • Радиус поражения понят; разрушительные изменения выделены.
  • Воздействие изменения на цену учтено.
  • Модули повторно используемы, версионированы и протестированы.
  • Обнаружение дрейфа на месте, чтобы ловить внеполосные изменения.

Контрольный список релиза модели ИИ/МО

Перед выпуском модели машинного обучения в производство.

  • Предназначенное использование, объём и ограничения модели документированы.
  • Происхождение, лицензирование и согласие на данные обучения и оценки проверены.
  • Данные и модель версионированы и воспроизводимы.
  • Производительность оценена на репрезентативных отложенных тестовых данных.
  • Справедливость и смещение оценены по релевантным подгруппам.
  • Модель оценена относительно действующей или базовой.
  • Режимы отказа, крайние случаи и поведение вне распределения поняты.
  • Риски безопасности, злоупотребления и вредного вывода оценены и смягчены.
  • Мониторинг дрейфа, качества данных и деградации производительности на месте.
  • Существует откат или запасной переход на предыдущую модель или путь на правилах.
  • Человеческий надзор или апелляция обеспечены для значимых решений.
  • Рецензия приватности охватывает данные обучения и входы и выходы вывода.
  • Карточка модели или эквивалентная документация опубликована для заинтересованных сторон.

Контрольный список качества конвейера данных

Для конвейера данных, питающего аналитику или продукты.

  • Схемы исходных данных валидируются, а изменения схемы обнаруживаются.
  • Приём правильно обрабатывает запоздавшие, дублирующиеся и неупорядоченные записи.
  • Проверки качества данных (полнота, уникальность, диапазоны) запускаются автоматически.
  • Неудавшиеся записи помещаются в карантин и выводятся наружу, а не молча отбрасываются.
  • Преобразования протестированы на репрезентативных и крайних входах.
  • Конвейер идемпотентен и безопасен для повторного запуска после сбоя.
  • Свежесть и задержка выходов мониторятся относительно ожиданий.
  • Происхождение документировано, чтобы потребители знали, откуда берутся данные.
  • Персональные и чувствительные данные классифицированы, маскированы или ограничены надлежащим образом.
  • Дозаполнения и повторная обработка поддерживаются и документированы.
  • Оповещения уведомляют владельцев о сбоях и нарушениях качества.
  • Политики хранения и удаления принуждаются на сохранённых данных.
  • Нижестоящие потребители и SLA документированы.

Контрольный список приёма открытого исходного кода и рецензии лицензии

Перед принятием компонента с открытым исходным кодом.

  • Лицензия компонента выявлена и входит в список одобренных.
  • Лицензионные обязательства (указание авторства, копилефт, уведомления) поняты и выполнены.
  • Совместимость лицензии с вашей моделью распространения подтверждена.
  • Проект активно сопровождается и имеет здоровое сообщество.
  • Известные уязвимости проверены, а версия актуальна.
  • Зависимость и её транзитивные зависимости инвентаризированы.
  • Состояние безопасности и история прошлых инцидентов рассмотрены.
  • Компонент закрывает реальную потребность без значительного дублирования.
  • Цена выхода и заменяемость компонента учтены.
  • Компонент записан в перечень компонентов программного обеспечения.
  • Названный владелец отвечает за отслеживание обновлений и бюллетеней.
  • Политики вклада обратно и внутренних форков соблюдаются при изменении.

Контрольный список рисков поставщика / третьей стороны

Перед подключением внешнего поставщика или сервиса.

  • Бизнес-потребность и данные, к которым поставщик получит доступ, ясно определены.
  • Состояние безопасности поставщика оценено (сертификации, аудиты, опросник).
  • Условия обработки данных, владение и удаление при выходе контрактно ясны.
  • Субобработчики и расположение данных поставщика раскрыты и приемлемы.
  • Соответствие релевантному регулированию проверено.
  • Время работы, поддержка и обязательства SLA документированы.
  • Обязательства уведомления об утечках и сроки включены в контракт.
  • Доступ ограничен наименьшими привилегиями и отзываем.
  • Непрерывность бизнеса и воздействие сбоя поставщика оценены.
  • План выхода и миграции данных существует, чтобы избежать привязки.
  • Цены, условия продления и положения об изменении цен поняты.
  • Поставщик добавлен в реестр рисков с датой рецензии.

Контрольный список готовности к государственному соответствию (в стиле ATO / FedRAMP)

Для систем, требующих формального разрешения на эксплуатацию.

  • Граница системы и потоки данных определены и изображены на диаграмме.
  • Данные категоризированы по уровню воздействия и чувствительности.
  • Применимый базис средств контроля выбран и адаптирован.
  • План безопасности системы документирует, как реализован каждый контроль.
  • Контроли реализованы, подтверждены свидетельствами и сопоставлены с планом.
  • Непрерывный мониторинг и сканирование уязвимостей действуют.
  • План действий и этапов отслеживает открытые находки до устранения.
  • Управление доступом, журналирование аудита и управление идентичностью соответствуют требованиям.
  • Шифрование использует одобренные алгоритмы и проверенные модули.
  • План реагирования на инциденты документирован и протестирован.
  • План непрерывности и аварийного восстановления документирован и протестирован.
  • Независимая оценка или аудит контролей завершены.
  • У уполномочивающего должностного лица есть оценка риска, необходимая для предоставления разрешения.
  • Триггеры повторного разрешения и ритм текущего разрешения определены.