На этой неделе я начал помогать небольшому стартапу оценить и оптимизировать их приложение прототипа. Каждый раз, когда я начинаю один из этих проектов, меня поражает, сколько распространенных анти-паттернов я вижу практически на каждом проекте.
Сегодня я хочу поговорить о чрезмерном использовании конфигурации.
Вот (анонимный) фрагмент конфигурации для приложения, над которым я работаю (извлечен из конфигурации докеров-скомплектования):
- S3_LOCAL_PATH=./static/ - EMAIL_TEMPLATE=./static/notifications/email.yml - SMS_TEMPLATE=./static/notifications/email.json - PUSH_TEMPLATE=./static/notifications/email.json - FIREBASE_PRIVATE_KEY_PATH=./firebase.json - PUSH_NOTIFICATIONS_PATH=./static/notifications/push/push.json
Это просто глупо.
Буквально ни одна из этих переменных не должна существовать.
Почему?
Это приложение выполняется в одном из двух режимов:
- Из контейнера Docker
- В местном пути развития
Предоставление пути файлов для программ, которые выполняются из Docker, почти по определению избыточно. Вся идея Docker состоит в том, чтобы упаковать полное приложение.
И во многих случаях, таких как этот, потребности в развитии ничем не отличаются. Если бы было какое -то необходимость указать альтернативный путь, вероятно, было бы достаточно, чтобы иметь сингл Переменная конфигурация, указывающая на путь верхнего уровня.
Само собой разумеется, я буду разорвать эти переменные конфигурации и заменить их константами. Это уменьшит сложность как в самой программе, так и в конфигурации, так и в депутации. Беспроигрышный вариант для Dev и Ops!
Оригинал: «https://dev.to/tinydevops/simplify-your-configuration-3n54»