Я думаю, что есть несколько подходов, которые вы можете попробовать для этого. Первый заключается в настройке системы хранения в зависимости от того, какую конфигурацию вы указали при запуске (возможно, через такой модуль, как config или nconf). Во-вторых, нужно запустить быструю проверку при загрузке приложения, чтобы убедиться, что оно может получить доступ к службе memcache, а если оно не может, то возвращается к памяти с ошибкой.
Мне было бы довольно утомительно делать что-либо из этого, так как вы используете docker, и должно быть легко загрузить memcache. Это потому, что вы будете вводить код, который может сработать в производственном процессе, если возникнет какая-то проблема с подключением, и тогда вы можете случайно обслуживать сеансы из памяти, а не что-то вроде memcache, потенциально не осознавая этого.
Я остановлюсь здесь на обеих стратегиях и предоставлю третий, возможно, лучший вариант.
1. Выберите кеш-систему на основе конфига
Это должно быть довольно просто, просто извлеките вашу конфигурацию в некоторый вид менеджера конфигурации / переменных среды (checkout config или nconf). При запуске приложения и подключении промежуточного программного обеспечения сеанса вы можете вытащить все возможные конфигурации, посмотреть, какие существуют, и прикрепить один на основе этого. Это похоже на то, как выглядит if (config.session.storage === 'memcache")
в данный момент. Просто используйте запасной вариант, чтобы не настраивать его, и промежуточное ПО экспресс-сессии откроется в памяти. Таким образом, вы можете полностью исключить конфигурацию и просто всегда использовать память для разработки.
2. Запустите тест перед подключением к нужной услуге
В сочетании с вышеизложенным, если предоставлены подробные сведения о memcache, вы можете запустить быстрый тест, пытаясь сохранить что-то в memcache при запуске. Возможно new Date();
, чтобы сигнализировать, когда приложение загрузилось? Если это приводит к ошибке, просто не присоединяйте MemcachedStore
к опциям экспресс-сессии, и вы можете безопасно уничтожить MemcachedStore.
3. Выдайте ошибку, если не можете подключиться к Memcached
Это еще одна комбинация с # 2. Если вы обнаружите, что конфигурации memcache предоставлены, то я лично проверил бы, можете ли вы связаться с serivce, а если нет, то выдаст ошибку и остановит приложение. Это будет означать, что в процессе разработки вы сразу же знаете эту проблему, а в процессе работы вы также можете запускать автоматические оповещения для себя, основываясь на том факте, что приложение не запустилось.
Это, пожалуй, лучшее и наиболее надежное решение, как правило, сделать отказоустойчивое резервное копирование не очень хорошая идея, когда речь идет о подключенных сервисах, так как что-то может пойти не так, и вы понятия не имеете. Я ценю, что это для целей разработки, и вы должны быть прагматичными, но если это спасет вас от случайного обслуживания всех сеансов из памяти вашего сервера, тогда это будет очень полезно.