Android App 开发的新范式:安居客 App 平台化之路
2023-10-20 01:00:25
安居客 Android App 作为国内头部房产类 App,随着业务的不断发展,单一 App 体量越来越大,架构的复杂度也越来越高。模块化/组件化重构虽然解决了业务快速迭代和耦合度高等问题,但也暴露出一些痛点,诸如:多项目管理不便、代码复用率低、测试效率低、部署效率低等。为了应对这些挑战,安居客 App 团队决定对 App 架构进行一次重大升级——平台化。
平台化背景
业务痛点
随着业务的发展,安居客 Android App 的体量越来越大,单一 App 的代码量已经超过 500 万行,项目庞大且复杂,给日常开发、维护和迭代带来了诸多不便。具体表现为:
- 多项目管理不便: 随着业务的不断扩展,App 需要引入越来越多的第三方依赖库,这些依赖库的版本管理和升级维护给多项目管理带来了很大挑战。
- 代码复用率低: 随着业务功能的增多,存在大量功能相似的代码,这些代码散落在不同的模块中,导致代码复用率低,维护成本高。
- 测试效率低: 由于项目庞大,集成测试耗时较长,且覆盖率难以保证。
- 部署效率低: 每次发版都需要编译整个 App,耗时较长,影响发版效率。
技术挑战
除了业务痛点之外,安居客 App 平台化改造还面临着诸多技术挑战:
- 如何设计一个通用、灵活、可扩展的平台架构: 平台架构需要能够支持多种业务场景,并且能够随着业务的发展不断演进。
- 如何将庞大的 App 代码平滑迁移到平台架构: 迁移过程中需要保证 App 的稳定性和性能。
- 如何建设一个完善的平台生态: 平台生态需要包括一套完善的开发工具、测试工具和运维工具,以支持平台的持续开发和维护。
平台化架构设计
架构分层
安居客 App 平台化架构采用分层设计,分为基础层、平台层和业务层三层。
- 基础层: 主要提供一些基础设施能力,比如网络请求、数据存储、日志收集等。
- 平台层: 主要提供一些通用功能组件,比如地图组件、支付组件、搜索组件等。
- 业务层: 主要承载业务逻辑,比如房源列表页、房源详情页等。
组件化设计
平台层和业务层都采用组件化设计,每个组件都独立开发、独立部署。组件之间通过接口进行通信,解耦了组件之间的依赖关系。组件化设计的好处有:
- 提高代码复用率: 通用功能组件可以被多个业务组件复用,提高了代码复用率。
- 降低耦合度: 组件之间的依赖关系通过接口定义,降低了组件之间的耦合度,提高了系统的可维护性和扩展性。
- 提升开发效率: 组件可以独立开发和部署,提升了开发效率。
服务化设计
基础层和平台层都采用服务化设计,每个服务都独立部署,对外提供 RESTful API 接口。服务化设计的好处有:
- 提高系统扩展性: 服务可以独立部署和扩展,提高了系统的扩展性。
- 提升部署效率: 服务可以独立部署,提升了部署效率。
- 降低耦合度: 服务之间通过 API 接口进行通信,降低了服务之间的耦合度,提高了系统的可维护性和扩展性。
平台化改造实践
迁移策略
为了平滑将庞大的 App 代码迁移到平台架构,安居客 App 团队采用了分步迁移的策略:
- 第一步: 将基础设施能力迁移到基础层,比如网络请求、数据存储、日志收集等。
- 第二步: 将通用功能组件迁移到平台层,比如地图组件、支付组件、搜索组件等。
- 第三步: 将业务逻辑迁移到业务层,比如房源列表页、房源详情页等。
工具建设
为了支持平台的持续开发和维护,安居客 App 团队建设了一套完善的平台生态,包括:
- 开发工具: 提供组件开发、测试和部署的工具。
- 测试工具: 提供组件集成测试和性能测试的工具。
- 运维工具: 提供组件监控、日志收集和报警的工具。
持续集成/持续部署
安居客 App 团队采用持续集成/持续部署(CI/CD)的流程,实现代码的自动构建、测试和部署。CI/CD 流程的好处有:
- 提高代码质量: 通过自动化的测试,提高了代码质量。
- 缩短发版周期: 通过自动化的部署,缩短了发版周期。
- 降低发版风险: 通过自动化的流程,降低了发版风险。
平台化收益
安居客 App 平台化改造后,取得了显著的收益:
- 提升开发效率: 组件化和服务化设计提高了开发效率,缩短了发版周期。
- 提高代码复用率: 通用功能组件的复用提高了代码复用率,降低了维护成本。
- 增强系统扩展性: 服务化设计增强了系统的扩展性,可以根据业务需求灵活扩展。
- 提升部署效率: 组件化和服务化设计提升了部署效率,缩短了发版时间。
结语
安居客 App 平台化改造是一个艰巨的系统工程,涉及到架构设计、技术选型、团队协作等多个方面。通过对业务痛点和技术挑战的深入分析,安居客 App 团队设计了一套通用、灵活、可扩展的平台架构,并通过分步迁移、工具建设、CI/CD 流程的持续优化,实现了 App 的平滑迁移。平台化改造后,安居客 App 的开发效率、代码复用率、系统扩展性、部署效率都得到了显著提升,为 App 的后续发展奠定了坚实的基础。