正如Bon Jovi曾经唱过那样,“一切还是老样子,只是名字改了而已。”对于曾唤起许多架构师、开发者以及IT专业人士对希望交给历史书的大型主机时代回忆的SOA来说,这似乎的确如此。不过根据行业专家的说法,随着微服务以及12因子app这样的术语出现,这些叫法未必就是SOA已死的信号,可能只是换个马甲而已。
“SOA就是微服务,”总部位于科罗拉多州Evergreen市的Savoir Technologies CTO Jeff Genender这样说,他把这一新叫法称为是“给猪涂口红(无用之功)”。SOA在整体应用及实现搞砸的时候收到了不好的名声,用像微服务这样的术语是除掉SOA不好的名声和内涵,同时保持基本原则的手段之一,他补充道。
“这不是微服务对战SOA,而是更好利用了应用分发的前端GUI与部署在单个包之内的对比。这才是值得考虑的差别,”Genender说。这一点是通过超过10年的混搭来实现的,其原因也基本上一样:更多从控制API和GUI做的事情的角度来控制混搭。虽如此,在它下面的架构师RESTful端点或者SOAP端点,由它们反复推送数据,他说。
微服务本身是随着前端Ajax革命而涌现出来的,在这场革命中,开发者利用了Web应用的客户/服务器实现与后端进行接口,而不是通过HTML。这使得开发者在选择前端利用自己API时更加游刃有余,这就是令微服务取得今日地位的差异化因子,据Genender说。然而,它底子里依然是SOA,尤其是因为搞砸了的微服务实现的样子很容易看起来像是曾经部署过的整体应用一样,他补充道。
SOA也许是架构,但是这个名字的内涵约束太多,以至于总部位于洛杉矶的SOA Software最近把自己的名字给改成了Akana,公司的执行副总裁Roberto Medrano说。尽管Akana将会组合SOA、微服务以及云集成,但是仍然支持SOA愿景以及API管理和安全,他说。
SOA不会消失:作为架构,其可重用和敏捷性将继续发挥价值,Medrano说。尽管许多开发者正在使用Web服务和API,一切都还是服务且仍将继续是服务,这取决于它是如何实现和被消费的,他补充道。
尽管微服务跟SOA在服务管理和安全方面并不相同,但它还是可以跟SOA和平共存的,据Akana的CTO Alistair Farquharson说。
这两个在颗粒度方面并不一样,微服务关注的是“微观”部分,他说。这使得开发者能够为了可扩充性、负载均衡以及提高吞吐量而分解应用,但同时也引发了打破数据模型以及维护一致性的问题。大多数微服务是部署方法论,他补充说。
新的流行语导致开发者和架构师剥掉了SOA的旧皮——出于错误的理由而使用了微服务是有可能的,据Farquharson说。“大家正在为了微服务而开发微服务,而不是为了创建一个好的微服务,”他说。正如API一样,开发者和架构师也许认为他们可以通过微服务修正好应用,而不是最终得到一个更复杂更糟糕的应用。“应用写得不好的人别指望能写出好的微服务,”他说。
至于12因子app,那也不是什么新东西,这是Savoir Technologies的Genender的说法。“这就好比你拿到了SOA的邮票然后重新用微服务盖上,”他说。基本上12因子app只不过是换了一种说法而已,因为它具体化了修正SOA和微服务的方法论,他补充道。
“这让我想起了实用主义程序员宣言的很多东西,”英国的C2B2公司首席顾问Matt Brasier说。“里面说得很多的一个东西是常识而已,即将配置与代码分离。”
然而,12因子app然后进入到了规定实现决定而不是把它留给应用开发者,以及讨论代码和集成。有更好的办法—这往往要考开发者自己判断,据Brasier说。“把实现与架构性原则混在一起很奇怪,”他补充道。
最后结论是,SOA并没有死亡,微服务只是如同《大鼻子情圣》的‘Christian de Neuvillette’。“趋势上说SOA可能己死,但你却可以使用相同的原则,相同的基础技术,以及相同方法,” Brasier。由于项目中企业服务总线而造成了失败,所以开发人员和应用架构师不会再在经理面前使用SOA这一术语,所以说现在是改名运动,他补充说。
这只是对相同的原则进行重塑,Brasier说。但是微服务和12因子app将会走上与SOA相同的道路:当不适合应用时,就会重新塑造。