但其实不然的确,随着新技术嘚出现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尝试实现的所有美好的事物,因为这一领域的IT供应商们为了推出更多的产品而改变了一切。
企业集成模式(定义企业如何采用新技术或概念)是微服务利用SOA世界所做的工作的关键所在每个参与整合空间的人都可以从这些模式中获益,然而它們只是概念微服务是实现这些概念的一种很好的技术方法。
下面我列出了微服务生态系统中应用SOA原理获得巨大成功的另外两个领域。
微服务鼓励点对点连接每个客户端都可以按自己的方式处理日期和其他细微之处。由于大多数公司提供的微服务的数量急剧增加这种方式不可持续。
因此在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安全地置于能够令其茁壮成长的运营团队中