返回

哈啰动态化容器实现框架架构搭建与容器实现方案探讨

开发工具

哈啰动态化容器架构实践
哈啰的业务的多样性体现到APP页面上,我们会发现整个APP的页面设计呈现的方式发生了很大的变化。早些年哈啰APP页面的功能较为单一。随着业务的不断丰富,我们APP页面也变得越来越复杂,功能越来越多,这个时候就需要我们APP能支持业务组件的灵活定制,也就是我们要能实现业务功能的自由组合和快速发布迭代。我们如果采用传统的研发模式,那么后期的研发成本和维护成本将会是巨大的,业务变更慢,难以满足业务的快速发展需要。

我们结合哈啰APP的功能特点,调研业界几种主流动态化容器实现框架,选择了WebView+RN跨平台的方式作为我们的动态化容器实现方案。通过使用动态化容器方案,我们可以大大节省人力成本和提升研发效率,还可以动态下发业务组件代码,实现快速迭代,为业务保驾护航。

动态化容器的背景

项目背景

哈啰的业务正在快速的扩展,哈啰APP的架构也在随之发生演变。从单一业务,到现在涵盖出行、配送、商超、酒店等多种业务,整个APP的页面设计呈现的方式也发生了很大的变化。随着业务功能的增加,必然会带来开发和维护成本的急剧上升,如何保证APP的高性能、稳定性和扩展性,成为了一个亟待解决的问题。

技术挑战

  • 随着业务的不断丰富,APP的功能越来越多,传统的研发模式已经难以满足业务的快速发展需要。
  • 业务变更慢,难以满足业务的快速迭代要求。
  • 人力成本和维护成本巨大。

动态化容器的解决方案

动态化容器架构

哈啰的动态化容器架构如下图所示:

[图片]

动态化容器架构主要由以下几个部分组成:

  • 容器引擎: 容器引擎负责管理容器的生命周期,包括容器的创建、启动、停止和销毁。
  • 容器服务: 容器服务负责提供容器相关的服务,包括容器的注册、发现和负载均衡。
  • 业务组件: 业务组件是运行在容器中的业务逻辑代码,可以是Web应用、原生应用或混合应用。

容器实现方案

哈啰的动态化容器实现方案采用了WebView+RN跨平台的方式。

  • WebView: WebView是iOS和Android平台上通用的Web视图控件,可以用来加载和渲染HTML、CSS和JavaScript内容。WebView可以与JavaScript交互,因此我们可以通过JavaScript来控制WebView的内容。
  • RN: RN是Facebook开源的跨平台移动应用开发框架,它使用JavaScript来编写代码,并可以编译成原生代码。RN可以与原生组件交互,因此我们可以通过RN来构建复杂的原生应用。

哈啰的动态化容器实现方案如下图所示:

[图片]

哈啰的动态化容器实现方案主要包括以下几个步骤:

  1. 在APP中集成动态化容器SDK。
  2. 将业务组件代码打包成JavaScript或RN代码。
  3. 将打包好的JavaScript或RN代码上传到容器服务。
  4. 在容器引擎中创建容器,并将业务组件代码注入到容器中。
  5. 启动容器,并加载业务组件代码。

动态化容器架构实践带来的收益

哈啰的动态化容器架构实践带来了以下收益:

  • 大大节省人力成本和提升研发效率: 动态化容器可以实现业务组件的自由组合和快速发布迭代,从而大大节省人力成本和提升研发效率。
  • 实现快速迭代: 动态化容器可以动态下发业务组件代码,从而实现快速迭代,为业务保驾护航。
  • 提升APP的性能和稳定性: 动态化容器可以将业务组件隔离在沙箱中,从而提升APP的性能和稳定性。
  • 扩展性强: 动态化容器可以支持多种类型的业务组件,具有很强的扩展性。

总结

哈啰的动态化容器架构实践取得了良好的效果,大大节省了人力成本和提升了研发效率,实现了快速迭代,为业务保驾护航。动态化容器架构具有很强的扩展性,可以支持多种类型的业务组件,是哈啰APP未来发展的技术基石。