【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

微信客服接口的返回数据

HoneyMoose

一文读懂 Zebec Chain 的“先行网络” Nautilus 链

鳄鱼视界

学习算法必备的《程序员代码面试指南》免费领取啦!!

小小怪下士

编程 程序员 算法 LeetCode 数据结构与算法

在 JavaScript 如何下载文件

devpoint

JavaScript Blob download

Ruby on rails入门

阿呆

ruby-on-rails

热点面试题:协商缓存和强缓存的理解及区别?

控心つcrazy

JavaScript https 面试题 HTTP 前端面试题

微信 API 中调用客服消息接口提示错误返回限制

HoneyMoose

ByteHouse:基于ClickHouse的实时数仓能力升级解读

字节跳动数据平台

数据库 大数据 数据分析 Clickhouse 企业号 2 月 PK 榜

一文读懂 Zebec Chain 的“先行网络” Nautilus 链

西柚子

打造IM生态,WorkPlus个性定制让企业业务管理再升级

WorkPlus

自动驾驶过冬,需要点燃“降本增效”的炉火

脑极体

自动驾驶

CrossOver2023永久版虚拟机软件下载

茶色酒

CrossOver2023

状态机设计中的关键技术

timerring

FPGA

五分钟实现pdf分页

程序员架构进阶

PDF 2月春节不断更 源码搭建 2月日更 pdfbox

设计模式-组合模式和建筑者模式详解

C++后台开发

数据结构 设计模式 组合模式 后端开发 Linux服务器开发

状态机设计中的关键技术

timerring

FPGA

DNS 原理及大规模高性能监测

郑州埃文科技

DNS

泼辣修图2023最新版本修图工具功能介绍

茶色酒

泼辣修图2023

状态机设计中的关键技术

timerring

FPGA

静态导航页设计与开发

AR7

团队管理 导航网站 vue next

软件开发如何做好需求管理?方法+工具

PingCode

产品经理 管理工具 软件需求管理

SpringBoot 三大开发工具,你都用过么?

程序员大彬

springboot

代码分享 | 情人节表白黑科技

鼎道智联

代码 情人节 爱心代码

架构实战 6 - 电商微服务拆分

架构实战营 「架构实战营」

一文读懂 Zebec Chain 的“先行网络” Nautilus 链

股市老人

私有化即时通讯软件可以保证员工的通讯安全吗?

WorkPlus

10w+训练标签?成本太高!PaddleNLP情感分析赋能消费“回暖”

飞桨PaddlePaddle

paddle nlp 飞桨

INFINI 产品更新啦 20230210

极限实验室

elasticsearch 极限实验室 极限网关 infini gateway INFINI Console

一文读懂 Zebec Chain 的“先行网络” Nautilus 链

EOSdreamer111

由ChatGPT引发的关于AI的一些思考

xiaoboey

AI ChatGPT

如何通过极狐GitLab 平滑落地 Java 增量代码规范?

极狐GitLab

Java DevOps 代码规范 极狐GitLab checkstyle

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