齐毅架构设计感悟分享
大约 10 分钟
齐毅架构设计感悟分享
没有场景的架构设计都是不切实际的
核心观点
- 架构设计必须解决具体问题。
- 发现问题的复杂性是根本,这些包含在用户关键需求中
- 架构师在没有询问具体需求前给出的架构是不可信的。
具体案例
- 老旧系统的更新
- 背景: 亚信为联通开发的系统已经使用12年,架构陈旧。
- 核心复杂度: 技术落后,如何通过有效和可控的方式将老技术更新为现有主流技术的新架构。
- 资产管理平台的报表问题
- 背景: 某银行通过外包公司开发的资产管理平台报表结果错误。
- 核心复杂度: 研发团队对业务不熟悉,无法有效维护系统。
- 解决方案: 强化业务培训,加强代码的合规、测试力度及覆盖度。
- 万能表单应用
- 背景: 允许用户自定义表单项和业务规则逻辑。
- 核心复杂度: 系统的灵活性。
- 解决方案: 引入规则引擎或微内核机制进行系统架构设计。
架构设计中的解耦
核心观点
- 解耦是架构设计中无时无刻不需要考虑的问题。
- 解耦不仅在技术层面,也涉及团队职责和开发联调的友好性。
具体案例: 异构数据同步
- 问题: 两个团队之间的数据同步,团队A调用团队B的ES接口,产生耦合。
- 解决方案: 利用阿里的Canal监听原始数据库,将数据变更消息发往MQ队列,通过MQ解决团队间和程序间的解耦问题。
尊重架构的演化规律
尊重 爬->走->跑->跳 的自然规律,好架构一定是演化而的
核心观点
- 好架构是演化而来的,不存在万金油架构。
- 架构设计应随着公司的业务发展和规模变化而调整。
具体案例: 宜信项目架构演化
- 早期: 单体架构,快速构建。
- 业务发展: 增加F5负载均衡器,挂载Nginx或VIP方案,强化用户认证和验签。
- 进一步发展: 数据库动静分离、多机缓存、异步传输,优化数据库层面。
避免炫技
核心观点
- 架构设计不应为了炫技而复杂化,否则公司会为之买单。
- 项目经理和架构师不应利用职务之便验证个人想法。
具体案例: 工单系统设计
- 背景: 企业合作部需要一个工单系统。
- 问题: 新招聘的架构师为了彰显能力,设计了复杂的架构(MQ、微服务、注册中心、配置中心)。
- 结果: 设计成本高,业务量低,不合适。最终采用单点开发,增加进程监控,保证基本可用。
善于聆听
核心观点
- 好的架构师是善于聆听的高手,能揣测客户背后的需求。
- 与客户交流时要学会说人话,避免专业术语。
具体案例: 顶级管钱部门项目
- 背景: 项目开发过程中遇到上层阻挠。
- 问题: 领导希望在系统中体现职责权限功能。
- 解决方案: 揣测领导需求,开发相关功能,顺利推进项目。
总结
- 架构设计的核心在于解决具体问题
- 解耦是设计中无时无刻不需要考虑的问题。
- 好的架构是演化而来的,架构设计应避免炫技,善于聆听客户需求。
- 通过实际案例,分享了在架构设计中的经验和教训,强调了架构师的综合能力和沟通技巧。