阿里毕玄:聊聊系统设计的套路

简介: 系统设计我一直觉得是远比Java编程技能更难多了的培训,很容易变成务虚课,全是一堆理论。从和学员的互动中学习到了很多,对系统设计的一些方法论进行抽象总结,所以我和这些捧场的学员们说其实是我们一起在共创系统设计的课程 。

作者:毕玄   
文章来源:微信公众号HelloJava

几个公众号转了我三年前写的我在系统设计上犯过的14个错,阅读量远比当年我发的时候高多了,感谢呀,那篇确实算得上心血之作了,哈哈,正好最近我在内部在做一个系统设计培训的尝试,有了更多感受,在这篇文章里再来写写。

系统设计我一直觉得是远比Java编程技能更难多了的培训,很容易变成务虚课,全是一堆理论,然并卵(想想一堆没怎么做过系统设计的人讲系统设计的课,这纯粹是开玩笑),所以以前从来不敢尝试做这方面的培训,不过今年由于一些情况,决定大胆尝试下,就在内部搞了个民间的培训,结果还真有不少同学捧场,在开始上这门课后,我觉得收获最大的搞不好是我自己,整理思路,从和学员的互动中学习到了很多,能更好的对系统设计的一些方法论进行抽象总结,所以我和这些捧场的学员们说其实是我们一起在共创系统设计的课程 。

我给系统设计培训定的目标是:

  1. 通过这堂课掌握一个思考框架,知道做系统设计的套路,系统设计不是简单的上来就画画框什么,必须按照一定的套路才能更好的进行系统设计;
  2. 拓宽知识面,系统设计中非常重要的是考虑的全面性,以更好的进行权衡取舍,所以能不能借助系统设计培训来拓宽知识面非常重要。

而要达到这样的效果,怎么去上这堂课挑战其实是不小的:

  1. 想要传达的思考框架到底是什么?怎么样变成不是纯粹的理论,务虚的传达,从而让大家能更好的掌握并真正的去运用这个思考框架?

以前真的没仔细的思考过系统设计的思考框架的问题,其实吧很多的系统设计的模板就是一个思考框架,但在不理解的情况下,是很难应用好的。

回顾了下自己做过的几个系统的设计,发现现在自己在做系统设计的时候确实是会按照一个套路去做,这个套路就是:

系统设计的目的->系统设计的目标->围绕目标的核心设计->围绕核心设计形成的设计原则->各子系统,模块的详细设计。

1). 系统设计的目的

是指做这个系统设计的目的到底是什么,很多人在做系统设计时,是搞不清为什么要做一个新系统的设计,或者为什么要做一个系统的重构/演进的设计,如果搞不清楚这个目的,后面的系统设计上是很容易形成偏差的,导致本来是为了解决一个问题,要去做新的系统或重构/升级旧的系统,但最后完全脱离了初心。

另外,还有很重要的一点是,一个大架构师是需要给很多人讲解系统设计的,只有理解并讲清了系统设计的目的,团队才能更好的去实现。

2). 系统设计的目标

围绕上面的目的,能不能形成一些可衡量的目标,从而确保最终系统实现和最初的目的不要出现太大的偏差,相信很多人都经历过最终的系统实现和系统设计偏差极大的现象,主要的原因基本都是没有制定衡量系统设计的目标,并在系统设计上让系统能透出这些目标的情况。

3). 围绕目标的核心设计

这步最重要的就是通过设计如何去实现上面的目标,这个环节中技术的专业、视野、全面的考虑、权衡取舍的主观原则、解题的思路,这是形成最后的核心设计的关键。

在核心设计的这个阶段中,会产生一些新的衡量设计最后实现情况的目标,这些也都要增加到系统设计中,确保最后的实现和设计的偏差度是可视的。

4). 围绕核心设计形成的设计原则

有了上面的核心设计后,可以真正的形成一些设计原则,确保后面的子系统/模块的详细设计中能够遵循,并在详细设计中体现出来,这样才能让整个大的系统设计的一致性。

