敏捷微服务构建

王威: 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

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/cuiyunfeng/p/5716035.html

TID大会学习心得之敏捷软件架构-微服务相关推荐

  1. javaweb k8s_K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程...

    K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程 课程内容是关于Kubernetes微服务架构学习课程,基于K8S开展ASP.NET核心进行微 ...

  2. BT源代码学习心得(五):统一网络服务接口--RawServer -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(五):统一网络服务接口--RawServer author:wolfenstein 以后的部分都需要网络服务(种子文件的生成在本地就可以完成,但是通过这些种子文件下载实际的内容和提 ...

  3. 反脆弱性的软件架构 - 微服务

    在传统的企业级软件中我们通常有客户端.服务端,在服务端一般分为服务处理.业务逻辑和数据访问等几层.当有新的需求需要加入到软件中时,我们就在各层中加入相应的代码,然后重新测试和部署我们的软件. 当软件体 ...

  4. c# 微服务学习_资深架构师学习笔记:什么是微服务?

    们先来看看为什么要考虑使用微服务. 构建单体应用 我们假设,您开始开发一个打车应用,打算与 Uber 和 Hailo 竞争.经过初步交流和需求收集,您开始手动或者使用类似 Rails.Spring B ...

  5. 学习笔记(2):2019Java微服务架构2.0-微服务解决复杂问题

    立即学习:https://edu.csdn.net/course/play/25600/306995?utm_source=blogtoedu 微服务架构是一种架构思想,而真正的开始是采用分布式系统开 ...

  6. 微服务架构学习与思考(05):微服务架构适用场景分析

    一.简述 在实际开发中,需要考虑多种因素,来决定采取哪种架构模式才适合当前业务发展情况. 毕竟微服务也不能"包治百病",不要把它当做万能药.企业研发哪里得病了,觉得只要把" ...

  7. SpringCloud学习笔记002---Spring Cloud实战微服务准备

    =============================================================  开始使用Spring Cloud实战微服务 =============== ...

  8. soul网关mysql8_Dubbo学习系列之十七(微服务Soul网关)

    论起微服务,哪能不谈网关,老将有Zuul,后继有Gateway,但这些都和SpringCloud关系密切,其他网关如Kong,因Lua原因,玩起来略不顺手.这不,就来了个Soul,我顺便拿来整进了我在 ...

  9. 学习SpringCloudAlibaba(二)微服务的拆分与编写

    目录 一.单体架构VS微服务架构 1.单体架构 ​(1).单体架构的优点 (2).单体架构的缺点 2.微服务架构 (1)微服务的特性 (2)微服务架构图 (3)微服务的优点 (4)微服务的缺点 (5) ...

最新文章

  1. 从零部署TiDB集群
  2. 高并发编程-通过volatile重新认识CPU缓存 和 Java内存模型(JMM)
  3. 〖前端开发〗HTML/CSS基础知识学习笔记
  4. 蘑菇街2019校招题目总结
  5. 双指针(下标)的应用
  6. 信号报告(Java)
  7. 3行python代码实现假聊天机器人(慎入:这是假机器人!!!)
  8. pythotn基础篇——条件分支与循环--4
  9. 只会编程的程序员没有前途
  10. linux端更新pip
  11. 2022年中式面点师(初级)考试题库及模拟考试
  12. 机器学习笔记一. 特征工程
  13. 2016.3.24 OneZero站立会议
  14. 几款科学计算显卡对比(GTX Titan X、GTX 980、Tesla K40 K80 及quadro K4200) 科学计算显卡的两个主要性能指标: 1、CUDA compute capabili
  15. 电脑桌面计算机找不到,电脑桌面没有了怎么恢复?电脑桌面没有了的恢复方法...
  16. 算法思想之递归分治回溯
  17. “有钱了”的理想汽车,能否拿下自动驾驶赛道入场券?
  18. QNX4系统启动过程
  19. 概念:监督学习、无监督学习与半监督学习
  20. Typora 标题无法对齐

热门文章

  1. Misc(网络+组成原理)
  2. Android内存泄漏总结
  3. Shell脚本编程总结
  4. HDU 6264 Super-palindrome
  5. Daily Scrum Meeting ——ZeroDay(Beta)12.08
  6. Enterprise Library 企业库 V4.1
  7. 用WPF山寨折线图,抄?是狠狠的抄
  8. Java笔记(十九) 反射
  9. k-Nearest Neighbors 实战1 简单的电影分类实例
  10. windows平台搭建Mongo数据库复制集(类似集群)(一)