服务导向架构(简称SOA,service-oriented architecture)已经死亡?你可能会这么想。

但其实不然。的确,随着新技术的出现,SOA本身的价值可能已经大不如前,但是SOA的遗产仍在推动微服务市场发展。

将SOA原则纳入微服务的设计和构建是确保您的产品或服务长期处于有利地位的最佳方式。从此意义上讲,理解SOA,对于在微服务世界中取得成功至关重要。

在本文中,我将解释设计微服务应用程序时应采用哪些SOA原则。

介绍

如今,在移动终端开发环境中,代码为王,构建具有RESTful界面的服务变得前所未有的容易,将其连接到数据存储就可以了。如果你想要更进一步,就把几个公共软件服务(免费或付费)整合在一起,这样你就可以拥有一个满足需求的持续交付流水线。欢迎来到现代Web和完全buzzworthy兼容的应用程序开发过程。

在许多方面,微服务是SOA的直接产物,有点像服务世界的朋克摇滚。没有严格的规则,只是一些基本原则让所有人保持大体想法一致。就像朋克摇滚,微服务最初信奉的是一种按自己的节奏来的行业伦理。此后微服务一直在不断发展,一些架构方式开始让微服务转变为主流。不光是使用微服务的dot com或Web公司——所有的公司都对此感兴趣。

定义

为体现本讨论的目的,以下是我将要使用的定义。

  • 微服务:特定业务功能的实现,使用队列或RESTful(JSON)接口作为单独的可部署工件,可以用任何语言编写,并利用持续交付流水线。

  • SOA:基于组件的架构,其目标是在组织内部跨技术组合促进重用。这些组件需要松耦合,可以是集中管理的服务或库,并要求组织使用单个技术栈来最大限度地实现可重用性。

基于微服务的开发的优点

正如您所知,微服务具有SOA所缺乏的几个很好的特性:

  • 允许规模较小、自给自足的团队拥有支持特定业务功能的产品/服务,这大大提高了他们渴望的业务敏捷性和IT响应能力。

  • 自动构建和测试,虽然可能不及SOA,现在是关键的筹码。

  • 允许团队使用他们想要的工具,主要围绕使用哪种语言和IDE。

  • 以敏捷为基础的开发与直接访问业务。微服务和移动开发团队已经成功地向企业展示了技术人员如何适应并接受不断反馈的业务。以往,瀑布式软件交付方法受制于不必要的开销和交付日期延长的影响,随着业务的变化,开发团队一开始创建的产品,在交付时常常无法满足业务需求。甚至像Rational Unified Process(RUP)这样的迭代开发方法在业务、产品开发和开发人员进行实际工作之间都有抽象层。

  • 对服务的最小粒度的普遍了解。关于“添加客户端业务功能还是客户端管理业务功能”的争论一直存在,这并不完美,但至少两者都可以被实际运营业务的业务方所了解。你可能不愿相信,但技术并不是所有业务(对于世界上大多数企业而言)。回溯到SOA还是行业霸主时期,一些服务只执行一个数据库操作,其他服务则在系统中添加客户端,当IT缺乏一致的标准,就会导致业务的混乱。

SOA如何助力?

看完这些定义后,你可能会想:“微服务听起来好得多”。的确,这正是未来发生演变的原因,只是它抛弃了许多在SOA世界中获得的经验教训。它放弃了SOA尝试实现的所有美好的事物,因为这一领域的IT供应商们为了推出更多的产品,而改变了一切。

企业集成模式(定义企业如何采用新技术或概念)是微服务利用SOA世界所做的工作的关键所在。每个参与整合空间的人都可以从这些模式中获益,然而它们只是概念,微服务是实现这些概念的一种很好的技术方法。

下面,我列出了微服务生态系统中应用SOA原理获得巨大成功的另外两个领域。

API网关(née ESB)

微服务鼓励点对点连接,每个客户端都可以按自己的方式处理日期和其他细微之处。由于大多数公司提供的微服务的数量急剧增加,这种方式不可持续。

因此,在SOA环境中,企业服务总线(ESB)旨在为不同应用程序提供通信方式。SOA原本打算将ESB用于服务组件之间进行传输—而不是整个企业的中心。厂商推动,大公司购买,人们对这种模式的评价十分糟糕。

ESB中成功的产品已经转变为今天的API网关供应商,便于单一组织集中管理它们所呈现的端点,并为那些多年来尚未触及但对业务至关重要的旧式服务 (通常是soa/soap) 提供转换服务。

首要标准

SOA具有WS- *标准。此标准虽然严厉,但在很大程度上保证了互用性。这些标准,特别是像WS-Security和WS-Federation这类更常见的标准,允许企业调用在其合作伙伴系统中使用的服务——虽然它们只是一个清单,任何人都能理解。

微服务已经开始形成一套正式标准,也带来了一票提供相应服务的供应商。OAuth和OpenID认证框架就是两个很好的例子。随着微服务的成熟,在内部构筑一切是有趣、充实、且对自身有益的,但最终令人沮丧的是,随着新特性的引入,它会产生大量的技术债务,代码不断地需要被修改。

