1、架构师如何考虑软件的可持续迭代 讲师讲师自我介绍自我介绍段和尘段和尘毕业于中科院,十二年从事移动端Android研发。百度创业魅族创业腾讯字节。目前负责头条的Android客户端架构。又失败了咋办?在岁月中远行 几个小问题几个小问题1.你所了解的架构是什么?A.一个完美的设计,能够解决各种软件问题 B.没有完美的架构,需要不断对实现做重构2.2.你觉得架构师们每天都在干什么你觉得架构师们每天都在干什么?A.每天都根据用户的需求,讨论如何做软件设计 B.每天都在填坑,填不完的坑 0101020203030404架构面临的问题架构面临的问题架构常见的手段架构常见的手段架构演进的例子架构演进的例子成
2、为优秀架构师成为优秀架构师01架构面临的问题架构面临的问题 不同产品生命周期的架构问题不同产品生命周期的架构问题稳定期稳定期孕育期孕育期我有一个想法我有一个想法婴儿期婴儿期如何抽象建模如何技术选型学步期学步期青春期青春期壮年期壮年期适应业务变化应对代码膨胀快速融合代码确定工程架构贵族期贵族期官僚期官僚期传说中的屎山多方跑马圈地流程没完没了各方拼命甩锅不断重构优化落地标准规范消亡期消亡期代码已经腐朽躺平摆烂逃离咱们重新来过咱们重新来过成长期成长期:如何快速成长如何快速成长?衰退期衰退期:如何对抗衰老如何对抗衰老?不同技术领域的架构问题不同技术领域的架构问题前端前端 语言语言:Js/Ts/Dart
3、/H5/Css.框架框架:RN/Angular/Vue/jQuery.组件组件:ElementUI/AmazeUI服务端服务端 语言语言:Java/Python/Go.框架框架:Spring/Flask/Beego.平台平台:CentOS/Windows/客户端客户端 语言语言:Java/Kotlin/Swift/C#.框架框架:GMS/Flutter/Cocos 平台平台:Android/iOS公共问题公共问题 编程思想编程思想:OOP/AOP/IoC 问题分解问题分解:按业务按业务/按技术按技术 领域建模领域建模:接口设计接口设计/DSL/服务治理服务治理:模块化模块化/容器化容器化 流程
4、机制流程机制:敏捷开发敏捷开发/单测手段单测手段 架构标准架构标准:公约文档公约文档/数据监测数据监测交叉问题交叉问题 跨端调用跨端调用:JsBridge/JNI 多端一致多端一致:统一接口层统一接口层/统一实现层统一实现层 数据通信数据通信:IDL协议协议/压缩压缩/安全安全只要业务继续发展,越来越复杂就是必然趋势。理解成本变高理解成本变高 宏大的规模是不好理解的 复杂的结构是不好理解的预测难度变大预测难度变大 业务变化不可预测 技术变化不可预测 还有一些其他挑战还有一些其他挑战典型的架构设计 Android OS应用框架层应用框架层App开发者直接使用的接口层,UI的实现、数据的处理、资源
5、的使用,都是利用这一层的APIBinder IPC提供跨进程访问的能力,App可以高效的访问由系统进程暴露的能力。App进程与系统进程之间的通信是典型的C/S模型。系统服务系统服务提供窗口管理、相机、音视频等重要的系统能力,包含各种子系统,内部逻辑十分庞大,往下调用HAL层封装的硬件能力;往上通过Binder暴露可以远程调用的API硬件抽象层硬件抽象层屏蔽底层不同驱动的差异,使得系统服务层可以快速适配到不同的硬件设备Linux内核内核CPU、内存、唤醒服务等重要的驱动实现都是基于该层操作系统的核心实现。典型的架构设计 iOS应用框架层应用框架层EventKit、GameKit、MapKit、P
6、ushKit图形图像层图形图像层ULKit、Animation、Graphics、Images核心服务层核心服务层Location、Motion、Health、GPS、Telephony、Foundation内核层内核层Bluetooth、Security、AccessoriesAndroidiOSActivityViewControllerIntentsSegues/ViewControllersService“Background Mode”ContentProviderCoreDataLayoutsStoryboards and scenes典型的架构设计-FlutterUI框架层框架层