Пакеты Firebase SDK для Cloud Firestore выполняют локальное сохранение (кэширование) элементов, извлеченных из базы данных. Постоянство включено по умолчанию для Android и iOS, и вы можете программно включить его для Интернета (в настоящее время экспериментальный). Такое локальное кеширование позволяет клиенту избегать запроса документов с сервера, что, очевидно, быстрее и дешевле, чем через какую-либо конечную точку API для запроса данных каждый раз, когда это необходимо.
Существует также тот факт, что SDK будет выдавать вам обновления в реальном времени данных по мере их изменения на сервере, если к вашему документу или интересующему запросу прикреплен прослушиватель. Вы не сможете скопировать это, если напишите все это в облачных функциях. Вы потратите огромное количество времени, пытаясь продублировать и масштабировать это поведение с помощью socket.io или чего-то подобного в бэкэнде, которым вы управляете.
Вы могли бы написать все приложение, которое будет управляться через созданные вами конечные точки API. В этом нет ничего плохого, если это отвечает вашим потребностям Но вы напишите больше кода, пожертвуете обновлениями в реальном времени, и, скорее всего, это будет медленнее и дороже, чем позволяет оптимизировать клиентские SDK для вас.