服务优雅下线,没你想的那么简单?
服务部署,是一个避免不了的问题。按正常迭代的速度一般两周会发一个版本,此时就需要部署新的代码。发布方式,我相信主流的都是用滚动发布,因为这样的成本是最低的,机器数量是固定的,一台台机器轮流发布。但是我们总会在发布过程中碰到一些报错信息,那是因为请求还没结束,某些组件已经强制停止了,比如我们的数据源, ...
编程范式,程序员的编程世界观
编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式。随着编程方法学和软件工程研究的深入,特别是OO思想的普及,范式(Paradigm)以及编程范式等术语渐渐出现在人们面前。面向对象编程(OOP)常常被誉为是一种革命性的思想,正因为它不同于其他的各种编程范 ...
菱形对称架构
在实施领域驱动设计的过程中,限界上下文(Bounded Context)扮演了关键角色:它既是维护领域模型完整性与一致性的重要边界,又是系统架构的重要组成部分。随着社区对限界上下文的重视,越来越多的人开始尝试将更多的架构实践与限界上下文融合在一起,创造出符合领域驱动设计的架构模式。Eric Evan ...
设计概念的统一语言
当我们在讨论领域驱动设计时,不止要谈到领域驱动设计固有的设计概念,结合开发语言和开发平台的设计实践,又会有其他设计概念穿插其中,它们之间的关系并非正交的,解决的问题和思考的角度都不太一致,许多设计概念更有其历史渊源,却又在提出之后或者被滥用,后者被错用,到了最后已经失去了它本来的面目。因此,我们首先 ...
架构设计的三个原则
在进行架构设计时,需要遵循如下原则:一致原则、简单原则、演进原则。一致性是软件架构质量原则的根基,遵循一致原则的软件架构可以有效地保证整个架构解决方案的清晰直接,降低了解决方案的复杂度。对于规模引起的复杂度,可以通过“分而治之”的思想来解决,也就是将整个系统按照业务维度拆分为多个细小而简单的模块(组 ...
企业架构与领域驱动设计的融合
DDD的作用范围主要还是针对系统级的分析、架构与设计,在更高的层面上,即将问题空间扩大到超过系统范围,变成企业或组织范围之后,DDD的模式就显得捉襟见肘了。此时,可以考虑引入企业架构的思想,尤其是业务架构的内容,给了DDD很好的补充,又或者说,将企业架构与DDD融合起来,就能真正串联起战略和战术设计 ...
业务架构映射为应用架构
通过《多维度规划业务架构》,我们获得了由业务领域-业务组件-业务服务三个层次组成的业务架构。虽然是架构,但其本质仍然属于问题空间,其目的在于真实地探索问题空间,了解我们要解决什么样的问题。我们用到“分解”的方法,并非在解决问题,而是希望通过横向分层与纵向切分让问题空间变得更小,降低业务复杂度罢了。
领域驱动建模与面向对象建模的差异
即便采用面向对象建模范式,领域驱动设计的建模仍与面向对象建模存在较大差异,原因在于领域驱动设计引入了限界上下文(Bounded Context)与聚合(Aggregate),使得建模的风景变得迥然不同。二者为领域模型引入了边界的约束,使得建模者不能随心所欲地建模,亦改变了模型的面貌。
领域驱动设计对依赖的控制
我在《解构领域驱动设计》一书中分析了软件复杂度的成因,一曰规模,一曰结构,还有一个则是变化的影响。规模与结构存在一定的矛盾关系:解决规模复杂度的有效方法为“分而治之”,一旦系统被分解为多个更为细小的软件元素,结构复杂度就会增加。结构与变化之间存在互相影响的关系:如果结构控制不合理,变化带来的影响就会 ...
事件风暴的设计要素与驱动力
相比较传统领域分析方法,事件风暴的革命意义在于它建立了以“领域事件”为核心的建模思路,这相当于改变了我们观察业务领域的世界观。当我们在理解业务需求时,我们看到的常常是功能、流程,并通过从需求描述中梳理领域概念,进而借助这些概念去识别那些参与到业务场景中互为协作的领域对象,这往往让我们忽略了一个在任何 ...

© 2016 - 2022 chengxuzhixin.com All Rights Reserved.

浙ICP备2021034854号-1    浙公网安备 33011002016107号