向读者们道歉,由于工作太忙,又对文章质量有追求,所以这篇文章产出速度较慢,但可以向大家保证:文章中的内容都经过了反复实践和踩坑。。在过去一年里我们团队做了大量的老系统重构和迁移,其中有大量的代码属于流水账代码,通常能看到是开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用性比较差。所以这讲主要想系统性的解释一下如何通过DDD的重构,将原有的流水账代码改造为逻辑清晰、职责分明的模块。
向读者们道歉,由于工作太忙,又对文章质量有追求,所以这篇文章产出速度较慢,但可以向大家保证:文章中的内容都经过了反复实践和踩坑。。在过去一年里我们团队做了大量的老系统重构和迁移,其中有大量的代码属于流水账代码,通常能看到是开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用性比较差。所以这讲主要想系统性的解释一下如何通过DDD的重构,将原有的流水账代码改造为逻辑清晰、职责分明的模块。
在我看来并不是MVC的基础上增加领域层,使用充血模型,解耦基础服务,我的代码就符合DDD了。 为什么要使用DDD? DDD分为战略部分跟战术部分,相信大家都认同DDD的核心在战略而非战术。而战略方面的核心我认为在业务建模,领域划分、统一语言等都在为业务建模服务。 为什么业务建模重要? 以前的开发流程有什么问题? 先说结论,开发人员交付的程序对业务方,产品人员,测 […]
对于一个架构师来说,在软件开发中如何降低系统复杂度是一个永恒的挑战。 01 为什么需要DDD 复杂系统设计:系统多,业务逻辑复杂,概念不清晰,有什么合适的方法帮助我们理清楚边界,逻辑和概念 多团队协同:边界不清晰,系统依赖复杂,语言不统一导致沟通和理解困难。有没有一种方式把业务和技术概念统一,大家用一种语言沟通。例如:航程是大家所理解的航程吗? 设计与实现一致 […]
阿里妹导读 本文主要针对Spring为什么要支持@Resource和@Autowired两个类似的注解做出了解答。 提到Spring依赖注入,大家最先想到应该是@Resource和@Autowired,很多文章只是讲解了功能上的区别,对于Spring为什么要支持两个这么类似的注解却未提到,属于知其然而不知其所以然。不知大家在使用这两个注解的时候有没有想过,@Resource […]
背景 在企业的商业活动中,订单是指交易双方的产品或服务交易意向。交易下单负责创建这个交易双方的产品或服务交易意向,有了这个意向后,买方可以付款,卖方可以发货。 在电商场景下,买卖双方没有面对面交易,许多情况下需要通过超时处理自动关闭订单,下面是一个订单的流程: 如上图所示,一个订单流程中有许多环节要用到超时处理,包括但不限于: 买家超时未付款:比如超过15分钟没有支付,订单 […]
CRUD (1)Event Sourcing (1)graphql (1)id (1)quarkus (1)rest (1)RocketMQ (1)Spring Boot (1)zk (1)zookeeper (1)事务消息 (1)值对象 (1)原子性 (1)唯一ID (1)子域 (1)幂等 (1)康威定律 (1)微服务架构 (1)总体方案 (1)持续集成 (1)支撑域 (1)故障恢复 (1)数据架构图 (1)方案选型 (1)日记 (1)服务发现 (1)服务治理 (1)服务注册 (2)机房 (1)核心域 (1)泄漏 (1)洋葱架构 (1)消息队列 (2)源码剖析 (1)熔断 (1)生态 (1)画图工具 (1)研发团队 (1)线程 (2)组织架构 (1)编码 (1)视频 (10)读写分离 (1)贵州 (1)软件设计 (1)迁移 (1)通用域 (1)集群化 (1)雪花算法 (1)顺序消息 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang