如何成为云原生时代的卓越架构师?

简介:“软件开发须要面对本质困难和附属困难。云原生、DevOps大幅下降了附属困难,使得架构师能够全力聚焦于业务复杂性,而DDD恰是管理业务复杂性的有效方法。”

本文做者:张刚,阿里云云效资深技术专家,ALPD方法学核心成员。架构

当即学习:https://developer.aliyun.com/topic/course/alpdide

软件开发的本质困难

1986年,软件工程巨匠Frederick Brooks撰写了一篇著名的论文《没有银弹》。他在文章的开篇写道:微服务

在将来的10年之内,不存在任何单一的方法和技术,可以10倍以上的提升软件开发的生产力。工具

这个论断在当时就引起了巨大的争议。至今,《没有银弹》仍然是一个被常常拿出来讨论的话题。不过,这篇论文的真正价值远不限于此,继续读下去,就会发现,。停留在是否存在10倍以上生产率的讨论是不够的。真正值得关心的,是Brooks对缘由的论断。我把其中的重要观点归纳以下:学习

软件开发的困难有两类,一类是本质(Essential)困难,一类是附属性(Accidental)困难。阿里云

本质困难是和软件的本质紧密联系在一块儿的,因此这类困难没法经过工具或者语言等加以解决。例如,软件解决的问题是现实世界的问题,若是现实世界的问题原本就是复杂的,那么不管任何工具,都不可能消除这种复杂性。spa

附属性困难是和咱们采起的工具或者方法相关的。例如,软件须要被经过某种语言实现,软件须要被编译、被部署,软件可能被实现为缺陷,这些都和具体的实现方法相关。这一类困难,能够经过工具、方法和技术的提高得以改善。架构设计

本质困难包括软件的复杂性,不可见性、可变动性和符合性(指软件开发还须要听从诸如法律法规、外部系统等不受主观意志决定的因素)设计

做为一名在软件开发行业工做了20年的架构师,《没有银弹》关于本质困难和附属性困难的论述给了我巨大启发。对象

多年以来,我一直都把“管理本质困难、消除附属困难”做为软件开发活动的座右铭。特别有意思的是,最近我发现,做为一个主要工做在业务系统上的架构师,在云原生渐成趋势的时候,架构师的职责已然发生了改变。而这个变化,偏偏和“管理本质困难、消除附属困难”密切相关。

业务架构固然也是架构师的重要职责。业务和技术已经深度融合,业务对响应速度的要求和开发质量的要求愈来愈高,同时在云原生时代,服务化几乎成为必然选择。而不管是业务响应能力、开发质量和服务化,都和业务规划能力密切相关。这不就是最重要的“管理本质困难”的方面嘛!

领域驱动设计,虽然Eric Evans的同名书籍写于2004年,多年以来,在技术社区也有较大影响。可是为何最近几年热度忽然大幅上升,变得特别受关注呢?这是由于,咱们的业务终于越变越复杂,到了若是没有恰当的方法,就不能很好的管理的地步——这也偏偏暗合了DDD一书的副标题“软件核心复杂性应对之道“。微服务和云原生在服务方面的划分等,也是关键的助推因素。

成为云原生时代的架构师

在今天的业务环境下,能更好地利用好云原生基础设施,更好地进行业务规划、高效高质地分析和管理领域模型,用领域模型指导架构设计和开发实践,是云原生时代架构师的重要技能。

此次云效和阿里云开发者学院联合推出的《ALPD云架构师系列——领域驱动设计》课程也正是围绕着这个主题展开。

ALPD全称Advanced Lean product development,它是阿里云云效团队提出的云原生时代的研发新范式,它整合了技术、工程、协做、创新4类实践,并提供高效解决方案。

image.png

image.png

上面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

本文内容由阿里云实名注册用户自发贡献,版权归原做者全部,阿里云开发者社区不拥有其著做权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。若是您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将马上删除涉嫌侵权内容。