12.3
12.3 Шаблоны
Эти шаблоны готовые к копированию отправные точки. Перенесите любой шаблон в вашу вики, репозиторий или систему заявок и заполните заполнители в скобках. Заметки курсивом и встроенные комментарии объясняют, что относится к каждому разделу; удалите их, когда раздел заполнен. Держите шаблоны лёгкими: шаблон, который быстрее пропустить, чем заполнить, использоваться не будет. Адаптируйте заголовки и разделы к вашей организации, но сохраняйте назначение каждой части.
Несколько условностей, используемых ниже:
- Текст в
[квадратных скобках]заполнитель для замены. - Текст в курсиве или
<!-- комментариях -->указание для удаления. - Держите готовый документ настолько коротким, насколько возможно, пока он отвечает на свои вопросы.
Запись архитектурного решения (ADR)
# ADR [NNNN]: [Краткое название решения]
- Статус: [Предложено | Принято | Устарело | Заменено ADR-XXXX]
- Дата: [ГГГГ-ММ-ДД]
- Принимающие решение: [имена или роли]
- Консультированные: [имена или роли]
## Контекст
<!-- Какая проблема, сила или ограничение движут этим решением?
Изложите факты и требования нейтрально. Включите только то, что
нужно будущему читателю, чтобы понять, почему решение было
необходимо. -->
## Решение
<!-- Изложите выбор в одном-двух ясных предложениях: «Мы будем ...» -->
## Рассмотренные альтернативы
<!-- Перечислите реалистичные варианты, которые вы взвесили, и почему
каждый был или не был выбран. Здесь должны быть как минимум две
альтернативы. -->
- Вариант A: [краткое описание]; отклонён, потому что [причина].
- Вариант B: [краткое описание]; отклонён, потому что [причина].
- Выбранный вариант: [краткое описание]; выбран, потому что [причина].
## Последствия
<!-- Честные результаты решения, как хорошие, так и плохие. -->
- Положительные: [полученные выгоды]
- Отрицательные: [принятые цены, риски или ограничения]
- Последующее: [миграции, новая работа или решения, которые это запускает]
## Связанное
<!-- Ссылки на предыдущие ADR, RFC, заявки или документы, к которым
это относится. --> RFC / проектный документ
# RFC: [Название]
- Автор(ы): [имена]
- Статус: [Черновик | На рецензии | Одобрен | Отклонён | Реализован]
- Рецензенты: [имена или роли]
- Создан: [ГГГГ-ММ-ДД]
- Последнее обновление: [ГГГГ-ММ-ДД]
- Заявка / отслеживание: [ссылка]
## Резюме
<!-- Один абзац: что это предлагает и почему важно. Читатель должен
уловить суть из одного этого раздела. -->
## Проблема и мотивация
<!-- Какую проблему мы решаем? Кого она затрагивает? Что случится,
если мы ничего не сделаем? Включите релевантный фон и ограничения. -->
## Цели и не-цели
- Цели: [как выглядит успех, измеримо, где возможно]
- Не-цели: [явно вне объёма, чтобы предотвратить расползание объёма]
## Предлагаемый проект
<!-- Ядро документа. Опишите подход, архитектуру, модель данных,
интерфейсы и ключевые потоки. Используйте диаграммы там, где они
проясняют. Объясните, как это работает, а не только что это. -->
## Рассмотренные альтернативы
<!-- Другие подходы и почему они не были выбраны. Показывает читателю,
что пространство проектных решений было исследовано. -->
## Воздействие и риски
- Безопасность и приватность: [последствия и смягчения]
- Производительность и масштаб: [ожидаемая нагрузка и поведение]
- Эксплуатируемость: [мониторинг, режимы отказа, выкатка, откат]
- Цена: [влияние на инфраструктуру или лицензирование]
- Обратная совместимость: [миграция и устаревание]
## План тестирования и выкатки
<!-- Как изменение будет проверено и безопасно выпущено. -->
## Открытые вопросы
<!-- Нерешённые вопросы, по которым вы хотите услышать рецензентов. --> Разбор инцидента (безвинный)
# Разбор: [Название инцидента]
- ID инцидента: [ID]
- Дата инцидента: [ГГГГ-ММ-ДД]
- Авторы: [имена]
- Статус: [Черновик | Окончательный]
- Серьёзность: [SEV1 | SEV2 | SEV3]
> Эта рецензия безвинна. Мы сосредоточены на системах и способствующих
> факторах, а не на отдельных людях. Цель учиться и предотвратить
> повторение.
## Резюме
<!-- Два-три предложения: что случилось, воздействие и разрешение,
понятные неспециалисту. -->
## Воздействие
- Длительность: [от начала до времени восстановления, с часовым поясом]
- Затронутые пользователи: [охват и число]
- Влияние на бизнес: [выручка, SLA, репутация или иное]
## Хронология
<!-- Фактическая последовательность событий с метками времени. Включите
обнаружение, эскалацию, ключевые действия и восстановление. -->
- [ЧЧ:ММ] [событие]
- [ЧЧ:ММ] [событие]
## Способствующие факторы
<!-- Цепочка условий, приведших к инциденту. Предпочитайте
«способствующие факторы» единственной первопричине. -->
## Обнаружение и реагирование
- Как это было обнаружено? [оповещение, сообщение клиента и т. д.]
- Что помогло реагированию?
- Что замедлило реагирование?
## Что прошло хорошо
<!-- Отметьте эффективные действия и защиты, которые сработали. -->
## Действия
<!-- Конкретные, с владельцем и датой. Касаются предотвращения,
обнаружения и смягчения. Отслеживайте их в обычном бэклоге. -->
| Действие | Владелец | Срок | Тип (предотвращение/обнаружение/смягчение) | Заявка |
|----------|----------|------|--------------------------------------------|--------|
| [действие] | [имя] | [дата] | [тип] | [ссылка] |
## Извлечённые уроки
<!-- Что более широкая организация должна вынести. --> Модель угроз (на основе STRIDE)
# Модель угроз: [Название системы или функции]
- Автор(ы): [имена]
- Дата: [ГГГГ-ММ-ДД]
- Рецензенты: [контакт безопасности, владельцы]
- Объём: [что охвачено и что нет]
## Обзор системы
<!-- Краткое описание системы, её назначения и пользователей. -->
## Активы
<!-- Что стоит защищать: данные, учётные данные, функциональность,
репутация. Отметьте чувствительность каждого. -->
## Границы доверия и поток данных
<!-- Опишите или изобразите компоненты, хранилища данных, внешние
сущности и границы, где меняется доверие. -->
## Угрозы (STRIDE)
<!-- Для каждого элемента рассмотрите категории STRIDE. Запишите каждую
правдоподобную угрозу, её риск и смягчение или принятый риск. -->
| Угроза | Категория STRIDE | Затронутый элемент | Риск (Н/С/В) | Смягчение | Статус |
|--------|------------------|--------------------|--------------|-----------|--------|
| [угроза] | Spoofing | [элемент] | [риск] | [контроль] | [открыта/смягчена/принята] |
| [угроза] | Tampering | [элемент] | [риск] | [контроль] | [статус] |
| [угроза] | Repudiation | [элемент] | [риск] | [контроль] | [статус] |
| [угроза] | Information disclosure | [элемент] | [риск] | [контроль] | [статус] |
| [угроза] | Denial of service | [элемент] | [риск] | [контроль] | [статус] |
| [угроза] | Elevation of privilege | [элемент] | [риск] | [контроль] | [статус] |
## Допущения и зависимости
<!-- Допущения безопасности, на которые опираются, и внешние контроли,
которым доверяют. -->
## Открытые вопросы и последующая работа
<!-- Угрозы, требующие дальнейшей работы, отслеживаемые как заявки. --> Руководство по эксплуатации
# Руководство по эксплуатации: [Название задачи или сценария]
- Сервис: [название сервиса]
- Владелец: [команда]
- Последняя рецензия: [ГГГГ-ММ-ДД]
- Связанные оповещения: [названия оповещений]
## Назначение
<!-- Когда использовать это руководство и чего оно достигает. -->
## Предпосылки
<!-- Доступ, инструменты и разрешения, нужные перед началом. -->
## Обнаружение / симптомы
<!-- Что наблюдает оператор: оповещения, сигнатуры ошибок, панели. -->
## Диагностика
<!-- Пошаговые проверки для подтверждения проблемы и сужения причины.
Включите точные команды, запросы или ссылки на панели. -->
1. [шаг и ожидаемый результат]
2. [шаг и ожидаемый результат]
## Разрешение
<!-- Конкретные упорядоченные шаги для исправления или смягчения.
Отметьте любой рискованный или необратимый шаг и как проверить
успех. -->
1. [шаг]
2. [проверить восстановление]
## Откат
<!-- Как отменить действия, если разрешение ухудшает положение. -->
## Эскалация
<!-- К кому обращаться и когда эскалировать. Вторичный дежурный,
владеющая команда и контакты поставщиков. -->
## Источники
<!-- Панели, связанные руководства, архитектурные документы. --> README сервиса / запись каталога сервисов
# [Название сервиса]
- Команда-владелец: [команда]
- Дежурство: [ссылка на ротацию]
- Уровень / критичность: [Уровень 1 | 2 | 3]
- Репозиторий: [ссылка]
- Статус: [Активен | Устарел]
## Что он делает
<!-- Один абзац об ответственности сервиса и его потребителях. -->
## Архитектура
<!-- Ключевые компоненты, зависимости (вышестоящие и нижестоящие) и
ссылка на проектный документ или диаграмму. -->
## Интерфейсы
- API / конечные точки: [ссылка на спецификацию]
- События опубликованные / потребляемые: [темы]
- Хранилища данных: [базы данных, кэши, корзины]
## Исполнение и развёртывание
- Окружения: [dev, staging, prod]
- Как развернуть: [ссылка на конвейер и процесс]
- Конфигурация и флаги функций: [где и как]
## Наблюдаемость
- Панели: [ссылки]
- Оповещения: [ссылки]
- Журналы: [где их найти]
- SLO: [ссылка]
## Эксплуатация
- Руководства по эксплуатации: [ссылки]
- Типичные задачи: [масштабирование, перезапуск, дозаполнение]
- Известные проблемы и ограничения: [заметки]
## Начало работы (для новых участников)
<!-- Как собрать, протестировать и запустить локально. -->
## Контакты
- Канал в Slack / чате: [ссылка]
- Эскалация: [путь] Политика SLO / бюджета ошибок
# Политика SLO и бюджета ошибок: [Название сервиса или пути]
- Владелец: [команда]
- Дата вступления в силу: [ГГГГ-ММ-ДД]
- Ритм рецензии: [например, поквартально]
## Индикаторы уровня обслуживания (SLI)
<!-- Определите каждый SLI точно: измеряемую величину, как она
измеряется и откуда (в идеале с точки зрения пользователя). -->
| SLI | Определение | Источник данных |
|-----|-------------|-----------------|
| Доступность | [например, успешные запросы / все запросы] | [источник] |
| Задержка | [например, доля запросов быстрее X мс] | [источник] |
## Цели (SLO)
| SLI | Цель | Окно измерения |
|-----|------|----------------|
| Доступность | [например, 99,9%] | [например, скользящие 28 дней] |
| Задержка | [например, 95% быстрее 300 мс] | [скользящие 28 дней] |
## Бюджет ошибок
<!-- Допустимая ненадёжность: 100% минус цель за окно. Укажите бюджет
в конкретных терминах (например, минут в месяц). -->
- Бюджет: [выведенное допущение]
## Политика при исчерпании бюджета
<!-- Согласованные последствия. Сделайте их конкретными и
принуждаемыми. -->
- [например, Заморозить некритичные выпуски функций, пока бюджет не восстановится.]
- [например, Приоритизировать работу над надёжностью в следующем цикле планирования.]
- [например, Эскалировать руководству инженерии при нарушении два окна подряд.]
## Политика при здоровом бюджете
<!-- Какой дополнительный риск команда может принять, например более
быстрые выкатки. -->
## Оповещения
<!-- Оповещения по скорости сжигания и пороги, привязанные к этому SLO. --> Запись реестра рисков
## Риск: [Краткое название риска]
- ID риска: [ID]
- Дата выявления: [ГГГГ-ММ-ДД]
- Владелец: [имя или роль, отвечающая за управление этим риском]
- Категория: [безопасность | операционный | соответствие | финансовый | поставка | поставщик]
- Статус: [Открыт | Смягчается | Принят | Закрыт]
### Описание
<!-- Изложите риск как: причина -> событие -> последствие. Что могло бы
случиться и почему это важно. -->
### Оценка
- Вероятность: [Низкая | Средняя | Высокая]
- Воздействие: [Низкое | Среднее | Высокое]
- Общий рейтинг: [выводится из вероятности x воздействия]
### Текущие контроли
<!-- Что уже снижает этот риск сегодня. -->
### План смягчения
<!-- Запланированные действия по снижению вероятности или воздействия, с
владельцами и датами. Если риск принимается, запишите, кто принял и
почему. -->
| Действие | Владелец | Срок | Статус |
|----------|----------|------|--------|
| [действие] | [имя] | [дата] | [статус] |
### Рецензия
- Дата следующей рецензии: [ГГГГ-ММ-ДД]
- Решение / заметки: [любая подпись принятия или изменение] Одностраничник проекта / краткое описание продукта
# [Название проекта или продукта]: одностраничник
- Спонсор: [имя]
- Руководитель: [имя]
- Дата: [ГГГГ-ММ-ДД]
- Статус: [Идея | Одобрен | В работе | Отгружен]
## Проблема
<!-- Один абзац: проблема клиента или бизнеса и свидетельства, что она
реальна и её стоит решать. -->
## Аудитория
<!-- У кого эта проблема и кто выигрывает от её решения. -->
## Предлагаемое решение
<!-- Краткое описание того, что мы построим или изменим. Держите на
уровне намерения, а не деталей реализации. -->
## Почему сейчас
<!-- Причина делать это сейчас, а не позже. -->
## Метрики успеха
<!-- Как мы узнаем, что сработало. Предпочитайте измеримые результаты. -->
- [метрика и цель]
## Объём
- В объёме: [что мы сделаем]
- Вне объёма: [чего мы не сделаем]
## Риски и открытые вопросы
<!-- Главные неопределённости и зависимости. -->
## Примерный план и вехи
<!-- Высокоуровневые фазы и приблизительные сроки. -->
## Цена и ресурсы
<!-- Требуемые люди, время и бюджет. --> Заметки передачи дежурства
# Передача дежурства: [ГГГГ-ММ-ДД]
- Уходящий: [имя]
- Принимающий: [имя]
- Сервис(ы): [названия]
## Общий статус
<!-- Одна строка: тихо, шумно или текущая проблема. -->
## Открытые инциденты
<!-- Любые активные или недавно разрешённые инциденты, о которых должен
знать следующий реагирующий, со ссылками. -->
- [инцидент, статус и что осталось]
## Текущие или запланированные изменения
<!-- Развёртывания, миграции, окна обслуживания или эксперименты в
полёте, способные вызвать оповещения. -->
## Шумные или нестабильные оповещения
<!-- Оповещения, которые срабатывали, и их реальное значение, чтобы
следующий человек не был введён в заблуждение. Отметьте любые
временные заглушения и срок их истечения. -->
## Объекты наблюдения
<!-- Метрики или системы, движущиеся в тревожном направлении. -->
## Ожидающие последующие действия
<!-- Задачи, передаваемые следующей смене, со ссылками на заявки. -->
## Заметки
<!-- Всё остальное полезное: причуды доступа, проблемы поставщиков,
контекст. --> Запрос на изменение (для регулируемого контроля изменений)
# Запрос на изменение: [Название изменения]
- ID изменения: [ID]
- Заявитель: [имя]
- Дата подачи: [ГГГГ-ММ-ДД]
- Тип: [Стандартное | Обычное | Экстренное]
- Приоритет: [Низкий | Средний | Высокий]
- Статус: [Подан | Одобрен | Отклонён | Реализован | Закрыт]
## Описание изменения
<!-- Что меняется и почему. Сошлитесь на заявку или требование. -->
## Затронутые системы и компоненты
<!-- Сервисы, данные, окружения и пользователи, на которых влияет. -->
## Обоснование и влияние на бизнес
<!-- Причина изменения и последствия отказа от него. -->
## Оценка риска
- Уровень риска: [Низкий | Средний | Высокий]
- Возможное воздействие при сбое изменения: [описание]
- Влияние на безопасность, приватность или соответствие: [описание]
## План реализации
<!-- Упорядоченные шаги, ответственные стороны и сроки. -->
## План тестирования и проверки
<!-- Как успех будет проверен до и после изменения. -->
## План отката / возврата
<!-- Как отменить изменение при сбое и время восстановления. -->
## Расписание
- Предлагаемое окно: [начало и конец, с часовым поясом]
- Ожидаемый простой: [длительность или нет]
## Одобрения
| Роль | Имя | Решение | Дата |
|------|-----|---------|------|
| Владелец изменения | [имя] | [одобрить/отклонить] | [дата] |
| Технический рецензент | [имя] | [одобрить/отклонить] | [дата] |
| Консультативный совет по изменениям | [имя] | [одобрить/отклонить] | [дата] |
## Рецензия после реализации
<!-- Результат, возникшие проблемы и потребовался ли откат. --> Набросок оценки воздействия на защиту данных (DPIA)
# Оценка воздействия на защиту данных: [Название деятельности по обработке]
- Оценщик: [имя]
- Дата: [ГГГГ-ММ-ДД]
- Рецензенты: [DPO / контакт по приватности]
- Статус: [Черновик | Рассмотрена | Одобрена]
## 1. Описание обработки
<!-- Какие персональные данные обрабатываются, как, кем и с какой целью.
Включите потоки данных от сбора до удаления. -->
- Субъекты данных: [о ком данные]
- Категории данных: [типы персональных данных, отметьте особые категории]
- Цели: [зачем данные обрабатываются]
- Получатели и обработчики: [кто получает или обрабатывает данные]
- Срок хранения: [как долго данные хранятся и способ удаления]
- Международные передачи: [направления и механизм передачи]
## 2. Необходимость и соразмерность
<!-- Необходима ли обработка для цели? Является ли она наименее
навязчивым вариантом? Каково правовое основание или полномочие? -->
- Правовое основание / полномочие: [основание для каждой цели]
- Минимизация данных: [почему необходимо каждое поле]
- Точность и обоснование хранения: [заметки]
- Как поддерживаются права субъектов данных: [доступ, удаление и т. д.]
## 3. Консультация
<!-- Заинтересованные стороны и, где релевантно, субъекты данных,
с которыми проводились консультации. -->
## 4. Риски для физических лиц
<!-- Выявите риски приватности и оцените каждый. -->
| Риск для физических лиц | Вероятность | Тяжесть | Общий |
|--------------------------|-------------|---------|-------|
| [например, несанкционированный доступ к чувствительным данным] | [Н/С/В] | [Н/С/В] | [рейтинг] |
## 5. Меры по снижению риска
<!-- Для каждого риска смягчение и остаточный риск после него. -->
| Риск | Мера | Остаточный риск | Принят |
|------|------|-----------------|--------|
| [риск] | [контроль] | [Н/С/В] | [имя] |
## 6. Результат и подпись
- Остаточный риск приемлем: [Да | Нет]
- Меры одобрены: [имя, роль]
- Требуется консультация с надзорным органом: [Да | Нет]
- Дата рецензии: [ГГГГ-ММ-ДД]