许式伟的架构课
许式伟
七牛云 CEO
84946 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 89 讲
许式伟的架构课
15
15
1.0x
00:00/00:00
登录|注册

59 | 少谈点框架,多谈点业务

框架不能满足需求的问题
框架迭代
模块的接口
概要设计阶段的框架代码编写
模块接口的定义
团队共识形成与确认
画架构图
需求分析
重要性
抽象系统的能力
读代码的能力
理需求的能力
下期话题
业务设计的完整性
架构行为的三步曲
架构就是业务的正交分解
用实现机制替代业务的问题
业务数据结构与架构实现机制
数据结构的重要性
业务与框架思维方式的差异性
关注业务接口的定义
框架的抽象能力
框架演进与需求
接口代表业务
框架设计的核心
抽象系统的能力
理需求的能力
三大技能
结语
别用实现替代业务
别让框架绑架业务
架构设计
架构设计与业务

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

你好,我是七牛云许式伟。

架构是共识确认的过程

对于架构这件事情,有不少让人误解的地方。前面在 “57 | 心性:架构师的修炼之道” 一讲中,我们提到过架构师需要掌握的三大技能:
理需求的能力;
读代码的能力;
抽象系统的能力。
这里面除了 “读代码” 这件事可能允许没有什么显性的产出外(其实也应该有,去读代码通常意味着缺架构设计文档,所以按理应该去补文档),其他两类事情要做好都不容易。
就理需求的能力而言,很多架构师一不知道要做需求分析,二不知道需求分析的产出到底应该是什么样的。需求分析可以说是架构师最没有概念的一个环节,尽管它至关重要。这一块领域特征比较明显,课堂上讲师授课的方式,很难有好的成效,更适合以实训的方式来强化。
就抽象系统的能力而言,很多架构师爱画架构图。画完了架构图,他就认为架构做完了,下一步该去编码。
这有什么问题?
首先,架构过程是团队共识形成与确认的过程。共识是需要精确的、无歧义的。而架构图显然并不精确。
团队没有精确的共识很可怕,它可能导致不同模块的工作牛头不对马嘴,完全无法连接起来,但是这个风险没有被暴露,直到最后一刻里程碑时间要到了,要出版本了,大家才匆匆忙忙联调,临时解决因为架构不到位产生的“锅”。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文强调架构设计应该关注业务需求,而不是被技术细节所束缚。架构师需要具备理解需求、读代码和抽象系统的能力。需求分析和模块接口的定义至关重要,接口代表业务需求,而框架代表技术实现。文章还提到了基于事件模型和基于对象组织模型的接口描述方式的差异,强调了业务语义的稳定性和接口描述的重要性。最后,文章建议在概要设计阶段就将框架代码写出来,以代码作为更强的文档,以此来保证系统的洁净和稳定。总的来说,架构设计就是业务的正交分解,每个模块都有自己的业务,这是架构设计的基础。架构行为的三步曲:“需求分析”、“概要设计”、模块的“详细设计”,都直指业务的正交分解,最终形成业务设计的完整、精确无歧义的解决方案。

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

全部留言(27)

  • 最新
  • 精选
  • tt
    “框架,提现的是需求泛化的能力”。 体现需求泛化的能力,就是架构可以适应需求的变化。需求的变化就是接口的变化,因为本文说了,接口代表需求。 接口代表了要做什么,需求就是一个要做什么的集合,是目的。接口是需求的流程分解,即可以体现用户地图。 程序分为算法和数据结构,业务分为接口和业务数据,业务数据是业务的沉淀,是比框架更稳定的东西,而接口是在数据之上的动作,所以位置最高。

    作者回复: 赞

    2019-11-22
    2
    44
  • Fs
    定义了数据结构,但是不抽象数据的业务逻辑,直接让使用方操作成员变量,或者定义一堆成员变量的 get/set 接口。 这句话含义是DDD中的贫血模型了。比如我需要判断某个实体是否是合格的,需要通过a,b 字段来判断。这个实现没有定义在数据结构里,却把a,b字段通过get暴露出去,让调用方去判断了

    作者回复: 是的

    2019-11-24
    2
    19
  • JasonZ
    比框架(架构图)更重要的是数据结构,比数据结构更重要的是接口。这句话不是很认同。一般业务迭代中,接口的变化是很快的。底层数据结构和框架比接口更稳定

    作者回复: 😓那么你们工程师忙么?

    2020-07-16
    3
    3
  • xtepCool
    用实现机制替代业务。这个什么理解呢?

    作者回复: 就是不考虑模块(业务)边界,为了实现功能而实现功能。这会使得最终这个业务就只有一个大模块,缺乏清晰的分解,所有代码揉在一起。

    2021-04-23
    1
  • 沫沫(美丽人生)
    许老师好,现在有些SaaS 企业PaaS化,请问从SaaS 向PaaS 过度的关键技术是什么呢?在系统架构上两者有什么本质区别吗?望不吝赐教。

    作者回复: 没本质区别。不过很多saas公司可能刚开始没有考虑接口开放的重要性,所以在这一层会遇到一些坑。

    2019-11-25
    1
  • lufeng
    架构到数据结构,再到接口,是一个设计到实现的过程,接口定义了业务的逻辑,数据结构定义了领域实体,对实体的业务的动作是实体对外胡接口,多个内聚的实体构成了模块,相互独立,正交的模块构成系统,类似面向对象的领域设计理念。 感觉最核心的是实体=数据结构+接口,😄

    作者回复: 接口优先于数据结构 数据结构已经是实现了 只不过是实现的灵魂

    2021-11-24
  • Han
    老师,不太明白您对框架的定义,等同于架构图? 能否解释一下。 您说的框架应该不是指那些三方的开源框架吧。

    作者回复: 包括的

    2020-06-06
    2
  • 小喵喵
    数据结构是指的是表结构或者是实体吗?还是什么链表,栈,树之类的数据结构呢?

    作者回复: 都是

    2019-11-29
  • Jxin
    目前来看,架构设计套路有限,但业务领域无限。如何应用有限的套路做出无限的架构设计,难点应是在业务上。没有足够的业务背景积累和业务需求洞察,架构设计就会出现知易行难的窘境。但是想要架构师一步到位具有健全的业务领域知识也是不现实的。所以,横竖都不好,那么就落地灵活的设计,动态去演变,也就所谓的演进式架构。而代码变动是高成本的,所以要想办法降低成本。首先代码可读要高。接着,单模块内各层,以及模块间的耦合要低。最后,代码的实现要采用合适的设计模式,以便易于扩展。但这三点不取决于架构师,具体业务开发个人素养的影响更大。所以,感觉约往后,业务开发的个人素养要求会越高。至少领域设计(战略规划)和架构分层、设计模式(战术应用)的诉求怕是少不了的。
    2019-11-22
    10
  • leslie
    老师今天课程中提到了一个很关键的现状:框架绑架开发。这其实是许多程序过程中经常碰到的问题:某种框架不错大家去用,可是随着业务的复杂度和需求的复杂度的增加我们会发现被框架绑架了-实现不了,然后就开始调整需求或者实现方式。 这些年更多基于内核或者核心去改/写框架的:稍微有点特色就火了;其实我们去看本质会发现,只是降低了对某些框架的绑定能力而已,当程序中一大堆框架时其实我们就被一大堆事物绑架了。框架使用的度确实是个问题:用的越深绑架越深,故而其实都是在努力的做解绑-最小需求使用。 以上是个人的一点切身体会和薄见:一路听老师的课一路学习修正;期待老师的后续分享。
    2019-11-22
    7
收起评论
显示
设置
留言
27
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部