写点什么

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:002132
用户头像

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

关注

评论

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

量子时代已来,与时代接轨,从这本书开始!

博文视点Broadview

使用 Docker 一键启动环境安装 ModStart

ModStart开源

iuap助力明日控股打造大宗贸易业财一体化中台

用友BIP

用友 用友iuap

WhiteSource SAST:下一代应用程序安全

龙智—DevSecOps解决方案

静态应用安全测试 SAST

【技术分享】猪八戒网DevOps之Java组件安全检测

八戒技术团队

Java DevOps 安全检测

低代码实现探索(三十六)表达式组件—基础组件的组件

零道云-混合式低代码平台

如何设置Perforce类型映射(P4类型映射)

龙智—DevSecOps解决方案

版本控制 游戏开发 二进制文件 游戏引擎 虚拟引擎

一文看懂JVM运行时内存分布

黄林晴

JVM

【有奖体验】:2分钟自动化部署2048小游戏到ECS

阿里云云效

阿里云 云原生 CI/CD 自动化部署 ECS

浅析人脸识别算法及其应用

得物技术

机器学习 算法 人脸识别 视觉 人脸

搭建 Restful Web 服务

码语者

REST API

大数据培训:偶然看到大数据面试题,拿出来分享

@零度

大数据 面试题

中国协同办公服务软件,你更看好哪一款?

易观分析

协同办公软件

面试突击29:说一下线程池7个参数的含义?

王磊

Java 面试 java面试

Android技术分享| anyLive 开源项目

anyRTC开发者

android 音视频 开源项目 移动开发 视频直播

极光笔记 | 基于Robotframework框架进行服务端SDK的自动化(C++版本)

极光GPTBots-极光推送

c++

华为云携手甘肃省医疗保障局,以数字科技为智慧医疗注入新动能

华为云数据库小助手

华为云数据库 华为云DRS 智慧医疗

java培训:判断元素是不是在集合里的方法

@零度

JAVA开发

iOS应用性能数据采集原理和优化实践 | 详细版

云智慧AIOps社区

ios 性能优化 数据采集 Object-c 技术干货

阿里开源 支持10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)

阿里云大数据AI技术

深度学习 开源 分布式 框架

春季招聘|Rust开发工程师们,欢迎加入!

非凸科技

15张图呈现数据库事务背后的并发原理

华为云开发者联盟

数据库 事务 并发 隔离

听见“SHE”说丨OpenHarmony Ladies不被定义的“AWESOME”

OpenHarmony开发者

OpenHarmony 热门活动 女性力量

今天直播:datop——用在冷热内存识别和跨 numa 访存有多优秀?

OpenAnolis小助手

Linux 开源 技术直播

基于 Nebula Graph 构建图学习能力

NebulaGraph

数据库 开源 分布式图数据库 机器学习数据库

web前端培训:WEB 安全相关面试题分享

@零度

前端开发 WEB安全

Apsara Stack 技术百科|云+应用一体化混合云全景智能化监控平台

科技互联网 企业数字化转型 混合云技术 混合云架构

紧急扩散!HDFS3.X 系列的 EC 纠删码策略有个安全隐患 HDFS-16420,极端情况下会造成数据丢失!

明哥的IT随笔

hdfs

英特尔以多元化至强产品路线图 助推行业强势发展

科技新消息

昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者

华为云开发者联盟

强化学习 mindspore ai框架 图学习 昇思MindSpore

恒源云(GpuShare)_PRGC:基于潜在关系和全局对应的联合关系三元组抽取

恒源云

机器学习 深度学习 算法 知识图谱

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