共计 2574 个字符,预计需要花费 7 分钟才能阅读完成。
简介:“软件开发须要面对实质艰难和从属艰难。云原生、DevOps 大幅升高了从属艰难,使得架构师能够全力聚焦于业务复杂性,而 DDD 恰是治理业务复杂性的无效办法。”
本文作者:张刚,阿里云云效资深技术专家,ALPD 方法学核心成员。
立刻学习:https://developer.aliyun.com/topic/course/alpd
软件开发的实质艰难
1986 年,软件工程大师 Frederick Brooks 撰写了一篇驰名的论文《没有银弹》。他在文章的开篇写道:
在将来的 10 年以内,不存在任何繁多的办法和技术,可能 10 倍以上的进步软件开发的生产力。
这个论断在过后就引发了微小的争议。至今,《没有银弹》依然是一个被常常拿进去探讨的话题。不过,这篇论文的真正价值远不限于此,持续读上来,就会发现,。停留在是否存在 10 倍以上生产率的探讨是不够的。真正值得关怀的,是 Brooks 对起因的论断。我把其中的重要观点概括如下:
软件开发的艰难有两类,一类是实质(Essential)艰难,一类是附属性(Accidental)艰难。
实质艰难是和软件的实质紧密联系在一起的,所以这类艰难无奈通过工具或者语言等加以解决。例如,软件解决的问题是事实世界的问题,如果事实世界的问题原本就是简单的,那么无论任何工具,都不可能打消这种复杂性。
附属性艰难是和咱们采取的工具或者办法相干的。例如,软件须要被通过某种语言实现,软件须要被编译、被部署,软件可能被实现为缺点,这些都和具体的实现办法相干。这一类艰难,能够通过工具、办法和技术的晋升得以改善。
实质艰难包含软件的复杂性,不可见性、可变更性和合乎性(指软件开发还须要听从诸如法律法规、内部零碎等不受主观意志决定的因素)
作为一名在软件开发行业工作了 20 年的架构师,《没有银弹》对于实质艰难和附属性艰难的阐述给了我微小启发。
多年以来,我始终都把“治理实质艰难、打消从属艰难”作为软件开发流动的座右铭。特地有意思的是,最近我发现,作为一个次要工作在业务零碎上的架构师,在云原生渐成趋势的时候,架构师的职责未然产生了扭转。而这个变动,恰好和“治理实质艰难、打消从属艰难”密切相关。
业务架构当然也是架构师的重要职责。业务和技术曾经深度交融,业务对响应速度的要求和开发品质的要求越来越高,同时在云原生时代,服务化简直成为必然选择。而无论是业务响应能力、开发品质和服务化,都和业务布局能力密切相关。这不就是最重要的“治理实质艰难”的方面嘛!
畛域驱动设计,尽管 Eric Evans 的同名书籍写于 2004 年,多年以来,在技术社区也有较大影响。然而为什么最近几年热度忽然大幅回升,变得特地受关注呢?这是因为,咱们的业务终于越变越简单,到了如果没有失当的办法,就不能很好的治理的境地——这也恰好暗合了 DDD 一书的副标题“软件外围复杂性应答之道“。微服务和云原生在服务方面的划分等,也是要害的助推因素。
成为云原生时代的架构师
在明天的业务环境下,能更好地利用好云原生基础设施,更好地进行业务布局、高效高质地剖析和治理畛域模型,用畛域模型领导架构设计和开发实际,是云原生时代架构师的重要技能。
这次云效和阿里云开发者学院联合推出的《ALPD 云架构师系列——畛域驱动设计》课程也正是围绕着这个主题开展。
ALPD 全称 Advanced Lean product development,它是阿里云云效团队提出的云原生时代的研发新范式,它整合了技术、工程、合作、翻新 4 类实际,并提供高效解决方案。
下面 2 幅图别离是 ALPD 办法和支撑体系图,咱们心愿 ALPD 及其解决方案能够帮忙企业和开发者,实现 10 倍效力晋升——10 倍的响应速度,10 倍的过程品质,10 倍的无效价值交付。
在本次课程中,咱们将为大家带来 ALPD 办法体系中的畛域驱动的架构和实际 局部的内容。
能通过这一次的对外整顿,将常识和教训分享给社区开发者小伙伴,也是十分开心的事件。
ALPD 云架构师系列课程——DDD 高手进阶
在课程整顿中,咱们把课程分成了如下章节:
01| 畛域模型的实质是业务认知
02| 案例剖析:高质量畛域模型晋升业务灵活性
03| 高质量畛域模型源自继续演进
04| 案例剖析:梳理业务概念,发现畛域模型
05| 从模型到代码:畛域驱动设计的结构块
06| 聚合:保障业务完整性的单元
07| 畛域驱动设计的分层模型和代码组织
08| 外围域、通用域和撑持域
09| 基于业务能力和业务场景拆分子域
10| 守护畛域边界,构建自治服务
11| 限界上下文映射的模式
12| 应用微服务构建畛域资产
其中每讲都放弃了 15 分钟左右的篇幅,以聚焦于一个比拟内聚的主题。
1- 4 讲,探讨畛域模型的一个根底概念,包含什么是畛域模型?为什么要关怀畛域模型? 如何进行根本的领域建模?
5- 7 讲,次要关怀畛域模型为核心的软件实现,具体对应于畛域驱动设计的战术模式,例如实体对象、值对象,畛域服务、畛域事件结构块及聚合、资源库和工厂这些跟业务完整性密切相关的局部。
8-12 讲,关怀畛域模型为核心的架构设计,具体对应于畛域驱动设计的策略模式,比如说子域、限界上下文、限界上下文映射等方面的话题。最初的 12 讲,咱们把微服务跟畛域资产之间的关系也做了探讨,微服务是以后一个重要话题,如果对畛域驱动设计关注有余,也会影响到微服务和云原生的施行。
在整个课程中,没有艰涩难懂的概念,我更心愿能通过扼要的案例让学员轻松了解畛域驱动设计的核心思想和要害实际。心愿你也能通过学习这个课程,能够从实质登程,更好地了解 DDD 并付诸理论我的项目施行。
点击下方图片或文末链接,退出《云架构师系列课程——DDD 架构实战》的学习之路吧!
当然,领域建模和畛域驱动设计依然是须要长期刻意练习的技能,课程中的内容也还只是抛砖引玉,在后续的理论工作中心愿你能继续利用和晋升,一直精进,成为云原生时代的卓越架构师!
立刻学习:https://developer.aliyun.com/topic/course/alpd
版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。