架构面临的问题
架构设计旨在解决特定领域不同发展阶段的业务问题。不同技术领域(如移动端、服务端)的架构存在明显的技术差异,但也有很多相似性。架构不仅面临技术挑战,还要应对组织业务膨胀的熵增。移动端需要利用有限的设备资源设计符合小屏幕的架构。典型架构设计包括 Android OS、iOS 和 Flutter,分别展示了不同平台的架构特点。
常见的架构手段
常见的架构手段包括小的架构手段(如 MVC/MVP/MVVM、DataBinding、IoC)和大的架构手段。不同架构手段的共同目标是高内聚低耦合。找到适合业务场景的架构而不是炫技滥用,一个复杂的系统是多种架构模型的组合体。
架构演进的例子
架构随业务发展由简单变得复杂,可以分为孕育期、婴儿期、学步期、青春期、壮年期、稳定期和贵族期。每个阶段面临不同的挑战和解决方案:
- 孕育期:实现基本功能,如无限刷列表。
- 婴儿期:功能变多,需要拆分模块,如支持图文混排、账号体系。
- 学步期:业务场景变多,需要拆分业务,如支持发布文章、视频,拆分出视频业务和中台业务。
- 学步期:采用分层架构,表现层、业务层、持久层和存储层。
- 青春期:不同业务和模块混合,需要解耦,采用事件驱动架构,如事件发布、事件处理器和事件队列。
- 壮年期:业务变得更加内聚,需要灵活插拔,采用微内核架构,如宿主容器和插件。
- 稳定期:用户规模和团队稳定,历史包袱重,采用微服务架构,如请求接入、服务调度和微服务。
- 贵族期:期望高,事情难,需要对抗架构衰老,从我做起,如持续重构、规范使用。
- 官僚期:代码混乱无序,不同形态的架构。
成为优秀架构师
成为优秀架构师需要定义问题、确定架构、方案落地和结果复盘。认清问题的类别和层级,理性看待技术债的产生和应对,勤于编码,持续优化架构和工程要素。
技术基建工具流程易使用
- 平台接入工具便捷,本地工具随取随用。
- 通用场景直接复用,特殊场景沉淀基建。
- 线下监测分析,线上监控止损归因。
- 工程结构简洁清晰,技术栈保持先进性。
- 服务注册发现机制,公共模块下沉机制。
- 接口使用规范一致,业务外部依赖收敛。
- 业务复用的清单制,业务集合的准入制。
- 外围能力可插拔扩展定制,有范式样例文档完备。
- 侵入式改造少,数据链路闭环,默认实现兜底。
品质优化可复制
- 质量基建强约束,整体架构高可用。
- 多个业务之间低耦合,扇入扇出标准化。
- 业务集合可维护,单个业务具备好的扩展性。
- 支持傻瓜式集成,宿主依赖接口化。