复杂业务下的架构设计和研发效率提升(笔记)

抽空重新看了一下今年的GMTC,读到链家郭晓铭的PPT:链家网移动端敏捷之术的时候忍不住写了这个笔记,大多数内容都是ppt上的原文。

大多数app存在的现象

  1. 业务简单
    • 业务覆盖城市范围小
    • 产品用户角色单一
    • 业务单一、未形成线上线下的闭环
  2. 团队工作方式传统
    • 团队规模小(人员密切配合,不存在业务线的分工)
    • 瀑布式开发(版本需求比较稳定,在开发过程中很少调整)
    • 手工打包上线(产品投放渠道少,发版节奏平缓,测试盒上线均靠手工打包)
  3. 架构简单 MVC架构
    • 通用设计,学习和维护成本低。
    • 对复杂业务不适应。业务逻辑变得复杂的时候,Controller将变得越来越大

第一阶段

  1. 地域业务差异
  2. 业务增多,内容型业务的形态多变
  3. 人员增多,人均产出下降,代码质量堪忧

基于短链的配置化

方法:

  1. Sever端下发城市配置(包含icon、标题、跳转短链、功能开关等)
  2. 跳转短链注册表(保存短链pattern与页面的类别、类参数名、短链参数名、默认参数值、跳转方式等的对应信息)
  3. 短链解析和页面跳转(使用注册表中的短链pattern做正则匹配,根据匹配到的消息创建页面并用对应的跳转方式打开)

优点:

  1. 更统一(各个业务的解析和跳转逻辑由跳转同意引擎同意处理)
  2. 更灵活(城市配置由路由端下发,城市业务范围的调整不依赖发版)
  3. 扩展性强(快速支持新增城市,且对新业务的支持不影响旧的功能)

业务快速上线和调整

使用Native + H5 的方式实现。

Native作为重点业务体验的保证。 H5负责内容型业务和运营活动

  1. 小巧清晰,不依赖第三方解决方案
  2. 消息传递安全,通过bridge注入参数信息,不是url
  3. 两端方案统一

项目质量缺乏保障

  1. 开发流程优化
    • 代码规范形成(代码风格一致,提高可读性;统一的入口参数校验,异常处理等,提高健壮性)
    • CodeReview(同步开发人员对代码和设计的理解;提前发现问题)
    • 敏捷开发模式(随时交付,提早反馈)

第二阶段

  1. 多个业务团队并行开发
  2. 多个新产品需要快速上线(需要能够复制已有功能,快速上线)
  3. 对接后端团队越来越多(沟通成本高,发版风险大;不同团队接口数据格式差异大,客户端数据解析和校验逻辑复杂)

组件化

组建间的调用方案

组建: 各个组件之间相互独立,不直接调用,而是通过中介者Component Mediator相互调用

CM:按组建拆分,每部分为该组建支持的调用方式

组建接口: 各组件针对组件间调用做相应接口类。CM通过反射机制调用该接口类的相应方法。

组件化过程中的风险控制

  1. 代码仓库分离
    • 主工程代码、公共模块代码、以及各业务组件代码仓库分离
  2. 权限控制
    • 为单个业务团队配置公共模块代码,以及其他业务代码的只读权限
  3. 建立接口类的命名规范
    • 对组件接口类名以及接口接口方法的命名统一规范,降低开发成本
  4. 接口类的CodeReview
    • 接口类出错的影响范围相对较大,需要业务负责任对接口类做重点review
  5. 热修复
    • 紧急修复组件化过程中造成的线上问题;每个补丁不允许超过1个版本

API团队引入

引入API团队可以减少客户端和多个Sever端交互。

  • 沟通成本降低
  • 发版风险降低
  • 业务逻辑简化

移动端与后端配合开发流程

第三阶段

  1. 插件化(用户对产品功能做个性化定制,减少安装包体积,降低发版成本)
  2. 跨平台技术(最小的成本覆盖到两个平台,避免重复开发)
  3. 安全性(更多交易内容线上化)
CepheusSun wechat
订阅我的公众号,每次更新我都不一定会告诉你!
坚持原创技术分享,您的支持将鼓励我继续创作!
0%