写点什么

Eric Evans 谈领域驱动设计、微服务与边界

  • 2015-06-22
  • 本文字数:973 字

    阅读完需:约 3 分钟

在今年于伦敦举办的 DDD Exchange 大会的主题演讲中, Eric Evans 表达了他对微服务的看法。尽管微服务这个词现在已经有点炒作的味道,但Evans 相信微服务确实蕴含着巨大的价值,它为我们带来了或许是迄今为止最好的实现领域驱动设计(DDD)的环境。

对于Evans 来说,良好设计最重要的关键因素是迭代。他也相信,微服务是继SOA 之后第二次对实现正确的架构设计的尝试。这两者之间的一个主要区别在于:微服务非常强调隔离性,相比较而言,过去在尝试SOA 的过程中经常使用数据库作为集成的手段。微服务允许自治的团队各自开发不同的服务, DevOps 的发展则使服务能够独立地创建与部署,这就为我们提供了天然的边界,在开发过程中不必与其它服务纠缠在一起。他同时也相信,微服务中所用到的技术正在变得更为轻量级,并且耦合性更低。

微服务为 DDD 带来了真正的边界,而微服务社区所推崇的各种思想,例如不要共享,这正是我们希望在边界上下文中能够实现的能力。但 Evans 同时也提醒我们,如果缺乏一种高层次的设计视图和策略,那么仍有可能发生混乱的情况,大量的服务看起来就像老式的一体化、相互纠缠的系统。Evans 强调,并不是每一个大型系统的设计都是良好的,他认为微服务能够在经过良好设计的服务与设计及实现很糟糕的服务之间创建一种隔离性。

在 Evans 看来,一个微服务的操作方式恰好能够生成一个良好的边界上下文,至少这是一个良好的起点,它在服务与上下文之间建立起了某种一对一的映射。随着服务开始逐渐小型化,并以某种非常特定的方式与其它小型服务进行协作与交互,那么这个边界上下文或许能够涵盖所有这些小型服务。不过,以他的经验来说,我们经常会设计出过于庞大的边界上下文。传统的一体化服务端应用总是会成为一个单一的上下文,这会造成这个上下文过于庞大。最后,他再次重审,应由具有这方面技能的人从一个更高的层次去发现系统中的领域与上下文,这一点对于应用的开发十分重要。

下一年度的DDD Exchange 大会预定于2016 年6 月10 日举办,现已开放注册。

查看英文原文 Eric Evans on DDD, Microservices and Boundaries


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-06-22 04:374043
用户头像

发布了 428 篇内容, 共 193.0 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

模块三作业 - 消息队列系统架构设计文档

青鸟飞鱼

架构实战营

模块3作业 3

wade

#架构实战营

架构实训营 作业三——消息队列架构设计文档

开拓纪

第三章作业 #架构实战营

【LeetCode】制作 m 束花所需的最少天数Java题解

Albert

算法 LeetCode 5月日更

架构实战营 模块三:学习总结

👈

架构实战营

Java Stream 源码分析

Yano

Java stream

Semaphore

wzh

Java 并发 java工具类

一文看懂 Go 的数据类型

Rayjun

Go 语言

前端百题斩[001]——typeof和instanceof

执鸢者

面试 大前端

自研集群 + MySQL 存储详细架构文档

@oo?金樱子

9个国外最佳免费编程学习一站式网站,谁用谁知道!

北游学Java

Java c++ php JavaScript

ARTS - week 8 补打卡

steve_lee

消息队列详细设计架构文档

Hesher

架构 MQ Architecture 消息队列 架构实战营

架构训练营——模块2作业

圆心角

【架构实战营】第3模块作业

swordman

架构实战营

架构实战营模块三作业

冷大大

作业 架构实战营 模块三

假如只剩下canvas标签

执鸢者

大前端 canvas

applet跨域访问安全性问题(java.security.AccessControlException:access denied)

xcbeyond

跨域 5月日更 疑难杂症

模块3作业 消息队列架构设计文档

TH

架构实战营

模块3 学习总结

TH

架构实战营

读写锁

wzh

Java 并发编程 并发 JUC

架构训练营模块3作业《消息队列架构设计文档》-江哲

江哲

用组合式创新模型做产品建模

石云升

组合式创新 5月日更 产品建模

Spark中将DAG划分为Stage核心算法

五分钟学大数据

spark 5月日更

架构实战营-模块3-作业

笑春风

第三课作业

杰语

消息队列架构设计

俞嘉彬

架构实战营

HBase与Hadoop的关系

大数据技术指南

HBase 5月日更

优秀程序员都在注意的十个点

好好学习,天天向上

Java 设计模式 代码 技巧

通过 Netty、ZooKeeper 手撸一个 RPC 服务!

Yano

Java 微服务 Netty RPC

消息队列构架设计文档

Chris Cheng

Eric Evans谈领域驱动设计、微服务与边界_架构_Jan Stenberg_InfoQ精选文章