写点什么

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

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

关注

评论

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

百度京Fun生活节 双旦福利HIGH 翻全城

DT极客

Rust布道者张汉东倾授,入门Rust初学者都要攻破哪些难点?

华为云开发者联盟

学习 rust 语言

重新发现科技与人文的互动

脑极体

如何使用mock应对测试所需随机数据

华为云开发者联盟

测试 数据 Mock

实用流程工具,浅析LR.NET配置型工作流引擎

雯雯写代码

.net 工作流

写出一手烂代码的19条准则

Java架构师迁哥

爆赞!P8架构师总结29篇多线程与高并发+设计模式核心笔记

Java架构追梦

Java 学习 架构 面试 多线程高并发

LeetCode题解:239. 滑动窗口最大值,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Linux基本操作命令

行者AI

Linux

北京一咖啡店启动数字人民币应用场景测试 店员:目前处于内测阶段

CECBC

数字人民币

送你一份迷你书,全面了解如何做好大促技术备战

京东科技开发者

DevOps

破除数据垄断,数据上链或是关键

CECBC

区块链 大数据

ClickHouse利器—如何提高留存计算速度

行者AI

数据库

跨年巨作!13万字!腾讯高工纯手写“JDK源码笔记”直接带你飙向实战

比伯

Java 编程 架构 面试 计算机

RPC Demo(二) 基于 Zookeeper 的服务发现

Java zookeeper RPC 服务发现

令数字起舞,让自然微笑:TECH4ALL的2020启示录

脑极体

近些年有哪些口碑炸裂的项目管理工具?各具特色的项目管理工具我们该如何选择?

爱吃小舅的鱼

项目管理 程序人生

Flink Forward Asia 2020 -- Keynote 总结

Apache Flink

flink

云挖矿APP系统开发|云挖矿软件开发

系统开发

架构师训练营大作业

Gosling

架构师训练营第 1 期

IPFS分布式存储矿机系统APP软件开发

系统开发

第一张区块链完税证明在深圳开出,区块链政务应用再获突破

CECBC

区块链 电子证明

测开之函数进阶· 第6篇《闭包》

清菡软件测试

测试开发

技术干货 | 六分钟学会使用 HBuilder 引入构建 mPaaS 小程序

蚂蚁集团移动开发平台 mPaaS

小程序 uni-app mPaaS

软件测试——网络协议知识(二)

测试人生路

软件测试 网络通信协议

华为云·云享专家李万龙: IoT 梦想,从0到1的实现

华为云开发者联盟

技术 物联网 IoT

架构师 3 期 3 班 -week6- 作业

zbest

作业 week6

分享一个普通程序员的“沪漂”六年的历程以及感想

程序员老猫

回忆录 经历 年终总结 沪漂 上海买房

Java中的常量

cdhqyj

Java

仅4步,就可通过SQL进行分布式死锁的检测与消除

华为云开发者联盟

数据库 sql 死锁

通达同城快递设计方案

garlic

架构师训练营第 1 期

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