从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)
152571 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 66 讲
结束语 (1讲)
结课测试 (1讲)
从 0 开始学架构
15
15
1.0x
00:00/00:00
登录|注册

03 | 架构设计的目的

成本
安全性
高可用
可扩展性
性能
分析业务系统架构是否符合目的
架构设计的目的是为了解决软件系统复杂度带来的问题
学生管理系统
解决软件系统复杂度带来的问题
为了高性能、高可用、可扩展,所以要做架构设计
公司流程要求系统开发过程中必须有架构设计
不是每个系统都要做架构设计吗
架构很重要,所以要做架构设计
小结
简单的复杂度分析案例
真正目的
误区
架构设计的目的是什么?

该思维导图由 AI 生成,仅供参考

周二,我们聊了架构出现的历史背景和推动因素。以史为鉴,对我们了解架构设计的目的很有帮助。谈到架构设计,相信每个技术人员都是耳熟能详,但如果深入探讨一下,“为何要做架构设计?”或者“架构设计目的是什么?”类似的问题,大部分人可能从来没有思考过,或者即使有思考,也没有太明确可信的答案。

架构设计的误区

关于架构设计的目的,常见的误区有:
因为架构很重要,所以要做架构设计
这是一句正确的废话,架构是很重要,但架构为何重要呢?
例如:不做架构设计系统就跑不起来么?
其实不然,很多朋友尤其是经历了创业公司的朋友可能会发现,公司的初始产品可能没有架构设计,大伙撸起袖子简单讨论一下就开始编码了,根本没有正规的架构设计过程,而且也许产品开发速度还更快,上线后运行也还不错。
例如:做了架构设计就能提升开发效率么?
也不尽然,实际上有时候最简单的设计开发效率反而是最高的,架构设计毕竟需要投入时间和人力,这部分投入如果用来尽早编码,项目也许会更快。
例如:设计良好的架构能促进业务发展么?
好像有一定的道理,例如设计高性能的架构能够让用户体验更好,但反过来想,我们照抄微信的架构,业务就能达到微信的量级么?肯定不可能,不要说达到微信的量级,达到微信的 1/10 做梦都要笑醒了。
不是每个系统都要做架构设计吗
这其实是知其然不知其所以然,系统确实要做架构设计,但还是不知道为何要做架构设计,反正大家都要做架构设计,所以做架构设计肯定没错。
这样的架构师或者设计师很容易走入生搬硬套业界其他公司已有架构的歧路,美其名曰“参考”“微改进”。一旦强行引入其他公司架构后,很可能会发现架构水土不服,或者运行起来很别扭等各种情况,最后往往不得不削足适履,或者不断重构,甚至无奈推倒重来。
公司流程要求系统开发过程中必须有架构设计
与此答案类似还有因为“架构师总要做点事情”,所以要做架构设计,其实都是舍本逐末。因为流程有规定,所以要做架构设计;因为架构师要做事,所以要做架构设计,这都是很表面地看问题,并没有真正理解为何要做架构设计,而且很多需求并不一定要进行架构设计。如果认为架构师一定要找点事做,流程一定要进行架构设计,就会出现事实上不需要架构设计但形式上却继续去做架构设计,不但浪费时间和人力,还会拖慢整体的开发进度。
为了高性能、高可用、可扩展,所以要做架构设计
能够给出这个答案,说明已经有了一定的架构经历或者基础,毕竟确实很多架构设计都是冲着高性能、高可用……等“高 XX”的目标去的。
但往往持有这类观点的架构师和设计师会给项目带来巨大的灾难,这绝不是危言耸听,而是很多实际发生的事情,为什么会这样呢?因为这类架构师或者设计师不管三七二十一,不管什么系统,也不管什么业务,上来就要求“高性能、高可用、高扩展”,结果就会出现架构设计复杂无比,项目落地遥遥无期,团队天天吵翻天……等各种让人抓狂的现象,费尽九牛二虎之力将系统整上线,却发现运行不够稳定,经常出问题,出了问题很难解决,加个功能要改 1 个月……等各种继续让人抓狂的事件。

架构设计的真正目的

