写点什么

针对微服务应重新领会功能服务设计:来自 microXchg 大会的报告

  • 2017-02-22
  • 本文字数:1220 字

    阅读完需:约 4 分钟

今年 microXchg 微服务大会上, Uwe Friedrichsen 做了开幕报告。报告中探讨了“弹性功能服务设计”的核心理念,要点包括:微服务开发人员应该了解容错设计模式与缓存,但不能用于改善完全不好(过度耦合)的系统设计;理解领域驱动设计(DDD,Domain-Driven Design)和模块化的重要性;组件重在可替换性而非可重用性。

Friedrichsen 是 Codecentric 公司的 CTO,他在演讲一开始就指出了软件开发的目的在于交付业务价值。为实现该目标,软件必须在生产环境中运行并(高度)可用。微服务这样的现代架构风格意味着凡事皆分布(很多情况下是在不少于一个LAN 上的分布),因此故障在系统中是常见的并且是不可预测的

容错设计模式应该被开发人员所熟知,诸如电路熔断器(Circuit Breaker)、舱壁(Bulkhead)、超时与重试(Timeout and Retry)等。容错设计模式借助Michael Nygard 所著的《[Release It!( https://pragprog.com/book/mnee/release-it )》一书而广为人知。缓存虽然十分有用,但是在部署中应慎重使用,并非简单地应用就可以达到克服不好系统设计的效果,例如涉及多个独立服务的长激活路径。

Friedrichsen 展示了一系列用于微服务的“设计基础”(如下图所示),其中包括了一些侧重于高内聚、低耦合和分离关注的设计原则。这些原则在系统边界处尤为关键,虽然他们的理论早在上世纪 70 年代就由 David Parnas (PDF 链接)详细阐明了,但是他们依然常被错误地理解。

领域驱动设计(DDD,Domain-Driven Design)是一个十分有用的工具,但是不少开发人员过度聚焦于被 Friedrichsen 称做“实体 DDD”的领域静态上下文模型。通常系统的动态行为对业务行为、领域时间和数据流更具描述力。

不要从静态领域模型着手,魔法存在于系统的动态行为之中。

微服务开发人员不应纠结于可重用性,而是应该瞄准于可替换性。Friedrichsen 引用了 Fred Brooks 的说法,讨论多年来一直被开发人员所追求的软件重用承诺问题。Brook 建议对于需要创建可重用组件(超越那些适用单一用例目标的组件)的工作,通常需要付出三倍以上的工作投入。这意味只有当组件被无修改地被使用了四次以上,才会看到些许在可重用性上投入的反馈。

微服务系统中使用的交流模式也很大程度上影响了功能性服务设计,Friedrichsen 建议应将关注置于会限制未来更改和扩充能力的前期架构选取之上。

报告的结论和核心关键要点在于,当实现微服务这样的分布式系统时,系统的特性会使得多年来一直为我们所熟知的设计问题影响得以呈现出来并会倍增,因此开发人员和架构师需要重新领会功能服务设计。

Uwe Friedrichsen 演讲“弹性功能服务设计”的视频可以在microXchg 大会的YouTube 频道上看到。

查看英文原文: Relearning Functional Service Design for Microservices: Uwe Friedrichsen at microXchg


感谢冬雨对本文的审校。

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

2017-02-22 18:001355

评论

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

为什么Spring在Java程序员心中的地位这么高?

了不起的程序猿

spring 微服务 springboot java面试 spring-cloud

设计视角剖析产品需求评审的创新性透视

inBuilder低代码平台

产品 设计 需求评审

中关村企业家数字产业创新生态大会:星辰天合 CEO 胥昕发表主题演讲

XSKY星辰天合

AI 数字经济 软件定义存储

什么是世界模型World Models | AI大咖说

AIWeker

人工智能 AIGC 世界模型

工作中对InheritableThreadLocal使用的思考

京东科技开发者

FTX 创始人会因总统赦免而提前出狱吗?

TechubNews

MAMP PRO for Mac(专业的Web开发环境)v6.9永久激活版

小玖_苹果Mac软件

探讨篇(三):代码复用的智慧 - 提升架构的效率与可维护性

京东科技开发者

为什么说Java程序员想要提升竞争力,最好的方式是去看源码?

了不起的程序猿

程序员 jdk源码 架构师 java程序员 java面试

混合云网络过于复杂?ENS给你全局一张网的极致体验

华为云开发者联盟

网络 混合云 华为云Stack ens

VSD Viewer for mac(Visio绘图文件阅读器)v6.16.1激活版

小玖_苹果Mac软件

Word 2024 LTSC for Mac(word 2021)正式激活版

iMac小白

Bonree ONE获奖案例 |恭喜华福证券荣获经观“年度卓越研究创新证券公司奖”

博睿数据

智启云端算绘蓝图!天翼云斩获多项殊荣!

天翼云开发者社区

云计算 数字经济大会

010 Editor for Mac(最好用的十六进制编辑器)v14.0激活版

小玖_苹果Mac软件

Millumin 4 for mac(专业视频编辑软件)v4.18.i免激活版

小玖_苹果Mac软件

Screen Studio for Mac(屏幕录制软件)v2.20.4激活版

iMac小白

双重殊荣|博睿数据荣获“2024中国大数据产业年度趋势人物奖”、“2024中国大数据产业年度创新技术突破奖”

博睿数据

Java高频面试题(2025最新含答案)

Geek_Yin

Java 程序员 java面试 Java面试题 Java面试八股文

在哪些情况下建议使用SD-WAN?

Ogcloud

SD-WAN 企业组网 企业网络 SD-WAN组网 SD-WAN国际专线

StarRocks 存算分离在得物的降本增效实践

StarRocks

Fork for Mac(Git客户端)v2.49激活版

iMac小白

Native Instruments Kontakt 7 for Mac(强大音频采样器)v7.7.3激活版

小玖_苹果Mac软件

浅谈API错误码设计

京东科技开发者

首批!天翼云率先通过ITU国际标准认证!

天翼云开发者社区

云计算 天翼云

Macro Recorder Enterprise for mac(鼠标按键捕捉工具)v2.0.82激活版

小玖_苹果Mac软件

低成本高性能的企业组网

Ogcloud

SD-WAN 企业组网 企业网络 SD-WAN组网 SDWAN

Bonree ONE获奖案例 | 恭喜智己汽车、中顺洁柔获得IT168“2024年度创新解决方案奖”

博睿数据

iZotope RX 8 Advanced for mac (专业音频修复)v8.1.0永久激活版

小玖_苹果Mac软件

Charles for Mac(HTTP协议抓包工具)v5.0b12注册激活版

小玖_苹果Mac软件

QSpace Pro for Mac(好用的多窗格文件管理器)v5.0.4 激活版

小玖_苹果Mac软件

针对微服务应重新领会功能服务设计:来自microXchg大会的报告_语言 & 开发_Daniel Bryant_InfoQ精选文章