- Код приложения должен лежать в системе контроля версий
- Должна быть настроена автоматизированная система сборки и деплоя
- Все сборки проекта должны быть полностью повторяемыми
- Все зависимости проекта должны быть изолированы от операционной системы
- В коде не должно быть хардкода настроек и доступов
- Все настройки должны задаваться через переменные окружения
- Продумана и реализована схема горизонтального масштабирования
- Если ваше приложение stateless, оно должно быть готово к тому, что его могут «убить» и «поднять» в любой момент
- Тестовые стейджи должны быть максимально похожи на боевое окружение
- Работа приложения должна быть максимально наблюдаемой, приложение должно писать логи и экспортировать свои метрики
- Все логи необходимо писать в stdout
- Если в приложении есть база данных, должна быть продумана система миграций и схема релиза с учётом выкатки миграций
Мы давно придерживаемся всех этих пунктов, о части из них и некоторых дополнительных подробнее можно почитать здесь