架构设计的认知

仅供个人学习使用,我是努力的Grug.

1. 为什么架构设计就是拆分,我们为什么要做架构拆分?
做架构拆分就是为了系统之间的解耦,子系统之间的解耦,模块之间的解耦。做解耦的目的是为了使复杂的调用逻辑分开,使拆分后的系统,职责更为单一,功能更为内聚。职责单一系统的功能逻辑和迭代速度会更快,能提高研发团队响应业务的速度,能提高研发效率,而效率是每个互联网公司都追求的。

架构拆分实际上是 管理 在技术上 提效 的一种手段

2. 一个案例分析
早期,业务发展比较简单,团队规模也不是很大,单体系统可以支撑业务的早期规模,但当业务不断发展,团队规模越来越大时,之前的一个业务团队逐渐发展成了多个业务团队,这时每个业务团队都会提出自己的功能需求。

然而,系统现状仍然是单体架构,研发同学都在同一个系统里进行开发,使得系统逻辑复杂,代码耦合,功能迭代和交付变得非常缓慢,牵一发而动全身,研发人员都不敢轻易修改代码。

这个时期系统的主要矛盾就变成了:多人协作进行复杂业务,导致速度缓慢,但业务需求又快速迭代。说白了,就是研发效率不能匹配业务发展的速度,并且单靠加人不能解决问题。对于这样的一个系统,此阶段的系统架构核心原则就不能随便定义为要保证高性能和高可用。

在回答系统设计问题的时候,要根据系统所处阶段的主要矛盾来回答架构设计问题。《人月神话》的作者就分析,软件的复杂度来源于两方面,本质复杂度和偶然复杂度。开发工具、开发框架、开发模式,以及高性能和高可用这些仅是偶然复杂性,**架构最重要的是要解决本质复杂性,这包括人的复杂性和业务的复杂性。技术是静态的,人和业务是变化的,具体问题要从具体业务领域出发。

3. 研发工程师和架构师能驾驭的边界可以如下概括:

  1. 一个中高级研发工程师对系统的驾驭边界至少是模块或者子系统层面;
  2. 一个架构师对系统的驾驭边界至少是全系统层面;
  3. 一个高级架构师对系统的驾驭边界至少是某一领域层面。

4. 总结

  1. 首先要提高你对系统架构设计的认知能力,一个好的架构师的架构设计不是仅仅停留在技术解决方案上。

  2. 其次要提高你分析系统问题的认知能力,做架构设计要具备根据现阶段的主要矛盾来分析问题的能力。

  3. 最后你要扩大自己能够驾驭系统的边界,因为只有这样才能遇到之前没经历过的问题层次,注意我这里说的是问题层次,而不是问题数量。

全部评论

相关推荐

06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务