5). 各子系统/模块的详细设计

这个部分我倒觉得难度不会太大,毕竟有了前面的铺垫,就是解好一个更小范围的题,程序员群体在解题能力上通常是不错的,所以我一直觉得数学功底好是程序员的基本,数学就是典型的解题的学科。

ps: 这就是做分享/培训的好处,借机仔细整理自己的碎片,从而形成体系。

关于怎么更好的让大家能掌握并运用这个思考框架,我的想法就是在讲每个步骤的时候讲讲自己当年在这些步骤上犯的错,实际的经验,这样我觉得也许大家以后在做系统设计时就能想起,所以我觉得系统设计这种培训绝对是需要具备大量实际经验的架构师才能做。

在运用部分,采取的方法就是通过互动,让大家按照同样的思考框架来讲自己的所负责的系统,通过互动来更好的彼此对齐,并借此逐渐变成习惯。

上面只是对每个步骤的简单的阐述,后面会再来细节的写写上面的每个步骤内的点。

2 . 知识面拓宽这个倒还好,讲一个全站的系统架构就好,这样可以让知识面从业务架构、到基础技术架构、到涉及到基础设施的部署架构等。

相关文章
|
1月前
|
缓存 运维 容灾
入行5年,谈谈我在阿里做测试开发的经验
作者在阿里一直从事测试开发相关工作,这几年学习很多、收获很多,作者希望给还在该方向摸爬滚打的同学一些启发和方向。
110 1
|
Java 程序员
收藏!阿里毕玄16篇文章,深度讲解Java开发、系统设计、职业发展
阿里毕玄结合自己的经历深度讲解Java开发、系统设计、职业发展等问题,快来一键收藏吧。
34548 1
|
19小时前
|
负载均衡 Kubernetes 数据库
【鹅厂摸鱼日记(一)】(工作篇)认识八大技术架构
【鹅厂摸鱼日记(一)】(工作篇)认识八大技术架构
|
4月前
|
运维 前端开发 大数据
大数据必知必会系列——面试官一问就懵:你们做过的项目技术是如何选型的?[新星计划]
大数据必知必会系列——面试官一问就懵:你们做过的项目技术是如何选型的?[新星计划]
43 0
|
12月前
|
测试技术
测开-基础篇
测开-基础篇
104 0
|
8月前
|
存储 分布式计算 架构师
阿里架构师十年开发总结的《分布式系统开发学习笔记》太强了
分布式系统 分布式系统是将多台小型微型机互连组成的一种新型计算机系统。它冲破了传统的集中式单机局面,从分散处理的概念出发来组织计算机系统,具有较高的性能价格比,灵活的系统可扩充性, 良好的实时性、可靠性与容错性等潜在优点,是近几年来计算机科学技术领域中极受重视的新型计算机系统,现已成为迅速发展的一个新方向。
|
9月前
|
运维 算法 架构师
又爆新作!阿里甩出架构师进阶必备神仙笔记,底层知识全梳理
据有关数据表明,目前Java程序员这个群体的数量不减反增,行业内的竞争也是越来越严重。在同一时间入行的人,经过一段时间的学习后,差距就会显示出来。其实出现这样的原因大多数都是因为学习的方向出了问题。大多数人学Java刚开始只是为了快速就业,但是在工作了之后却没有一个好的学习路线,那些其实很重要的东西只是因为工作上用不到从而忽略掉了,慢慢的才发现自己与别人之间已经存在很大差距了!
|
10月前
|
存储 缓存 NoSQL
软考_系统设计架构师--备考重点建议与心得
软考_系统设计架构师--备考重点建议与心得
|
存储 缓存 负载均衡
|
Java Devops jenkins
成为Java后端工程师的九条必经之路!
果您真的想成为优秀的Java Developer,那么您必须首先花时间学习JVM内部,例如JVM的不同部分,它们如何工作,JIT,JVM选项,垃圾收集和收集器等。
269 0

热门文章

最新文章