「产品矩阵平台」平台通用能力中心

梳理用户、认证、配置、文件、通知、日志、审计、权限策略与 GitOps 下发九类平台通用能力,说明它们如何支撑多产品复用。

第三章 平台通用能力中心

平台通用能力中心的价值,是把每个产品都会重复建设的能力沉淀下来,让新业务不再从登录、上传、通知、权限、审计重新开始。

判断一个能力是否应该进入平台中心,可以看三个问题:

  1. 是否被两个以上产品重复使用?
  2. 是否有统一治理、安全或合规要求?
  3. 是否会影响开发效率、运营效率或商业化效率?

如果答案是肯定的,就不应该放任各产品线各自实现。

3.1 用户中心与账户体系

用户中心不是简单的 users 表,而是跨产品识别同一个人的能力。

对象含义示例
Account平台账户主体手机号、邮箱、企业账号
Identity第三方身份微信 OpenID、Apple ID、GitHub
Profile用户资料昵称、头像、地区
Membership用户与租户关系企业成员、团队角色

在微信生态中,OpenID 通常与 App 绑定,UnionID 才适合做跨应用合并。平台要允许一个 Account 绑定多个 Identity,同时保留解绑、换绑和冲突处理流程。

典型合并规则:

场景处理方式
同一手机号登录两个 App绑定到同一 Account
同一 UnionID 首次进入新 App自动创建 Identity 并关联
手机号已存在但微信身份未绑定二次确认后绑定
企业成员离职解除 Membership,不删除 Account

3.2 统一认证授权中心

认证解决“你是谁”,授权解决“你能做什么”。很多平台的问题,是把这两件事混在 Controller 里,最后每个接口都有一段不一样的判断逻辑。

建议认证中心提供:

能力说明
SSO管理台、多产品后台一次登录
OAuth2第三方应用授权访问平台资源
Token ServiceAccess Token 与 Refresh Token 生命周期
Session 管理设备列表、踢下线、异常登录提醒

授权可以采用 RBAC + ABAC:

RBAC:角色决定基础权限,例如 admin、editor、viewer
ABAC:属性决定上下文权限,例如只能编辑本部门内容、只能查看当前租户数据

RBAC 易理解,ABAC 更灵活。平台早期可以先落 RBAC,但权限表达模型要给 ABAC 留位置。

3.3 多应用配置中心

配置中心要管理的不只是环境变量,还包括产品行为。

配置层级示例
平台默认默认上传大小、默认短信渠道
租户覆盖企业 Logo、默认语言、套餐限制
App 覆盖小程序主题、入口开关
运行时灰度新版编辑器、实验功能

配置必须有版本。一次配置变更应该记录:

  1. 修改前后的 diff;
  2. 影响租户和 App;
  3. 操作人和审批人;
  4. 发布时间;
  5. 回滚版本。

否则配置中心会变成一个没有历史的“在线改数据库”。

3.4 文件中心

文件中心的难点不是上传,而是生命周期。

阶段需要处理的问题
上传前类型限制、大小限制、权限校验
上传中分片、断点续传、病毒扫描
上传后缩略图、转码、元数据、CDN
使用中私有访问、签名链接、防盗链
废弃后归档、清理、引用检查

文件表建议至少包含:

字段含义
tenant_id租户隔离
bucket存储桶
object_key对象存储路径
mime_type文件类型
size文件大小
checksum去重和完整性校验
visibilitypublic / private
metadata图片宽高、视频时长等

3.5 通知中心

通知中心要统一处理“什么时候通知、通知谁、用什么渠道、失败怎么补偿”。

渠道典型用途注意点
短信验证码、关键告警频率限制、签名模板
邮件账单、邀请、报表退信处理、域名信誉
订阅消息小程序服务通知用户授权、模板审核
Webhook第三方系统集成签名、重试、死信
站内信产品内消息已读状态、聚合策略

通知模板应支持变量、语言、渠道和版本。模板上线前要有预览和测试发送,否则一次变量名写错就会批量发出难看的消息。

3.6 日志中心

日志中心至少分三类:

日志类型用途示例
应用日志排查程序异常error、panic、dependency timeout
访问日志分析接口行为path、status、latency、request_id
业务日志追踪关键动作order_paid、member_invited

所有日志必须带 trace_idtenant_idapp_id。没有这些字段,出了跨租户问题时,日志几乎无法定位。

3.7 审计中心

审计日志和普通日志不同。普通日志服务工程排障,审计日志服务合规、追责和取证。

审计记录建议包含:

字段说明
actor谁操作
action做了什么
resource操作对象
before / after关键字段变化
ip / user_agent来源信息
reason审批或操作原因

审计日志不应随业务表删除而删除。对高合规场景,应采用追加写、不可变存储或冷归档。

3.8 权限与策略中心

当产品矩阵扩展到多个后台、多个团队、多个租户时,权限规则会快速膨胀。策略中心要把权限判断从业务代码中抽离出来。

权限表达可以采用:

subject: user:123
action: content:update
resource: article:456
context: tenant=acme, app=cms, department=editorial

策略判断结果不只返回允许或拒绝,还应返回原因,方便后台展示和排障。

3.9 GitOps 配置下发

平台配置不一定都要在 UI 中直接修改。对基础设施、网关路由、告警规则、K8s 配置,GitOps 更适合。

推荐流程:

graph LR
    A[修改配置仓库] --> B[Pull Request]
    B --> C[Review + CI 校验]
    C --> D[Merge]
    D --> E[ArgoCD 同步]
    E --> F[集群生效]

这种流程把配置变更纳入代码审查和回滚体系,尤其适合生产环境。

3.10 通用能力中心建设顺序

不要一开始就把所有中心都做成大平台。更合理的顺序是:

阶段优先建设
0 到 1用户、认证、文件、通知
多产品阶段配置、权限、日志、审计
SaaS 阶段租户、计费、Webhook、开放 API
生态阶段插件市场、开发者平台、策略引擎

平台化不是一次性工程,而是一组不断被业务验证的公共能力。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页