首页
学习
活动
专区
工具
TVP
发布

斑斓

张逸的技术分享
专栏作者
256
文章
257689
阅读量
60
订阅数
菱形对称架构
在实施领域驱动设计的过程中,限界上下文(Bounded Context)扮演了关键角色:它既是维护领域模型完整性与一致性的重要边界,又是系统架构的重要组成部分。随着社区对限界上下文的重视,越来越多的人开始尝试将更多的架构实践与限界上下文融合在一起,创造出符合领域驱动设计的架构模式。
张逸
2020-03-26
1.8K0
建立领域驱动设计统一过程
本文尝试指出领域驱动设计的四个不足。目前我们采用的领域驱动设计,其主线是Eric Evans提出的所谓领域驱动设计元模型。该元模型因其高度的概括性与松散性,故而能够随着时间推移历久不衰。但也正因为此,使得它在指导领域驱动设计落地时,缺乏规范性和实践意义,更多需要凭借经验才能成功实施领域驱动设计。
张逸
2020-02-24
1K0
重新审视演进式设计
演进式设计是一种理念,它曾经颠覆过传统笨拙的计划式设计,如今,它依旧焕发着生命力,但我们不能以静止的眼光去看待它,而应该尝试着引入一些新的方法、框架乃至技术。 说起来,所谓Evolutionary Design已经是老生常谈了。早在2004年,Martin Fowler在文章Is Design Dead中就深刻地比较了计划式设计与演进式设计,至今阅读这篇文章,对于理解敏捷和演进式设计依旧振聋发聩。我在文章设计恰如其分的架构中,也算得上是旁征博引地阐述了诸多与演进式设计相关的理念,例如Neal Ford提出
张逸
2018-03-07
7010
软件系统的稳定性
软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。 大约是五年前,我在QCon
张逸
2018-03-07
7.3K0
设计匠艺 | 小即是美之一
博尔赫斯说:“写散文体的短文——寓言、神话、短故事——给了我某种神秘的满足。想起这些篇章,就仿佛想到硬币:实在、结实、闪光的小物体,更多的东西的样品。”显然,小物体之美,让博尔赫斯着迷。 同样,在软件设计领域里,小的设计同样让我着迷。这里所谓的“小”,并非绝对的小,而是强调一种恰如其分的设计哲学。在开发过程中,每一次迭代的目标不宜设立过大,需小步前行,避免过度设计。在设计开发时,整个系统最好由松散耦合的细小模块组成。这些细小模块由于功能相对独立而单一,因而更易于理解。 在设计系统架构时,我们要注意克制做大做
张逸
2018-03-07
7220
系统架构 | 基于微服务架构,改造企业核心系统之实践
背景与挑战 随着公司国际化战略的推行以及本土业务的高速发展,后台支撑系统已经不堪重负。 在吞吐量、稳定性以及可扩展性上都无法满足日益增长的业务需求。对于每10万元额度的合同,从销售团队准备材料、与客户签单、递交给合同部门,再到合同生效大概需要3.5人天。随着业务量的快速增长,签订合同的成本急剧增加。 合同管理系统是后台支撑系统中重要的一部分。当前的合同系统是5年前使用.NET,基于SAGE CRM(http://www.sagecrm.com/)二次开发的产品。一方面,系统架构过于陈旧,性能、可靠性无法满足
张逸
2018-03-07
1.6K0
系统架构 | 软件架构的一致性
在Brooks的力作《设计原本(The Design of Design)》一书中,提及“一致性”对软件的重要性。他认为:“一致性应该是所有质量原则的根基。好的架构应该是直接的,人们掌握了部分系统后就可以推测出其他部分”。这种所谓“窥一斑而知全豹”的要求,实则是要求保持风格的一致性。 风格的一致性 许多软件公司都会根据自身情况并结合业界规范制定符合本公司情况的编码规范。例如对命名、格式等诸多风格的要求。这种编码风格的一致性是相对容易实现的。Brooks提到的一致性,更多地是体现架构风格的一致性。那么,什么是
张逸
2018-03-07
1.9K0
系统架构 | 设计恰如其分的架构
远在2009年,Martin Fowler与Rebecca Parsons在QCon SF做了一次题为Agilists and Architects: Allies not Adversaries Presentation的演讲。演讲主要讨论了在敏捷方法中的架构活动。相似的话题,Neal Ford则提出了紧急设计的概念,并发表了名为Evelutionary Architecture and Emergent Design(演进架构与紧急设计)的系列文章。这是很棒的一个讲解演进架构的系列文章,谈到了TDD、代
张逸
2018-03-07
1.1K0
【系统架构】遗留系统的技术栈迁移
什么是遗留系统(Legacy System)?根据维基百科的定义,遗留系统是一种旧的方法、旧的技术、旧的计算机系统或应用程序[1]。这一定义事实上并没有很好地揭露遗留系统的本质。我认为,遗留系统首先是一个还在运行和使用,但已步入软件生命周期衰老期的软件系统。它符合所谓的“奶牛规则”:奶牛逐渐衰老,最终无奶可挤;然而与此同时,饲养成本却在上升。这意味着遗留系统会逐渐随着时间的推移,不断地增加维护成本。 维护一个软件系统,就需要了解该软件系统的知识。若知识缺失,就意味着这会给维护人员带来极大的障碍和困难。从这个
张逸
2018-03-07
1.1K0
【系统架构】可视化与领域驱动设计
从DDD的角度,领域逻辑的分析可以运用战略方法Bounded Context。可是,一个问题是:如何获得Bounded Context ? 我查看了许多关于Bounded Context的书籍与文章,虽然都着重强调了它的重要性,也给出了一些实例,却对如何从需求——>Boundex Context这一点上语焉不详。 一个初步设想 我的初步设想是通过绘制场景图(但并不成熟)。我认为有三种绘制场景图的方式:商业画布,体验地图和流程图。我认为,商业画布可以作为需求分析(尤其针对初创产品)的起点。商业画布如下图所示:
张逸
2018-03-07
1.3K0
【系统架构】对CQRS的基础理解
CQRS由Greg Young提出,目前在DDD领域中被广泛使用。在我看来,它甚至可以被称为是一种架构风格,可以取得与MapReduce,REST同等的地位,对软件系统的整体架构产生重要影响。 CQRS即Command Query Responsibility Seperation(命令查询职责分离),其设计思想来源于Mayer提出的CQS(Command Query Seperation)。这种命令与查询的分离方式,可以更好地控制请求者的操作。查询操作不会造成数据的修改,因而它属于一种幂等操作,可以反复地
张逸
2018-03-07
2.2K0
处理遗留系统
处理遗留系统,几乎是每个程序员都不可能绕过的一件麻烦事儿。因为时间压力,技能不足以及功能复杂等诸多原因,常常使得遗留系统的代码变得糟糕混乱,可读性与维护性差,无法保证功能的可测试性,纠缠不清的代码让类、方法之间紧紧耦合在一起。如果遗留系统能够正常工作,那么我们还可以置之不理,即使代码接近腐烂的边缘,我们还可以得过且过。倘若我们需要维护遗留系统,或者需要为它添加新的功能,又或者需要将新的系统与遗留系统进行集成,就必须正视遗留系统带来的问题了。 处理遗留系统,首先需要分析和了解遗留系统,尤其这个遗留系统并非你开
张逸
2018-03-07
6100
如何在咨询项目开展Inception
本文通过我在咨询工作中的真实案例讲解了如何将敏捷开发的Inception与可视化咨询手段结合。2014初,我作为咨询师为客户提供咨询服务,负责一个新项目的敏捷咨询、架构以及开发编码工作,距今已有四年时间,文中内容已经不再敏感。个人认为,这次咨询的一些方法与经验有值得借鉴之处,因而分享给大家,以资参考。 破冰之旅 我们要开始的项目是重写原有的一个版本管理系统,将其一部分内容从主控板中剥离出来,并将原有的C实现改为Java实现。项目的目标和范围相对确定,但架构方案还有待进一步确认。此外,团队成员只有C语言背景,
张逸
2018-03-07
1.2K0
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战,赢鹅厂证书、公仔好礼!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档