TID大会学习心得之敏捷软件架构-微服务
敏捷微服务构建
王威: TW咨询师、架构转型教练、敏捷技术教练
敏捷的目标
敏捷的目标是提升效率?降低成本?减员增效?
敏捷:关注价值、快速反馈、快速响应。其的目标是提升响应力,响应力的提升不一定会提升效率、降低成本、减员增效
敏捷追求的是加速度,而不是速度(个人理解)。短期来看加速度不能提升速度,甚至会降低速度,但长期来看加速度可以提升速度!
敏捷的软件架构
敏捷的软件架构需要支持关注价值、快速反馈、快速响应。如何体现软件架构的响应力(或加速度)?相对单体、分层的架构来说,微服务具有独特的优势:高内聚低耦合、独立开发、独立运维、高可测试性、延迟决策….
- 大泥团
Product类承担了过多的职责:产品价格的职责、产品运输的职责、产品购买的职责、产品的个人化信息等等。各种职责的代码相互纠缠,形成一个大泥团。
- DDD(领域驱动设计)与界限上下文
从业务领域角度抽象界限上下文,对于产品分离出不同界限上下文的领域概念:市场领域的产品概念、销售领域的产品概念等等。
- 领域架构
将业务领域映射到一个独立的微服务中,由单个微服务承担此领域的产品职责。
关键问题
如何识别界限上下文?王威老师现场针对宠物商店的业务,组织一个DDD的工作坊(event storming),大致过程如下:
- 识别领域事件:
针对一个宠物商店有哪些领域事件:添加宠物、提交订单、收货确认等等 - 按时间轴排序:
针对上述领域事件根据时间轴进行排序 - 识别命令并关联到事件:
命令包括:用户触发命令、外部其他系统触发命令、定时任务三类。
用完成式描述命令,例如用户已添加宠物到购物车、用户已提交订单等,最后将识别的命令贴在第一个触发事件上,可能有多个事件对应同一个命令。 - 根据命令找到聚合边界得到一个微服务:
在时间轴上两个命令之间的时间和第一个相关命令聚合为一个微服务。
界限上下文的识别必须由领域专家确认,团队所有成员参加。这样利于大家达成共识。
关于event storming和DDD的扩展资料:
https://groups.google.com/forum/#!forum/dddcqrs
http://techbeacon.com/introduction-event-storming-easy-way-achieve-domain-driven-design
TID大会学习心得之敏捷软件架构-微服务的更多相关文章
- TiD大会学习心得之沟通交流
沟通交流是敏捷成功的关键要素,据相关调查阻碍敏捷的主要原因都与人有关:例如缺乏领导支持.团队缺乏协作精神.公司文化与敏捷相冲突等等:同时沟通交流也是团队建设.教练自身成长的重要支柱.下面结合在< ...
- TID大会学习心得之软技能
软技能(Personal development as a software developer) John Sonmez : Simple programmer的创始人 2.1 学习方法 学习不是一 ...
- 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍
微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...
- 朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)
十几年前就有一些公司开始践行服务拆分以及SOA,六年前有了微服务的概念,于是大家开始思考SOA和微服务的关系和区别.最近三年Spring Cloud的大火把微服务的实践推到了高潮,而近两年K8S在容器 ...
- ELK-6.5.3学习笔记–使用filebeat管理微服务日志
微服务日志打印. 转载于http://www.eryajf.net/2369.html 上边是输出了nginx日志,从而进行展示,以及各种绘图分析,而现在的需求是,要将微服务当中的日志汇总到elk当中 ...
- springcolud 的学习(二).SpringCloud微服务框架
为什么选择SpringCloud因为SpringCloud出现,对微服务技术提供了非常大的帮助,因为SpringCloud 提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中某个问题. 服 ...
- Dubbo学习系列之十七(微服务Soul网关)
论起微服务,哪能不谈网关,老将有Zuul,后继有Gateway,但这些都和SpringCloud关系密切,其他网关如Kong,因Lua原因,玩起来略不顺手.这不,就来了个Soul,我顺便拿来整进了我在 ...
- WCF学习心得------(三)配置服务
配置服务 配置服务概述 在设计和实现服务协定后,便可以进行服务的配置.在其中可以定义和自定义如何向客户段公开服务,包括指定可以找到服务的地址,服务用于发送和接受消息的传输和消息编码,以及服务需要的安全 ...
- 推荐一本书学习springcloud书籍的SpringCloud微服务全栈技术与案例解析
整本书还算是挺详细的,基本大部分轮子都讲到了,唯一不足就是版本比较旧,而且springcloud 版本现在迭代这么快 很多内容其实高版本中完全没有了,得自己敲代码多采坑 前面基本章节其实可以大致略过一 ...
随机推荐
- Bravebeart
E - Bravebeart Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Sub ...
- 理解autorelease
如果你能够真正的理解autorelease,那么你才是理解了Objective c的内存管理.Autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是 ...
- Redis的缓存策略和主键失效机制
作为缓存系统都要定期清理无效数据,就需要一个主键失效和淘汰策略. >>EXPIRE主键失效机制 在Redis当中,有生存期的key被称为volatile,在创建缓存时,要为给定的key设置 ...
- Linux常用命令学习7---(磁盘管理df du、磁盘的分区和格式化fdisk parted)
1.磁盘管理 在服务器的维护中,我们需要关心服务器的磁盘使用了多少.还有多少的剩余空间.某个文件有多大.某个文件夹内的所有文件在一起一共占用的多少空间……问题.以便我们在合适的时机为服务器添加硬 ...
- 【转】算法杂货铺——k均值聚类(K-means)
k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...
- [linux] grep awk sort uniq学习
grep的-A-B-选项详解grep能找出带有关键字的行,但是工作中有时需要找出该行前后的行,下面是解释1. grep -A1 keyword filename找出filename中带有keyword ...
- 【原创】AC自动机小结
有了KMP和Trie的基础,就可以学习神奇的AC自动机了.AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配. AC自动机 其实 就是创建了一个状态的转移图,思想很 ...
- pyhon 模块与库
引用“http://www.iplaypython.com/module/” 引用“http://codingnow.cn/language/265.html” Python模块是什么? 玩蛇网:一个 ...
- 【Mybatis高级映射】一对一映射、一对多映射、多对多映射
前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...
- Hibernate关联关系的映射
实体之间的关系 实体之间有三种关系 一对多:一个用户,生成多个订单,每一个订单只能属于一个用户 建表原则:在多的一方创建一个字段,作为外键,指向一的一方的主键 多对多:一个学生可以选择多门课程,一个课 ...