标准正迅速整合的另一面是API设计和描述。在SOA世界中,有一种方法。对人而言它既没有美感,又几乎不可读,但是Web服务定义语言(WSDL)是一种通用的标准化的编目网络服务的格式。

截至2017年4月,所有主要的参与者(包括谷歌、IBM、Microsoft、MuleSoft和Salesforce.com)都参与了提供构建RESTful api的工具,这些都是OpenAPI倡议的成员。曾经那个有多个标准(JSON API、WASL、RAML和Swagger)的破碎市场,现在变成了可以用单一方式描述所有内容。

结论

SOA源于一组概念,它们与微服务架构具有相同的核心概念。SOA落后是因为是驱动了太多管理,而“仅仅让它工作”是不够的。

为了使微服务继续生存下去,利用这些服务的团队不仅需要汲取以往的宝贵经验, 并使用敏捷开发的方法重新引入它们,此外还需采取适当的反治措施,防止SOA管理机制的重演。接下来还需把 ITIL安全地置于能够令其茁壮成长的运营团队中。

微服务是否使SOA变得无关紧要?相关推荐

  1. 微服务架构 vs SOA架构

    微服务架构 vs. SOA架构 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. 一.面向服务的架构SOA 面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其 ...

  2. 微服务架构和SOA架构

    一.简介:  首先SOA和微服务架构是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件.  1.SOA(Service Oriented Architecture)面向服务的架构:他 ...

  3. 微服务架构与SOA的比较、优势、为实施微服务架构做好准备

    微服务架构与SOA的比较 SOA (Service-Oriented Architecture )即面向服务架构,是一种粗粒度.松藕合的面向服务架构设计方法. SOA 可以看作 BIS 模型. XML ...

  4. 微服务架构与SOA架构

    传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N个子系统,多个子系 ...

  5. 微服务架构是什么?微服务架构与SOA的区别

    微服务架构定义 微服务架构是一种架构风格和架构思想,它倡导我们在传统软件应用架构的基础上,将系统业务按照功能拆分为更加细粒度的服务,所拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API, ...

  6. 微服务架构以及SOA和微服务架构的区别

    微服务架构模式(Microservice Architect Pattern).近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注 微服务架构是一种架构模式,它提倡将单一应用程序划分成 ...

  7. 微服务架构和SOA的区别

    1. 2. 4 微服 务 架构 与 SOA 的 区别 1. 3. 1 微 服务 的 拆分 对于 一般 的 公司 而言, 实践 微 服务 有 非常 大的 技术 挑战, 所以 并不是 所有 的 公司 都 ...

  8. 微服务架构和SOA架构的区别

    SOA架构和微服务的区别与联系 文章目录 SOA架构和微服务的区别与联系 前言 一.区别与联系? 前言 微服务和SOA的区别联系 一.区别与联系? 业务系统实施服务化改造之后,原本共享的业务被拆分成可 ...

  9. SOA ESB 微服务 浅析

    SOA架构解析 SOA 全称是: Service Oriented Architecture,中文释义为 "面向服务的架构",它是一种设计理念,其中包含多个服务, 服务之间通过相互 ...

最新文章

  1. Cell子刊:特异靶向病原菌致病力的植物天然产物的作用机制
  2. 每日一皮:这年头没点绝活连洗车都不行...
  3. 技术评析:云计算与摩尔定律相悖?
  4. servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码
  5. 千灯腾碧人潮涌,蓬勃“雨花”气如虹
  6. Java面试基础篇——第九篇:BIO,NIO,AIO的区别
  7. OkHttp实现分析之Websocket
  8. java 下载工具_java文件下载工具类
  9. oracle数据库多表联查并排序,oracle数据库之多表联接查询(一)
  10. Numpy的常用方法
  11. C++学习 ---- 系列文章
  12. GET和POST的区别?
  13. 物联网技术是怎么分类的,物联网主要面临哪些难题?
  14. 十进制进制法_十进制转换成二进制及二进制转换成十进制是如何转换的?
  15. 2017.08.18【NOIP提高组】模拟赛B组 沙耶的玩偶(doll)
  16. 校园助手APP--简介及框架
  17. 经济型EtherCAT运动控制器(六):数据储存
  18. 用AI语音机器人有哪些需要注意事项
  19. ready 和 onload 的区别
  20. 周末交友好运气:请找中国张名记

热门文章

  1. Java-ReentrantLock初探
  2. 前端一HTML:二十四伪类
  3. Python单引号、双引号和三双引号的区别
  4. GSON的使用以及GsonFormat工具的安装
  5. 网络工程师成长日记365-IBIS西安工程回忆录
  6. Java Data Access Object Pattern(数据访问对象模式)
  7. 浏览器标准模式与怪异模式的区别
  8. CommandArgument传多个值到其它页面的方法
  9. SQLAlchemy 常用基本表
  10. android studio 7200u,超惊艳的设计!微软正式将Surface Studio和Surface Laptop带进中国:设计师们都看哭了...