Маршруты чтения

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

7 минут

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

Общее для всех маршрутов: PRINCIPLES — почему всё устроено именно так. Одна страница, читается первой и объясняет решения в остальных документах.


Собрать бэкенд

ДокументЧто даёт
1PRINCIPLESпринципы: контракт на границе, ничто не приколочено
2BMAPкорни репозитория, место бэка в продукте
3BMBPслои, API-иерархия, конверт, данные, идемпотентность, транзакции
4AUTHкто обращается и что ему можно: удостоверения, правила доступа
5Стиль кода бэкаименование, типизация, исключения, асинхронность, журнал
6База данныхсхема на сервис, миграции, подключение и таймауты
7Тестированиечто покрывать на каждом слое
8Git и репозиториичто попадает в историю, как ведём версии

Если бэков несколько и перед ними нужен единый вход — дальше BMGP. Если сервисы общаются событиями — Обмен сообщениями.


Собрать фронт

ДокументЧто даёт
1PRINCIPLESпринципы
2BMAPместо фронта в продукте, связь с бэком
3BMFPслои, состояние, контракт, маршруты, стили, оптимизация загрузки
4Правила дизайна + Адаптивностькак это должно выглядеть и вести себя на разных экранах
5Стиль кода фронтаименование, вложенность стилей, приёмы разметки
6Тестированиечто покрывать на каждом слое
7Git и репозиторииверсии и история

Если во фронте есть вход и закрытые разделы — AUTH: что хранится в браузере, когда продлевается сессия, почему право проверяется на сервере, а не кнопкой.

Форма ответов бэка описана в BMBP — читается, если контракт ещё не задан.


Собрать шлюз

ДокументЧто даёт
1BMGPструктура, маршруты, upstream, сквозные правила
2BMBP, раздел про API-иерархиюкакие ручки бэков существуют и чем отличаются
3Сетевой контургде шлюз стоит в цепочке и что публикует

Развернуть систему на сервере

Порядок обязателен: каждый следующий документ опирается на состояние, оставленное предыдущим.

ДокументЧто даёт
1Настройка серверапользователь, вход по ключу, межсетевой экран, часы, журналы
2Dockerдвижок, правила публикации портов, ротация логов
3Частная сетьобращение между машинами по частным адресам
4Сетевой контуркак соединены слои, что наружу не смотрит
5База данныххранилище, пользователи, схема на сервис, миграции
6Секретыоткуда части системы берут пароли и ключи
7Запуск приложенияcompose продукта, проверки готовности, ограничения
8HTTPS для доменадомен, сертификат, автопродление
9Резервное копированиекопии и проверка восстановлением — до первого выката
10Релиз и выкатсборка, выкат без простоя, откат
11Наблюдение + Журналыметрики, пороги, оповещения, сбор записей

Если сервисы общаются событиями, между шагами 7 и 8 добавляется Обмен сообщениями: брокер поднимается до потребителей, иначе темы рождаются с настройками по умолчанию.

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


Выпустить новую версию

ДокументЧто даёт
1Git и репозиториичистое зафиксированное состояние, метка версии
2Тестированиепрогон как условие выпуска
3Релиз и выкатсборка артефакта, выкат, откат, миграции
4Наблюдениечто смотреть сразу после выката

Выделить переиспользуемую единицу

ДокументЧто даёт
1REUSEкогда выделять, топология, подключение с закреплённой версией
2BMFP, раздел про модуликак устроен фронт-модуль и его публичный контракт
3Git и репозиторииверсии: что означает каждая часть номера
4Тестированиетесты принадлежат единице, а не потребителю

Разобраться, почему не работает

СимптомКуда смотреть
сайт не открывается, ошибка сертификатаHTTPS для домена, раздел отказов
502 или 504Сетевой контур, проверка по слоям
сервис доступен снаружи в обход шлюзаDocker, публикация портов
после выката всё сломалосьРелиз и выкат, откат
данные потеряныРезервное копирование, восстановление
непонятно, где искать причинуНаблюдение, разбор отказа
нужны записи за прошлый часЖурналы, запросы к хранилищу
действие выполнилось дваждыBMBP, идемпотентность
сообщения обрабатываются не по порядкуОбмен сообщениями, ключ и порядок
вход перестал работать, разлогиниваетAUTH, таблица отказов
машины не видят друг друга по частным адресамЧастная сеть, таблица отказов
часть не поднимается или не выходит в готовностьЗапуск приложения, где искать причину
ошибка подключения к базе, исчерпан пулБаза данных, таблица отказов
секрет попал в репозиторийСекреты, раздел про утечку
заперся снаружи, потерян доступ к серверуНастройка сервера, откат

Внести изменение в существующий код

ДокументЧто даёт
1Работа в кодовой базес чем сверяться, как вносить правку, что делать при расхождении с архитектурой
2Спецификация нужного слоя: BMFP, BMBP или BMGPграницы, за которые нельзя выходить ради краткости
3Стиль соответствующей стороны: фронт или бэкчтобы правка читалась как соседний код
4Тестированиечто прогнать перед сдачей
5Git и репозиторииодно изменение — один коммит

Написать документ в библиотеку

ДокументЧто даёт
1Документ библиотекикритерий готовности, обязательные части
2Правила письмаязык: точность, нейтральность, чего избегать

Перед публикацией — ./tools/check-leaks.sh.

Инструкция не помогла?

Откройте исходник документа по ссылке «Предложить правку» — там же видно, что и когда в нём менялось.