Слои системы
Архитектуру удобно описывать по слоям: у каждого слоя понятная зона ответственности, свой набор проверок и своя документация. Так проще искать причину сбоя и вносить изменения, не затрагивая остальное.
| Слой | Назначение | Что документируем |
|---|---|---|
| Периметр | Приём подключений, TLS, базовая фильтрация | Открытые порты, сертификаты, правила доступа |
| Маршрутизация и DNS | Доставка трафика и разрешение имён | Зоны, записи, маршруты, TTL |
| Балансировка | Распределение запросов между узлами | Проверки здоровья, алгоритм, порядок вывода узла |
| Сервисы | Приложения, которыми пользуются клиенты | Версии, зависимости, конфигурация |
| Наблюдение | Метрики, проверки, оповещения | Что измеряется, пороги, кто получает уведомления |
Принципы проектирования
- Минимум связей. Чем меньше зависимостей между компонентами, тем проще изолировать сбой.
- Сегментация. Административные интерфейсы и рабочие сервисы разделены сетями и правилами доступа.
- Конфигурация как код. Настройки хранятся в репозитории, изменения проходят просмотр и оставляют след в истории.
- Независимое наблюдение. Проверки выполняются снаружи, чтобы сбой сети не скрыл сам себя.
Что должно быть описано
Для каждого компонента стоит иметь короткую карточку. Достаточно нескольких строк, но они должны быть актуальны.
Компонент: DNS-резолвер
Назначение: разрешение внутренних и внешних имён
Владелец: [ответственный]
Зависимости: сеть управления, NTP
Порты: 53/udp, 53/tcp (только из внутренней сети)
Проверка: dig @127.0.0.1 example.org +short
Восстановление: см. «Эксплуатация и обновления»
Совет. Если карточку невозможно заполнить без догадок, это сигнал: компонент недостаточно изучен или его роль не определена.