返回
重构:司机端的技术改造之路
Android
2023-10-27 02:22:32
在 Uber,我们的使命是让交通变得无处不在、触手可及。为了实现这一目标,我们不断努力开发新的技术,为乘客和司机提供更好的体验。
司机端 APP 是 Uber 拼车业务的核心组件,它为超过 300 万司机提供收入,引导他们挣钱。2017 年,我们结合司机的反馈开始对司机端进行重新设计,并在 2019 年初推出 Carbon 版本。
在本文中,我们将重点讨论这次重构的旅程,分享我们在构建复杂系统时所遇到的挑战和经验。
技术选型
在开始重构之前,我们首先需要选择合适的技术栈。经过一番比较,我们最终选择了以下技术:
- React Native:用于构建跨平台的移动应用。
- Redux:用于管理应用程序状态。
- GraphQL:用于与后端服务器通信。
- Apollo Client:用于与 GraphQL 服务器通信。
- Jest:用于编写单元测试。
- Enzyme:用于编写集成测试。
架构设计
在选择好技术栈之后,我们开始设计应用程序的架构。我们采用了 RIBs(Redux in Browser)架构,它是一种用于构建复杂 React Native 应用程序的架构。
RIBs 架构的主要思想是将应用程序分解成一系列独立的、可重用的组件。每个组件都有自己明确的职责,并且只与其他组件进行通信。这使得应用程序更易于维护和扩展。
挑战与经验
在重构司机端的过程中,我们遇到了许多挑战,也积累了许多经验。
挑战
- 跨平台开发: 由于 Uber 司机端需要同时支持 iOS 和 Android 平台,因此我们在开发过程中需要考虑跨平台兼容性。这给我们带来了一些额外的挑战,例如如何处理不同平台的差异。
- 复杂性: 司机端应用程序是一个非常复杂的系统,它需要处理大量的业务逻辑和数据。这使得应用程序的开发和维护变得非常困难。
- 时间压力: 我们希望尽快推出 Carbon 版本,因此我们面临着很大的时间压力。这使得我们不得不做出一些妥协,例如牺牲一些功能的完善度。
经验
- 团队合作: 司机端重构项目是一个非常庞大的项目,因此我们非常依赖团队合作。在项目过程中,我们组成了一个由工程师、设计师和产品经理组成的跨职能团队。团队成员之间紧密合作,共同克服了项目中的各种挑战。
- 敏捷开发: 我们采用了敏捷开发方法来管理项目。这使得我们能够快速迭代,并根据用户的反馈及时调整开发计划。
- 持续集成: 我们在项目中使用了持续集成工具,这使得我们能够快速发现和修复代码中的问题。
总结
司机端重构项目是一个非常成功的项目。Carbon 版本一经推出,就受到了司机的广泛好评。与之前的版本相比,Carbon 版本更加稳定、易用,并且具有更多的新功能。
司机端重构项目也给我们带来了许多宝贵的经验。我们相信这些经验将在我们未来的项目中发挥重要作用。