返回

重构:司机端的技术改造之路

Android

在 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 版本更加稳定、易用,并且具有更多的新功能。

司机端重构项目也给我们带来了许多宝贵的经验。我们相信这些经验将在我们未来的项目中发挥重要作用。