【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

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

关注

评论

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

架构师训练营第四周作业

跳蚤

原来Canal也可以做HA!

大数据老哥

机器学习笔记之:监督学习

Nydia

Elasticsearch 乐观锁并发控制

escray

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

项目管理系列(9)- 从 0 到 1 搭建 PMO(二)

Ian哥

28天写作

项目管理系列(9)- 项目分析与报告

Ian哥

28天写作

一起进阶一起拿高工资!Java开发进阶-log4j2日志脱敏原理分析

看点代码再上班

Java 程序员 log4j 编程开发

Spring Boot 中集成Lucence

武哥聊编程

Java springboot SpringBoot 2 28天写作 Lucence

2020出行之变(二):新能源汽车的拥挤牌桌

脑极体

一顿午饭的现实思考

石君

28天写作 择业

2021开启数据结构与算法的学习之旅

Nick

学习 flag 新年计划

数字货币交易所软件开发|数字货币交易所系统APP开发

系统开发

“苹果陷阱”无法避免,但我们已经在路上

JiangX

苹果 供应链 28天写作 制造业

当情绪生病?就嫁接一段新的记忆「幻想短篇 16/28」

道伟

28天写作

HASH碰撞问题一直没真正搞懂?这下不用慌了

架构精进之路

算法 hash 七日更 28天写作

JVM垃圾回收机制是怎样的,何时触发YoungGC或FullGC操作?

Java鱼仔

Java 面试 JVM 垃圾回收

第九周 性能优化(三)课后作业

简简单单

Mac 电脑安装Etcd和Go的etcd/clientv3

BigYoung

Mac etcd client Go 语言

产品经理训练营作业-第二周-产品思维和产品意识

.nil?

产品经理训练营

四个策略,三个“坑”,读《架构师也不写代码》有感

李忠良

28天写作

如何快速提升自己的能力?高效学习让你更出类拔萃。

一笑

学习方法 28天写作

我是这样使用极客时间APP的

熊斌

极客时间 28天写作

架构师训练营第四周学习总结

跳蚤

Spring Boot 中集成 Shiro

武哥聊编程

Java springboot SpringBoot 2 shiro 28天写作

网络出口究竟选择防火墙,还是路由器?

产品经理训练营笔记-产品思维和产品意识(中)

.nil?

产品经理训练营

28天瞎写的第二百二十七天:跨年夜的故事

树上

28天写作

新荣耀历险记:带着“神装”踏上英雄试炼路

脑极体

碎碎念之「卡马克的反脆弱想法生成系统」

Justin

心理学 创意 28天写作 反脆弱

【CSS】格仔背景

德育处主任

html css3 大前端 CSS小技巧 28天写作

第九周 学习总结

简简单单

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