《先了解你的领域 浅谈事件风暴和领域驱动设计》:这本书讲的是如何用"事件风暴"和"领域驱动设计"来理解业务
作者的故事
作者MJ大叔是个波兰程序员,在瑞士工作13年了。他刚开始学"领域驱动设计"时,前辈让他看一本超难懂的"蓝皮书",结果他花了10年才真正搞明白!这期间踩了无数坑,所以现在写了这本书,就是不想让大家再走他的弯路。
为什么业务这么重要?
书里打了个比方:做软件就像盖房子。如果你连房子要用来住人还是开店都没搞清楚,就开始砌墙,最后肯定盖得乱七八糟!很多程序员只关心技术,结果做出来的东西根本不符合业务需求。
健身房案例
书里用健身房管理系统当例子。老板一开始说:"我们要做个健身房SaaS系统,包含从会员注册到饮食计划的所有功能!"
但MJ大叔说不能一上来就开发所有功能,要先搞清楚核心业务流程:
- 制作优惠方案
- 推广优惠
- 准备合同
- 签订合同
- 发放会员卡
事件风暴工作坊
这就像玩"贴纸游戏"!找一面大白墙,不同颜色的便利贴代表不同东西:
- 橙色:已经发生的事(比如"合同已签署")
- 红色:存疑的问题(比如"合同什么时候算正式生效?")
- 粉色:外部系统(比如支付平台)
- 黄色:补充说明
划分子领域
就像把大象分块吃一样,要把大业务拆成小块:
- 优惠管理(制作和发布优惠)
- 合同管理(准备和签订合同)
- 会员卡管理(发卡和到期处理)
划清边界
书里用体育比赛做比喻:足球、篮球、排球虽然都有"教练"和"球员",但规则完全不同。如果硬要写成一个系统,代码会乱得像意大利面!
所以要给每个子领域划清边界,就像给不同比赛制定不同规则手册。
画关系地图
最后要把各个模块的关系画出来,就像画国家之间的贸易路线图:
- 优惠模块要给合同模块提供优惠信息
- 合同模块要调用外部支付系统
- 合同生效后要通知会员卡模块发卡
作者的建议
MJ大叔最后说:业务理解只是软件架构的第一步!后面还要考虑:
- 系统怎么拆分(大单体还是微服务?)
- 怎么安全上线(蓝绿部署、金丝雀发布)
- 怎么防止黑客攻击
- 团队怎么协作开发
这些在他400页的《掌握软件架构》书里都有,评分4.7/5呢!
总之记住:技术是为业务服务的,不要本末倒置!就像MJ大叔常说的:"业务才是最重要的!"