Один основной путь
Если сервис можно развернуть тремя разными способами, через несколько месяцев все три окажутся немного рабочими. Лучше выбрать один путь, записать его и прогонять после каждого значимого изменения.
Аварийная инструкция тоже должна опираться на этот путь. Чем меньше специальных исключений, тем легче действовать без догадок.
Маленькая поверхность
Каждый открытый порт, дополнительная панель и фоновый процесс создают ещё одно место для обновлений и проверок. Хорошая исходная позиция — запретить входящие соединения, затем явно разрешить только необходимые.
Это не заменяет обновления и аккуратную настройку сервисов, но делает границу системы видимой.
Полезное ограничение
Новый компонент появляется только вместе с владельцем, способом обновления, резервным сценарием и понятным сигналом отказа.
Журнал решений рядом с системой
Для маленького проекта достаточно текстового файла: дата, контекст, решение и причина. Он отвечает на самый дорогой вопрос будущего — «почему здесь сделано именно так?».
Подробная документация быстро устаревает, а короткий журнал сохраняет логику. Команды и фактические значения по-прежнему лучше получать из конфигурации.
Сложность должна окупаться
Автоматизация полезна, когда убирает повторяемую ошибку или заметно сокращает восстановление. Если скрипт приходится чинить чаще, чем выполнять задачу вручную, граница пока выбрана неудачно.
Спокойная система не обязательно примитивна. Она просто состоит из частей, необходимость которых можно объяснить.