Самый дружественный способ сделать это - войти в систему. Когда пользователь аутентифицируется, проверьте флаг режима обслуживания в базе данных и не позволяйте ему войти в систему. Пусть активные пользователи продолжают использовать приложение до тех пор, пока они не выйдут из системы или не истечет время их сеанса. Вести журнал активности, чтобы вы могли знать, когда истек срок действия всех пользователей.
Конечно, это означает, что с момента, когда вы переведете приложение в режим обслуживания, и когда оно будет эффективно готово, потребуется время, но не стоит загружать активного пользователя.
Если шаблон использования вашего приложения делает это таким образом, что эта методология не гарантирует отсутствие активности в разумные сроки, вы можете добавить таймаут поверх этого. Периодически проверяйте один и тот же флаг обслуживания для запроса. Не должен быть каждый запрос, но каждые пять минут или около того. При необходимости вы также можете кэшировать значение режима обслуживания локально в течение разумного периода времени (несколько минут).