大型 Android 系统重构实战
黄俊彬
Thoughtworks 资深咨询师
2840 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
大型 Android 系统重构实战
15
15
1.0x
00:00/00:00
登录|注册

04|架构演进:架构是如何跟随业务演进的?

你好,我是黄俊彬。上节课,我带你学习了提高遗留系统代码可测试性的方法,今天我们就正式进入到专栏的分析设计篇。
其实说到分析设计,这里有两个问题是我们必须要先思考清楚的。第一个问题是“从哪里来”,只有清楚了解目前架构设计的问题,才能更好地设计解决问题的方案。否则,我们怎么能保证新的设计可以解决问题呢?
第二个问题是“到哪里去”,很多时候我们都在谈重构和架构改造,却经常忽略我们到底要将原有的系统重构成什么样子。当然,这一步我们或许不用一点一滴从头开始,参考业内成熟的方案也许是更加可靠高效的方式。
所以这节课我会通过一个产品的架构演进,带你感受一下架构是如何跟随着业务来演进的。通过这节课的内容,你可以更清楚地了解遗留系统的问题和演进方向,这样在做分析设计时,你的目标会更加清晰,设计也会更加从容。

Sharing1.0:单体架构

小菜作为架构师,刚加入到一个新的产品团队 Sharing,Sharing 目前采用的架构是单体架构。在项目初期,团队人员少,业务也相对简单,这种架构很好地支撑了业务的迭代。后面是 Sharing1.0 的架构图。
单体架构是常见的架构模式之一。通常所有开发人员基于单个模块进行开发,所有业务功能都集成在一起打包发布。单体架构非常适合团队规模小、业务复杂度低的产品,在项目起始阶段能快速迭代进行验证。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文通过一个产品的架构演进案例,展示了架构是如何随着业务发展而演进的。首先介绍了单体架构的特点和适用场景,以及在业务发展过程中可能出现的问题,如代码质量差和开发效率低。随后,文章详细介绍了组件化架构的应用,包括其优势和需要注意的问题。最后,文章还提到了插件化架构的应用,以及其适用场景和复杂度。 通过这些案例,读者可以清晰地了解不同架构模式的特点、适用场景和演进方向,以及在业务发展过程中可能出现的问题和解决方案。这对于正在进行架构设计或面临架构演进问题的技术人员来说,具有很高的参考价值。 文章还提到了容器化架构的设计,以及跨平台技术的应用,如Flutter。容器化架构能够满足多平台支持的需求,而跨平台技术则提供了统一的插件开发和运行环境,同时也带来了性能和学习门槛等方面的挑战。 总的来说,本文通过具体案例和技术细节,展示了架构演进的必要性和可行性,为读者提供了架构设计和演进方面的宝贵经验和参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大型 Android 系统重构实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • Geek_90e087
    我已经迫不及待了,快更

    作者回复: 期待一起完成专栏的学习,也欢迎分享给你的同事或朋友🤝

    2023-02-17归属地:广东
    3
  • Geek_2b5326
    老师,请问我们常用的mvc mvp mvvm等架构,跟您说的单体,组件化,插件化有什么区别和联系?

    作者回复: Hi,mvc mvp mvvm可以理解为组件内部的业务实现的分层架构;组件化、插件化可以理解为组件间的架构🤝。

    2023-03-10归属地:湖南
    1
  • xx鼠
    对于出海app,google不允许热更dex、so库,所以插件化热更、flutter热更都玩不转啊

    作者回复: google 本身就有支持热更新的方法, 可以参考一下(Play Feature Delivery 概览)https://developer.android.com/guide/playcore/feature-delivery?hl=zh-cn

    2023-09-18归属地:湖北
  • 刘军
    什么体量的App适合容器化?

    作者回复: Hi,刘军。容器化更重要的特点是能够较好支持动态的更新以及跨平台。所以我觉得更重要的是得从业务的角度来考虑,是否有此类的用户场景及需求。

    2023-02-20归属地:北京
    2
  • peter
    请教老师几个问题: Q1:复杂APP有多少人开发?按什么分配任务? 我只做过比较简单的APP,都是自己一个人完成的。老师您经历过的复杂一点的APP,会有多少开发人员?会超过五个人吗?如果是多人开发,按什么分配任务?按功能或者业务吗? Q2:组件具体是什么? 组件是功能模块吗?好像不太可能。组件是一个独立的软件吗? 比如是一个可执行文件或是库。更具体地讲,用AS开发时,组件是一个独立的module吗? Q3:实例APP是组件化还是插件化架构? 本专栏采用的示例APP是什么架构? Q4:容器化与特定语言有关吗? 从文中的介绍来看,容器化是由特定语言实现的,比如flutter。安卓、iOS自身都不支持容器化。这样理解对吗?

    作者回复: Hi,peter。非常开心收到你的问题总结。 Q1:我辅导过的团队,最多的Android开发团队人员超过100+,任务分配通常按照业务来划分。 Q2:详细见第5讲的组件划分与集成。 Q3:从单体架构重构为组件化架构。 Q4:有关,容器执行的肯定是某种特定的语言。

    2023-02-17归属地:北京
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部