Функция Google Cloud Cold Start с элементами пользовательского интерфейса
В настоящее время я делаю приложение для Интернета и iOS, и на веб-стороне у меня есть куча логики в Javascript, которая изменяет базу данных Firestore, которую я имею. Я подумал, что переместил бы эту логику в несколько облачных функций, чтобы я мог вызывать их как из своего веб-клиента, так и из iOS-клиента, и мне нужно было бы написать логику только один раз, в nodeJS вместо того, чтобы писать ту же логику один раз для веб-приложения в Javascript и один раз для приложения iOS в Swift. Я получил облачные функции для работы и обновления базы данных, но проблема в холодном запуске. На моей веб-странице есть элементы пользовательского интерфейса, которые следят за обновлениями в моей базе данных Firestore и меняют их всякий раз, когда происходят изменения. Прежде чем эти изменения были бы мгновенными, но теперь с облачными функциями я должен дождаться завершения холодного запуска, прежде чем обновится база данных и, следовательно, пользовательский интерфейс. Это приводит к тому, что пользовательский интерфейс не реагирует на входные данные немедленно.
Я хотел перейти к облачным функциям, поэтому мне нужно было бы написать логику только один раз, но разве это не тот случай использования? (Обновление элементов пользовательского интерфейса в режиме реального времени). Стоит ли пытаться настроить работу cron, чтобы пинговать мои функции, чтобы они всегда были "живы"? Как я могу увеличить функции "живого времени" после холодного запуска, так как мои, кажется, умирают довольно быстро? Какие-нибудь общие советы или рекомендации по решению этой проблемы?
Спасибо, парни.
1 ответ
Вы не можете эффективно контролировать поведение холодного запуска облачных функций. Это то, что вы должны будете принять как компромисс.
Единственное, что вы можете эффективно сделать, это минимизировать объем работы в глобальной области действия для ваших функций и перемещать эту работу внутри каждой функции по мере необходимости. Это создает ситуацию, когда каждая функция имеет свое собственное поведение холодного запуска, которое не разделяется или не дублируется всеми вашими функциями.