写点什么

microXchg 微服务大会第一日总结:DDD、平台以及对企业的影响

  • 2017-03-05
  • 本文字数:2758 字

    阅读完需:约 9 分钟

在柏林举办的 microXchg 大会上,一组软件开发实践人士分享了关于微服务架构风格的最新理念。讨论的话题包括功能性服务设计(Functional Service Design)、集成领域驱动设计(DDD,Domain-Driven-Design)和 REST、使用嵌入技术(Transclusion)创建基于微服务架构的网站、微服务运行时平台的选择、微服务对企业和员工的影响,以及如何在物联网应用中使用微服务。

microXchg 微服务大会的开场报告是由 Uwe Friedrichsen 呈现的,报告探讨了“弹性功能性服务设计”中的核心理念。InfoQ 新闻已经报道了该演讲的细节内容,关键要点包括:微服务开发人员应该学会容错设计模式(例如回路熔断器和舱壁)和缓存,但不能用于改善已经很糟糕(过度耦合)的系统设计;理解领域驱动设计(DDD,Domain-Driven Design)和模块化的重要性;注重可替换性而非可重用性;对系统的动态行为建模等。

不要从静态领域模型着手,能够给我们带来惊喜的是系统的动态行为。

之后 Oliver Gierke 呈现了他的报告“ DDD 和 REST:领域驱动设计 API 还是 Web ”。他在报告一开始就向听众推荐了 InfoQ 的《领域驱动设计快速入门》一书,因为这本书提供了很好的DDD 核心理念入门。Gierke 建议软件工程师在开发领域模型时应尽量“使隐藏的概念清晰化”,并推荐通过观看“在DDD 中大规模使用Value Object ”,以进一步理解报告的主题。虽然一些开发人员可能会参考数据库模式建立传统的领域模型,但是DDD 类型的模型比简单的外键关系等其他模型更能清晰地表达业务理念。

DDD 领域模型比数据库模式揭示了更多的信息。

Gierke 明确指出,REST 并不等同于“提供 HTTP 的 CRUD”。在设计展现给用户的数据(即视图)时,必须注意要加入对这个问题的关注。报告中展示了一个 API 操作的四层模型,该模型涵盖了四个方面的内容,它们分别是:借助 API 的显式操作、一些事件形式的操作、事件溯源(ES,Event Sourcing)和命令查询职责分离(CQRS,Command Query Responsiblility Segregation)。Gierke 指出,“超媒体即应用状态引擎(HATEOAS,Hypermedia As The Engine Of Application State)”这一概念对于客户通信而言非常有用,可被用于与支持动作和状态转移的客户端交互,而非将它们发布为独立的领域相关文档。这或许是通过增加领域知识的复杂性来降低客户端协议的复杂性,但是 Gierke 建议听众考虑一下这种权衡是否有用:

HATEOAS 被用于给支持动作和状态转移的客户端发出指示。这或许是通过增加领域知识的复杂性来降低客户端协议的复杂性,但是你应问问自己:“什么会变更得更频繁,是业务规则还是所使用的协议?”

第三个报告是由 Gustaf Nilsson Kotte 呈现的“微服务网站”,报告探讨了高效构建网站的原则,这些网站虽然以单一站点形式交付,但是由多个微服务组成。报告的核心前提是每个微服务应该提供自己的前端,面向用户的页面应该使用嵌入技术构建。“页面片段缓存(ESI,Edge-Side Includes)”可以在服务器端提供嵌入技术,例如通过 Akamai Varnish 。还有一些框架在基于 JavaScript 的客户端提供嵌入技术,例如 AngularJS h-include 。报告中展示了每种方法的一些优缺点。

服务器端嵌入技术对比客户端嵌入技术

Kotte 在对报告做总结时指出,基于微服务的网站应以持续集成、去中心化管理和优化移动设备和蜂窝网络的性能为目标。在不考虑全局客户端依赖的情况下嵌入(Transclusing)服务器端资源,这可作为一种分解网页(和微服务)的方法,这个方法可以推动上述目标的达成。更多信息可以阅读 Kotte 在近期撰写的“微服务网站”一文。

此后, Dustin Huptas 做了名为“ AaaS,任何事情即服务。我们应如何选型?”的演讲。他提请听众注意,虽然一些服务提供商提供了以“某事即服务”命名的部署平台,但是应该慎重选择最适合自身应用的解决方案。Huptas 认为单体应用和经典的 SOA 应用最适合运行在物理的基础设施和基础设施即服务(IaaS,Infrastructure as a Service)上,基于微服务的应用最适合使用 Iaas、平台即服务(PaaS,Platform as a Service)以及新出现的功能即服务(FaaS,Function as a Service),而“无服务”类型应用最适合使用 PaaS 和 FaaS。

架构 / 技术即服务模型。

Huptas 给出了一种“自适应IT 立方体”,并探讨了从任一部署平台迁移到其它平台时所应考虑的架构、技术和企业(包括文化和过程)问题。必须注意要使用渐进的方式做迁移,而且迁移行动必须得到企业的认同。例如,软件应用的迁移或更新应该具有长期的承诺。

