写点什么

SOA 对微服务的残余影响

  • 2017-11-16
  • 本文字数:1027 字

    阅读完需:约 3 分钟

近日, Tareq Abedrabbo 伦敦2017 µCon 微服务大会上说,SOA 对微服务架构设计的残余影响仍然存在,包括技术选型和组织方面的问题。最直接的一个例子就是大多数企业仍然区分对待架构师和开发人员,架构师负责出规范,开发人员负责实现。

OpenCredo CTO Abedrabbo 在大公司和小公司都工作过,这些公司在向微服务架构迁移的过程中仍然受到 SOA 的影响。他在演讲中对 SOA 和微服务进行了有趣的对比,不过他也强调,尽管 SOA 存在问题,但不能把全部责任都推给 SOA。

重用性与变更管理。Abedrabbo 认为,重用性之所以对 SOA 来说十分重要,主要是因为 SOA 缺乏成熟的变更管理工具。服务一旦部署好了,就不太愿意做出变更,因为成本太高。而微服务在变更管理方面具有一定的优势,因为对微服务做出变更的成本要小得多。

集成与组合。SOA 架构强调的是集成,客户端可以向服务器端发送任何格式的数据,包括 XML,服务器端负责解析和处理这些数据。而在微服务架构里则恰好相反,微服务注重组合,服务调用端需要自己知道如何调用其他服务。Abedrabbo 对此总结说,集成增加复杂性,而组合降低复杂性。

技术重用与功能重用。SOA 注重技术重用,我们总是希望尽可能多地重用一个服务,尽管对服务做出变更有很大阻力。而微服务架构更注重让小型的服务专注于特定的业务功能上。

静态与动态。SOA 需要处理所有的事情,一个 SOAP 调用不仅要处理业务逻辑,还要处理安全和事务方面的问题。而微服务更加动态,微服务生态系统的不同部分负责处理不同的问题。

有 SOA 背景的开发人员在构建微服务时容易使用反模式,比如分布式单体,他们只是对一个边界进行无机拆解。对一个已有的单体进行解耦时,如果不考虑边界问题就很容易犯这个错。在与遗留系统进行集成时太过关注底层的解耦,但没有考虑到通信保证、幂等性等因素,这也是很常见的问题。这样的系统只会增加复杂性,体现不出微服务的优势。

Abedrabbo 给出了一些建议用于解决这方面的问题:

  • 采用领域驱动设计。使用微服务实现领域逻辑,避免单纯地从技术角度设计可重用的微服务。
  • 不要使用规范的数据模型。规范的数据模型只会阻碍微服务系统的演化,所以我们应该使用局部数据视图。
  • 正常化元数据,并将它们从其他数据中分离出来。
  • 使用正确的工具。比如,每个微服务都应该有自己的数据库。多个服务共享一个数据库是一种反模式,不过如果使用图数据库或许会是个好办法。

明年的微服务大会将于2018 年11 月5 号至6 号召开。

查看英文原文 About the SOA Heritage Impact on Microservices

2017-11-16 18:0012103
用户头像

发布了 322 篇内容, 共 151.1 次阅读, 收获喜欢 148 次。

关注

评论

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

Vue整合HighCharts和ECharts实现数据可视化

闫同学

Vue 前端 10月月更

如何在 SAP BTP Java 应用里使用 SAP HANA 数据库

汪子熙

云原生 Cloud SAP 10月月更 btp

Go RPC入门指南:RPC的使用边界在哪里?如何实现跨语言调用?

王中阳Go

php Go RPC RPC框架 10月月更

Java基础(七)| 类、对象、封装和构造详解

timerring

Java 对象 封装 构造 10月月更

大数据ELK(二十七):数据可视化(Visualize)

Lansonli

10月月更 Visualize

新书上市|豆瓣8.6,首部全面披露中国游戏发展史的奇书!

图灵教育

游戏

Spring Boot「07」Loading initial data 02

Samson

Java spring Spring Boot 学习笔记 10月月更

元宇宙早已注定毁灭?《雪崩》中预言的末日病毒

脑极体

雪崩

打造安全的Open RAN

俞凡

架构 安全 OpenRAN

致MonoCats社群的一封信:邀请您与我们在以太坊开启新篇章

股市老人

新书上市|豆瓣8.6,首部全面披露中国游戏发展史的奇书!

图灵社区

Goroutine是什么?进程、线程、协程又是什么?有什么区别和联系?

王中阳Go

Go 线程 进程 协程 10月月更

「CSS畅想」当我拥有了一个小夜灯,我的CSS副属性被激活了

叶一一

CSS JavaScript 前端 10月月更

「趣学前端」开耍CSS的3D转换,不会玩滑板但能画滑板

叶一一

CSS 前端 10月月更

PriorityQueue 源码解析(二)

知识浅谈

Priority Queue 10月月更

「CSS畅想」有一天,我遇到了一个奇特的路灯,眼里一下子有了光

叶一一

CSS JavaScript 前端 10月月更

架构师的十八般武艺:架构治理

agnostic

架构治理

微信朋友圈高性能复杂度分析

兜里贼缺钱

「趣学前端」提到布局,我第一个会想到的是flex

叶一一

CSS 前端 10月月更

什么时候用Goroutine?什么时候用Channel?

王中阳Go

Go 并发 channel goroutine 10月月更

【LeetCode】用栈操作构建数组Java题解

Albert

算法 LeetCode 10月月更

架构师的十八般武艺:后记

agnostic

架构师

如何使用 CSS 提高页面性能?

CoderBin

CSS 面试 前端 优化 10月月更

架构实战训练营模块2-朋友圈复杂度分析

阿姆斯壮

#架构实战营 架构实战训练营9期

Smart Finance:熊市下,GameFi P2E热潮仍能得到延续

股市老人

python程序能打包吗?看这篇就知道了

芥末拌个饭吧

python 3.5+ pyinstaller 10月月更

【愚公系列】2022年10月 Go教学课程 030-结构体继承

愚公搬代码

10月月更

「趣学前端」玩转CSS的2D转换,也许能有个代码纸片人

叶一一

CSS 前端 10月月更

TSDB在高速公路大数据平台的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

SOA对微服务的残余影响_SOA_Jan Stenberg_InfoQ精选文章