InfoQ技术大会双节活动折上折,限时特惠,满10000-1000>> 了解详情
写点什么

SOA 对微服务的残余影响

2017 年 11 月 16 日

近日, 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:009285
用户头像

发布了 321 篇内容, 共 113.8 次阅读, 收获喜欢 116 次。

关注

评论

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

NewSQL分布式数据库,例如TIDB用K/V的底层逻辑

读字节

大数据 分布式 分布式存储 RocksDB TiDB

Elasticsearch Reindex & Index Alias

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

MySQL原理

Sakura

28天写作 28天挑战 3月日更

习惯

lenka

3月日更

硬核干货丨借助多容器Pod,轻松扩展K8S中的应用

RancherLabs

四、MongoDB查询(2)

Kylin

读书笔记 分布式数据库mongodb 3月日更

如果写文字只是自我表达「Day 19」

道伟

28天写作

Python 注释

HoneyMoose

深入分析mysql为什么不推荐使用uuid或者雪花id作为主键

xcbeyond

MySQL MySQL优化 3月日更

第二届开发者社区【金码奖】,揭晓了!

京东科技开发者

开发者 开发者社区

Everything is Serverless,从开源框架对比说起

华为云开发者社区

云计算 开源 Serverless 云原生 无服务器

FutureTask源码解析

徐海兴

多线程 Future future设计模式

(28DW-S8-Day19) 以太坊是什么

mtfelix

28天写作

如何通过XMind 实践OKR 工作法

博文视点Broadview

数据分析利器之Excel功能篇

小飞象@木木自由

Hello World!!!

小太阳

算法攻关-从上到下打印二叉树(O(n))_offer32

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 算法攻关

法大大完成D轮9亿元融资,腾讯领投

人称T客

问题剖析之消息队列的架构设计

Kylin

读书笔记 消息队列架构 3月日更

Redis工具收费后新的开源已出现

happlyfox

学习 工具软件 28天写作 3月日更

甚至你可以在网抑云上听歌

ES_her0

28天写作 3月日更

软考备考视频的目录

IT蜗壳-Tango

3月日更 软考

正则表达式.06 - 断言

insight

正则表达式 3月日更

醒一醒,讲到 ZooKeeper 的选举机制了

HelloGitHub

Java zookeeper ZooKeeper原理

ARTS - Week 6

Khirye

Java LeetCode arts

Python 通过命令行安装包的时候 pip 提示错误

HoneyMoose

你的决定我做主——锚定效应

Justin

心理学 28天写作 游戏设计

翻译:《实用的Python编程》04_04_Defining_exceptions

codists

Python

Python yaml 使用的包

HoneyMoose

“七大属性加持,三个全新升级组件”这个高性能利器有点厉害

华为云开发者社区

数据库 数据湖 Clickhouse 华为云 集群

历史技术栈体系即将崩溃,我们如何应对?

VoltDB

数据库 5G 边缘计算 VoltDB

SOA对微服务的残余影响-InfoQ