3.4 国内使用 Firebase:网络、可用性与合规现实
先说清楚网络这一层的现实
Firebase 各项服务依赖 Google 的基础设施,而 Google 服务在国内网络的可用性长期存在波动。这意味着两件事:设备层面,开发与使用通常需要自行解决网络连通性问题;面向公众提供服务,则涉及企业合规使用的自行评估。本书只陈述现实、讨论架构思路,不提供也不讨论任何绕过手段,相关责任在使用方自己。
把这层现实摆在最前面的目的不是劝退,而是让架构决策建立在真实约束之上:网络可用性是一个不可控变量,核心业务链路不应该押在不可控变量上。这个判断不针对 Firebase 一家,任何在当前环境下可达性无法自主保障的服务都适用。
面向国内用户:核心链路为什么不适合押在 Firebase 上
对国内用户为主的 App,下面几条链路的风险要单独评估:
| 链路 | 风险点 | 影响表现 |
|---|---|---|
| 推送 | 通道连通性不稳定,厂商通道各有差异 | 通知时灵时不灵,到达率没保障 |
| 登录 | 部分登录方式依赖境外服务 | 登录流程卡住,转化直接受损 |
| 数据读写 | 跨境往返延迟叠加网络波动 | 页面加载慢,实时功能体验差 |
| 云函数 | 出网链路同受影响 | 关键后台逻辑可能不可用 |
核心链路的特点是:一旦挂掉就是事故。把登录、推送、交易这类主路径放在网络可达性无法保障的服务上,等于把业务稳定性外包给了环境。次要链路则宽松得多——数据分析、崩溃统计、A/B 实验这类即便短时不可用也不影响用户主流程的能力,不少团队仍在使用,丢的只是部分数据点,不是用户。
双轨制:一个被反复验证过的思路
实践中比较稳妥的做法,是按用户所在地区分轨:
- 国内用户走国内方案:国产 BaaS 平台或自建后端,推送走厂商通道,登录走国内身份服务
- 海外用户走 Firebase:认证、数据库、云函数、分析照常用,生态成熟,开发效率高
- 业务层做抽象:数据访问、推送、登录的接口定义保持统一,底层两套实现按环境切换
- 数据边界划清:两边各自闭环,避免频繁跨境同步带来延迟与合规的双重压力
双轨的代价是维护两套基础设施,运营成本肉眼可见地增加,业务代码必须保持抽象干净,否则越写越乱。如果产品明确只服务一个市场,那就单轨走到底,不必为了技术栈统一硬做兼容。此外还有折中形态:以海外为主、少量国内用户的产品,可以主体继续用 Firebase,只把登录与推送两条链路单独换成国内方案,改动面最小。
合规提醒:这部分不能省
面向国内提供互联网服务,涉及服务器与数据时至少要关注三类要求:数据出境的评估要求、互联网服务的备案要求、用户数据本地化存储的要求。这类规则更新频繁,执行口径也在变化,本节不展开具体条文,动手前请以最新法规与平台政策为准,必要时咨询法务或合规团队。技术方案的选型可以迭代,合规问题却往往没有重来的机会,这一项建议前置而不是补课。
用户在哪里,建议怎么选
| 用户构成 | 建议方案 | 说明 |
|---|---|---|
| 纯国内用户 | 国产 BaaS 或自建 | 全链路国内闭环,可达性可控 |
| 纯海外用户 | Firebase 全家桶 | 生态成熟,开发效率高 |
| 国内外并存 | 双轨制 | 业务层抽象,两套底层按环境切换 |
| 海外为主、少量国内 | 主 Firebase,国内链路单独补 | 只把登录与推送换成国内方案 |
表格只是起点。最终方案要结合团队技术栈、预算、合规要求与产品节奏综合判断,唯一不建议的是明知约束存在还把核心链路硬押上去。选型可以迭代,核心链路的大迁移代价最高,这一步值得多花时间想清楚。
