Mobile Development 13 min read

Containerization Architecture in Mobile Applications

The article outlines a mobile‑app containerization architecture that builds on existing component frameworks, emphasizing standardized, isolated virtualized containers, dynamic module rendering via Flexbox‑based configuration trees, a multi‑layer logical and protocol stack for layout, data, lifecycle and events, and a streamlined development‑to‑deployment workflow.

HelloTech
HelloTech
HelloTech
Containerization Architecture in Mobile Applications

技术方案

面临这些痛点和挑战,我们想到了一些解决方案,首先介绍一下技术选型的思考。一是我们要做一个架构,需要知道架构的能力边界在哪里,要解决怎样的困难和实现怎样的目标。这里列出了现在成熟的客户端APP的技术体系。从服务端来看,主要包括几个能力,最底端的是中间件的能力抽象,上面是业务微服务的能力抽象,再上面是面向端的能力抽象,比如我们通常会做一层BFF来面向端的接口封装,一层CDN来面向端的数据高效访问的能力抽象。从客户端来看,现在成熟的APP基本都有一套自己的组件化框架,做一些通用能力的沉淀,我们想要设计和实现的容器框架就是在组件化框架的上面,它的主要目的是承载各个核心页面的展现和相关的业务逻辑,这是整个容器的能力边界的大致界定。

技术选型的两点思考

我们希望这个容器首先是标准化的,通过标准化的手段来尽量抹平业务的复杂性带来的问题。二是隔离的虚拟化技术,尽可能提高自身运行的稳定性。这是容器的两个特点,也是我们选定了在这个范围做容器封装的技术。

动态模块的实现和优化

上图是容器渲染层动态模块的渲染过程。首先还是获取配置,也是刚才整个页面配置里单一模块的配置信息。这个信息里的主要格式有两部分,一是节点信息,决定了这一个渲染素里面每个节点的元素类型,它可能是一个空的容器、一个文本,也可能是一个图片。二是布局信息,我们用Flexbox的语法来描述所有节点之间相互的关系。我们把配置信息解析出来生成了配置树,就是把配置文件变成数据模型。接着是动态绑定,最后会生成一个渲染树。在这个过程中会遇到一些性能问题,如中低端的安卓机,渲染性能较iOS机型会出现明显下降。

容器逻辑层

这张图是容器逻辑层的模型图,可以从几个维度理解容器逻辑层的运作方式。第一是初始化,容器在启动时进行初始化,整个模块首先要进行自注册,我们在适当时会获取相应的配置数据,接下来会走前面介绍的流程,根据模块的ID做模块的初创建,根据算法来判断是不是要上首屏,然后进行模块上屏。

容器协议层

第三层是容器协议层,我们设计这一层的意义是想让模块开发更加标准化,无论是平台方还是业务方,能降低业务开发的复杂度。我们主要抽象了四层容器协议层,首先容器的布局协议和数据协议相对比较好理解,布局协议解决了布局的一些信息,如模块单元的大小、位置。容器的数据协议就是容器配置数据的填充,如单元格数量和内容;生命周期协议,包括创建、加载、显示、消失和销毁。生命周期协议有很多应用的场景,比如性能监控和曝光计算。事件协议,事件总线的运行是依托事件协议的,比如像模块事件、定时器事件。

研发流程的改进

新的系统对研发、测试、运维的工作方式都会带来很多的变化,很多环节上进行了生产提效。绿色标注的是移动端常规的发版流程,我们看到涉及到的节点和团队都非常多,跨团队的合作会遇到很多问题,发版速度并没有想象那么快。在新的系统下,我们通过在线系统做的变更,这个环节的节点就会少很多,而且更新效率会快很多。

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Technical SolutioncontainerizationFrontend Architecturedynamic rendering
HelloTech
Written by

HelloTech

Official Hello technology account, sharing tech insights and developments.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.