那架构设计的真正目的究竟是什么?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了架构设计的真正目的,指出了常见的误区,并提出了解决软件系统复杂度带来的问题是架构设计的主要目的。作者通过一个大学学生管理系统的案例,阐述了如何根据系统的复杂度进行架构设计,强调了性能、可扩展性、高可用性、安全性和成本等方面的考量。文章内容简洁明了,为读者提供了对架构设计目的的深入思考和指导建议。通过具体案例的分析,读者可以更好地理解架构设计的核心目的,并应用于实际业务系统架构的分析中。同时,文章还推荐了一门Java核心技术课程,为读者提供了进一步学习的机会。整体而言,本文通过深入的案例分析和清晰的论述,为读者提供了有益的技术指导和思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学架构》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(278)

  • 最新
  • 精选
  • 公号-技术夜未眠
    架构是为了应对软件系统复杂度而提出的一个解决方案。个人感悟是:架构即(重要)决策,是在一个有约束的盒子里去求解或接近最合适的解。这个有约束的盒子是团队经验、成本、资源、进度、业务所处阶段等所编织、掺杂在一起的综合体(人,财,物,时间,事情等)。架构无优劣,但是存在恰当的架构用在合适的软件系统中,而这些就是决策的结果。 需求驱动架构。在分析设计阶段,需要考虑一定的人力与时间去"跳出代码,总揽全局",为业务和IT技术之间搭建一座"桥梁"。 架构设计处于软件研制的前期,一方面,越是前期,如有问题,就能够越早发现,修改的代价也就越低;另外一方面,也意味着,软件实施后期若有架构上的修改,也需要付出更多的代价。 今日得到: 1 架构是为了应对软件系统复杂度而提出的一个解决方案。 2 架构即(重要)决策 3 需求驱动架构,架起分析与设计实现的桥梁 4 架构与开发成本的关系

    作者回复: 收下我的膝盖,大神写个心得就已经把我后面的内容剧透了,6666👍👍😃

    2018-05-03
    5
    692
  • 李志博
    今天读完文章,思考了下我们系统的复杂点,我们系统是一个承上启下的系统,根本没自己的表,所有数据都是调第三方接口取,然后汇总聚合给前端浏览器,突然明白最近老大为什么要搞es去异步聚合第三方数据了,这样以往我们需要调第三方多次接口取的数据,以后调自己es查询一次就可以了,这样性能更高,且逻辑更简单,更容易维护,以往优化这种性能问题的方式,就是多线程,然而多线程也是要消耗资源调,而且代码反而更难以理解,原来最好的优化方式不是把串行变并行,而是把串行干的多个事的数量去减少,首先要根据系统复杂点想到合适的解决方案,其次才是用什么优秀的框架叫代码更牛逼一点,否则一开始就算错的

    作者回复: 你已经参透天机👍👍

    2018-05-03
    10
    128
  • gevin
    我觉得做软件架构是为两件事服务的:业务架构和业务量级,这应该算是“软件系统复杂度带来问题”的具体化吧。 业务架构和业务量级都是从每个具体项目的实际应用场景中提炼出来的。 业务架构是对业务需求的提炼和抽象,开发软件必须要满足业务需求,否则就是空中楼阁。软件系统业务上的复杂度问题,可以从业务架构的角度切分工作交界面来解决。设计软件架构,首先是要保证能和业务架构对的上,这也是从业务逻辑转向代码逻辑的过程,所以软件架构的设计为开发指明了方向。另外架构设计也为接下来的开发工作分工奠定了基础。 业务量级表现在存储能力、吞吐能力和容错能力等,主要是软件运维期业务的复杂度。做软件架构设计,是要保证软件有能力托起它在业务量级上的要求的,如果软件到运行使用期废了,前面所有的工作都付诸东流了。不同的业务量级,对应的软件的架构复杂度是不同的,所以对于不同的项目,业务量级不同,架构设计也不同。 做业务架构必须与其面向的实际应用场景相匹配,由于每个产品或项目的业务场景均有所不同,所以每次做新的软件开发前,必须先设计软件架构,试图不经分析直接套用先前的架构方案,十有八九会让当前的系统在某个点上报出大问题导致推翻重来,更不要说直接拿别人的现成架构方案了。 所以每个软件在开发前,都要结合自己的应用场景设计适合自身的软件架构,现成的架构方案只能借鉴,不能直接套用。 另外,由于业务架构和业务量级也会不断调整或长大,软件架构也不是一劳永逸的,会随业务不断调整。

    作者回复: 赞,写的很好,对我的专栏内容是很好的补充

    2018-05-18
    7
    84
  • 霍潘
    这篇内容完全符合我们公司目前现状,为了架构而架构。原本3个人负责的nodejs系统现在改用JAVA开发,光架构师招了快7,8个。不到2000人使用的系统没有一天不出点小故障,开发过程更是痛苦,三天两头的开发环境跑不起来。说是微服务,不过是把原来单体结构按功能拆分,按层级拆分,本来就拆分的够多了,为了开发要启动很多服务。每个新来的架构师都要引入一套自己的架构,结果可想而知

    作者回复: 8个架构师?太夸张了,一个架构师一般可以支撑20人以上的开发团队,你们的架构师莫非是传说中的PPT架构师?😃

    2018-05-03
    9
    68
  • ✎﹏๓₯㎕╮陌
    架构就是。当你想拉屎的时候首先得去找厕所。选择一个什么样的厕所。 1.距离选择。如果太远可能就漏出来了 2.成本选择。如果拉屎太贵也不合适 3.性能选择。好的厕所可以拉的心情舒畅

    作者回复: 角度刁钻😂😂

    2018-05-05
    6
    65
  • 懒人闲思
    伟大导师马克思说过:主要矛盾处于支配地位,次要矛盾。。。也会有影响,架构设计就是提前预判可能遇到的矛盾,用最小的代价解决它

    作者回复: 用马哲来指导架构设计,好像也有道理😃

    2018-05-03
    59
  • suke
    老师好,我们目前在做内部的对象存储中控台,满足的需求有以下几个: 1.方便内部非开发人员做数据存储 2.提供对象存储的图形化界面 3.监控整个存储集群的存储相关的指标,例如存储量,下行流量、api调用等等 这几个需求也算是我结合公司的现有业务状况,以及对象存储的特性,自己总结的。 系统上线以后,我预计的使用情况如下: 1.大的天使客户都是一些职能的业务部门,由存储集群提供底层的存储接口,通过中控台进行监控,图形化操作 2.其他零散人员,可存储一些工作上的数据 目前我只是做了个demo出来,整体架构:nginx做前端的负载,springboot提供服务,mysql存储元数据,redis做消息队列,以及缓存,数据通过接口传到存储集群 这个架构也没做太多考虑,就像老师您说的情况一样,只不过公司其他的系统也差不多都这样。 对象存储中控台的业务复杂度我思考有以下几个: 1.提供高可用,高性能的上传下载功能 2.提供bucket 以及对象的查询功能 3.提供低延迟的监控统计功能 4.并发访问量个人感觉都集中在存储集群的接口调用,中控台这边并不高,但是一定要做到系统的高可用,保证内部职工正常的工作使用,同时mysql也要做到主备和异地多活,以及redis的主备 老师这样的分析可以么,针对这样的业务,现有的架构有问题么

    作者回复: 你分析的主要还是功能点,应该更进一步,分析这些功能点后的复杂度,而且要尽量量化。例如: 1. 高可用和高性能:到底要多高,为什么要高性能高可用? 2. 低延迟:到底多低?秒级和分钟级和小时级,复杂度差很大,秒级你可能要用流式计算,分钟级用后台计算可能就可以了,小时级直接用数据库就可以了 3. 系统高可用具体达到什么水平?是1分钟都不能停,还是可以停1个小时?是数据绝对不能丢,还是可以丢一部分数据然后其它方式修复? 对于高性能和高可用,千万不能说越高越好,一定要结合业务,例如,绝大部分内部系统的宕机容忍时间可以是一个小时。

    2018-05-03
    3
    51
  • 张玮(大圣)
    1. 问答引导式由浅入深来讲解很赞 2. 一个简单的例子能说明相关问题也很赞,就是这样,大家有时不需要大而全的大公司大例子,反手一个赞,加油,运华兄

    作者回复: 一起加油,大圣✊✊

    2018-05-03
    43
  • 晴天
    我不是架构师,但是有一颗这样的梦想。小时不识月的时候,以为架构就是ssm,就是几种中间件的堆砌,简单粗暴,我上我也行的心态,后来接触的越多,业务复杂了,又开始忧来其如何了,为什么要这么设计,为什么用这个,接触概念也越来越高大上,开始如作者所说的大牛都该展现自己的技术,就是要上高性能高并发等等,就是要往复杂了去设计,盲目的去崇拜复杂的设计,而恰恰忽略了设计的本质是为了解决一定范围内的问题也就是软件复杂度,其实没必要那么疯狂,也没那么简单。适合的才是最完美的,脱离不了业务,也离不开现实,譬如成本控制,进度控制等等。所以我应该静下心来,认真的去学习那些优良的设计的背后,如何在选择上驾轻就熟,如何在这个规则里游刃有余……

    作者回复: 现在的你就是曾经的我,一起加油👍👍👍

    2018-05-04
    2
    29
  • Will
    架构是解决复杂度的问题。那么复杂度有很多不同的来源,比如人(不同的代码风格,不同的编程习惯),比如业务,比如技术。那么架构不可能面面俱到的解决所有问题,必须要分析出所面对的一个或几个关键的问题,这样架构的设计就能有落脚点,而且问题解决也不会有大的冲突。 架构设计在发展的不同阶段面临不同的问题,例如我们公司刚开始就做了业务拆分,后端是多个服务,前端一个站点,并且提供了一个服务互相调用的公共代理,现在主站越来越庞大,涵盖的业务越来越多,所以要做业务拆分,公共代理所包含的服务也越来越多,也要进行拆分。另外一个业务要调用多个服务,如何去监控调用链的完整性,这也需要解决。 所以架构本身在不同阶段集中解决几个最主要的问题,之后随着业务,技术,问题的不断变化,架构的重点也在不断调整。

    作者回复: 你已经参透天机,后面会讲到你说的内容。

    2018-05-04
    23
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部