写点什么

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

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

关注

评论

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

真香!阿里P8耗时半年著作660页Java高并发与网络编程实战总结

Java架构之路

Java 程序员 架构 面试 编程语言

APP专项测试 —— 弱网测试

行者AI

测试

从中心到边缘,IoT正变为互联网之上的一张大网

华为云开发者联盟

物联网 IoT 网络

应对游戏业务的四大“崩溃”场景有妙招,安全畅玩不是梦!

华为云开发者联盟

游戏 场景 崩溃

使用LL算法构建AST —— 编程训练

三钻

Java 算法 大前端 七日更

摸透原理|一文带你了解 Redis 列表底层的实现方式

Java架构师迁哥

区块链钱包app系统开发源码案例

有效破解行业难点 专家称区块链+医疗发展还需找准应用场景

CECBC

区块链 大数据 医疗

ECS实践案例丨逻辑卷的创建和扩容操作指导

华为云开发者联盟

数据库 数据 服务

顶会两篇论文连发,华为云医疗AI低调中崭露头角

华为云开发者联盟

人工智能 医疗 华为云

Java并发编程:AQS的自旋锁

李尚智

Java java 并发

Prometheus的使用:编写自己的exporter

Rayzh

Prometheus 监控告警

滴滴Java后台3面题目:网络+内存溢出+各种锁+高性能+消息队列

Java架构之路

Java 程序员 架构 面试 编程语言

字典树 —— 字符串分析算法

三钻

算法 大前端 七日更 字典树

万字详解 阿里面试真题:请你说说索引的原理

Java架构师迁哥

week5-homework-一致性哈希

J

极客大学架构师训练营

10万级ETL批量作业调度工具Taskctl-Web应用版0元授权永久使用

敏捷调度TASKCTL

大数据 kettle 运维自动化 海豚调度 批量任务

Nice!有了这份Alibaba内部 “Java面试宝典”,跳槽面试稳了

Java架构之路

Java 程序员 架构 面试 编程语言

用 Range 实现 CSSOM 精准操作

三钻

大前端 Range 七日更 CSSOM

用 Proxy 简单实现 Vue 3 的 Reactive

三钻

Java 大前端 Vue3 Proxy 七日更

鹅厂面经,希望对大家有用

Bryant-cx

大前端 面经

数字资产币种钱包APP系统开发方案

用 JavaScript 实现寻路算法 —— 编程训练

三钻

Java 算法 大前端 七日更 寻路算法

四年Java开发,刚从美团、京东、阿里面试归来(已拿offer),分享个人面经

Java架构之路

Java 程序员 架构 面试 编程语言

区块链和通证经济带来的,是一部分股份制公司的消亡与重生

CECBC

金融 通证经济

架构师训练营第 1 期 第 13 周作业

李循律

极客大学架构师训练营

用 JavaScript 实现一个 TicTacToe 游戏 —— 编程训练

三钻

Java 算法 大前端 游戏开发 七日更

TARS 服务信息上报|全方位服务监控

TARS基金会

微服务 TARS 监控告警

TARS RPC 通信框架|提供多种远程调用方式

TARS基金会

微服务 RPC 远程调用 TARS

程序员必看的Redis6.0多线程性能测试结果及分析 你看懂了嘛?

比伯

Java 编程 架构 面试

阿里P8整理出Nginx笔记:Nginx应用与运维实战核心篇

996小迁

Java nginx 架构 面试

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