随后, Daniel Bryant (即这篇新闻的作者)做了题目为“微服务:对企业和员工的影响”的报告。报告的核心内容指出了采用微服务时存在着很多挑战,这些挑战主要围绕着企业、过程和人员方面的问题。Bryant 建议在实现一个基于微服务的应用时,企业应该聚焦于定义和沟通清晰的目标(包括商业价值和技术策略),在整个企业和技术栈上做优化反馈,并确保在企业中清晰地定义职责。

策略愿景的沟通。

Bryant 建议企业在设定目标前必须对状态有一个清晰的认识,并建议使用 Wardley 映射价值流程分析工具。强大的技术领导力(在整个团队中共享)同样非常重要。此外,“ InnerSource ”模型有助于更好地应用从大规模开源项目中获得的经验教训。为显示业务价值、架构质量和操作的有效性,必须将度量和信号“添加”到微服务中。Bryant 在对演讲做总结时,建议在采用 DevOps 方法的开始阶段就要定义好职责,并指出持续集成通常是驱动软件交付过程持续改进的催化剂,尤其当构建基于微服务应用的集成复杂度与日俱增。

第一日大会以 Fred George 的主题演讲“家庭中的物联网和微服务”结束。George 指出,我们当前生活在一个“智能代理时代”,充斥着智能助手技术,例如Apple Siri,Google Home 和Microsoft Cortana。这些物联网技术的主要创新点并非在于语音识别技术上,而是在于可以由终端用户创建的后台服务交互。

George 展示了自己家中部署的物联网技术,其中包括 Amazon Echo 、Phillips 的物联网灯泡、Apple TV 和具备物联网功能的交换机。这些设备的控制软件是使用 Ruby 和 Java 开发的微服务,它们通过 Docker Swarm 部署,并使用 RabbitMQ 事件总线作为通信手段。将所有物联网设备黏合在一起的软件开发技术原则包括:即时(just-in-time)设计、实现极小化的面向行为服务、将动作和结论作为全局事件进行发布,以及基于硬件的幂等性和冗余性构建可靠性。

microXchg 大会于今年 2 月 16 日到 17 日在柏林召开。可以在大会的YouTube 频道上看到所有报告的视频记录。

查看英文原文: microXchg Microservices Conference Day One Summary: DDD, Platforms, and Organisational Impact


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-05 18:001781
用户头像

发布了 227 篇内容, 共 74.8 次阅读, 收获喜欢 28 次。

关注

评论

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

生命中不重要的九件事情

石云升

10月月更

Go 中 Nil 理论上有类型,实践中无类型

baiyutang

golang 10月月更

Mock Service Worker:可用于浏览器的Mock服务

devpoint

Vue Mock msw 10月月更

同事跳槽阿里,临走甩给一份上千页的Linux源码笔记,真香

Java 程序员 架构 面试 后端

Java通过socket和DTU,RTU连接工业传感器通信

叫练

socket Modbus协议 java DTU RTU

架构实战营 - 模块五作业

Alex.Wu

Prometheus 基本查询(二)时序数据的瞬时向量

耳东@Erdong

Prometheus 10月月更

SpringBoot 实战:JUnit5+MockMvc+Mockito 做好单元测试

看山

Java Spring Boot Effective Spring 10月月更

【Android构建新工具】Bazel构建工具介绍

轻口味

android 构建工具 10月月更

Linux渗透:曲折渗透之路

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

ThreadPoolExecutor学习笔记

风翱

ThreadPoolExecutor 10月月更

区块链与智能革命的未来

CECBC

真香!肝完Alibaba这份面试通关宝典,我成功拿下今年第15个Offer

收到请回复

Java 面试 大厂Offer 20+大厂面经

CSS架构之Acss层

Augus

CSS 10月月更

Leetcode 题目解析:287. 寻找重复数

程序员架构进阶

算法 LeetCode 10月月更

linux之sudo使用技巧汇总

入门小站

Linux

【Vuex 源码学习】第十三篇 - Vuex 辅助函数的实现

Brave

源码 vuex 10月月更

太厉害了,阿里大佬用一篇神文把《数据结构与算法》讲的明明白白

程序员小呆

Java 程序员 架构师

阿里内部教程:千页Redis源码笔记,涨薪必备

Java 程序员 架构 面试 后端

为何实现碳中和已刻不容缓?

CECBC

千万级学生管理系统的考试试卷存储方案

刘琦Logan

016云原生之安全技术

穿过生命散发芬芳

云原生 10月月更

阿里P8高级架构师开发高并发系统经验总结

Java 程序员 架构 面试 后端

绿色电力交易是一场迫在眉睫,区块链记录每一笔绿色电力交易

CECBC

链路层的封装成帧和透明传输基本问题

Regan Yue

计算机网络 10月月更

在线最大公因数计算器

入门小站

工具

限时开源!阿里内部爆款的顶配版Spring Security笔记

Java spring 编程 架构 面试

百度智能云布局粤港澳大湾区,打造AI+工业互联网新高地

百度大脑

人工智能 百度

架构实战营_模块六作业_拆分电商系统为微服务

Rabbit

好家伙!华为内部Java系统优化笔记一夜之间跃居Github热榜第二

Java 架构 IT 计算机 知识分享

汽车的新能源之变,不仅在一块电池

脑极体

microXchg微服务大会第一日总结:DDD、平台以及对企业的影响_语言 & 开发_Daniel Bryant_InfoQ精选文章