序言
本周5月15日,MegaEase创始人兼CEO、知名架构师、CSDN 资深博主陈皓(网名:左耳朵耗子)于13日去世,享年47岁。之前听过他的极客时间《左耳听风》,个人觉得还是有点收获的。
CoolShell——陈皓
写这篇文章的目的是希望陈皓在架构之路上的一些经验能够被大家参考和借鉴。
文章链接:我做系统架构的一些原则——陈皓
下面引用他的一些建议和原则:
- 原则一:关注于真正的收益而不是技术本身
- 原则二:以应用服务和 API 为视角,而不是以资源和技术为视角
- 原则三:选择最主流和成熟的技术
- 原则四:完备性会比性能更重要
- 原则五:制定并遵循服从标准、规范和最佳实践
- 原则六:重视架构扩展性和可运维性
- 原则七:对控制逻辑进行全面收口
- 原则八:不要迁就老旧系统的技术债务
- 原则九:不要依赖自己的经验,要依赖于数据和学习
- 原则十:千万要小心 X – Y 问题,要追问原始需求
- 原则十一:激进胜于保守,创新与实用并不冲突
下面是上面文章的一个概要。
原则一:关注于真正的收益而不是技术本身
- 是否可以降低技术门槛加快整个团队的开发流程
- 是否可以让整个系统可以运行的更稳定
- 是否可以通过简化和自动化降低成本
以应用服务和 API 为视角,而不是以资源和技术为视角
需要有一种自顶向下的,整体规划,统一设计的方式,才能做到整体的提升。
原则三:选择最主流和成熟的技术
- 尽可能的使用更为成熟更为工业化的技术栈,而不是自己熟悉的技术栈
- 选择全球流行的技术,而不是中国流行的技术
- 尽可能的使用红利大的主流技术,而不要自己发明轮子,更不要魔改
- 绝大多数情况下,如无非常特殊要求,选 Java基本是不会错的
原则四:完备性会比性能更重要
- 使用最科学严谨的技术模型为主,并以不严谨的模型作为补充
- 性能上的东西,总是有很多解的
原则五:制定并遵循服从标准、规范和最佳实践
- 服务间调用的协议标准和规范
- 一些命名的标准和规范
- 日志和监控的规范
- 配置上的规范
- 中间件使用的规范
- 软件和开发库版本统一
- … …
原则六:重视架构扩展性和可运维性
- 通过服务编排架构来降低服务间的耦合
- 通过服务发现或服务网关来降低服务依赖所带来的运维复杂度
- 一定要使用各种软件设计的原则
原则七:对控制逻辑进行全面收口
- 流量收口
- 服务治理收口
- 监控数据收口
- 资源调度有应用部署的收口
- 中间件的收口
原则八:不要迁就老旧系统的技术债务
- 与其花大力气迁就技术债务,不如直接还技术债。是所谓的长痛不如短痛
- 建设没有技术债的“新城区”,并通过“防腐层 ”的架构模型,不要让技术债侵入“新城区”
原则九:不要依赖自己的经验,要依赖于数据和学习
- 千万不要依赖于自己的经验做决定。做任何决定之前,最好花上一点时间,上网查一下相关的资料,技术博客,文章,论文等 。
- 同时,也看看各个公司,或是各个开源软件他们是怎么做的
- 然后,比较多种方案的 Pros/Cons,最终形成自己的决定,这样,才可能做出一个更好的决定
原则十:千万要小心 X – Y 问题,要追问原始需求
发生了一个问题X,但是你根据问题的表象,以为这是问题Y,于是尝试去找Y的答案,从而浪费大量的时间和人力。需要避免这种问题的产生,需要追根溯源找到原始问题。
原则十一:激进胜于保守,创新与实用并不冲突
进步永远来自于探索,探索是要付出代价的,但是收益更大。
总结
上面的原则或建议仁者见仁,智者见智,但总归是想大家一起收获一点经验。