背景
最近阅读了 Martin Fowler 和 James Lewis 合著的一篇文章 Microservices, 文中主要描述和探讨了最近流行起来的一种服务架构模式——微服务,和我最近几年工作的实践比较相关感觉深受启发。本文吸收了部分原文观点,结合自身实践经验来探讨下服务架构模式的演化。
面向服务架构(SOA)
面向服务架构 SOA 思想概念的提出已不是什么新鲜事,大概在10年前就有不少相关书籍介绍过。当时 java 企业应用领域 J2EE 依然是主流,应用程序被部署在庞大统一的符合 J2EE 规范的容器中运行,在单一进程中提供所有的功能。 而 SOA 提出的一些架构原则,在当时看来无疑是革命性的。 由于业已存在的大量单一庞大的应用,按照 SOA 的思想和架构原则来改造无疑相当于推翻重新开发一遍,在成本上很难接受。 因此早期的 SOA 通常和另外一个术语关联在一起——ESB(企业服务总线)。 当时在 SOA 的实施思路上无一例外的选择了 ESB 模式来整合集成大量单一庞大的应用,以保护企业前期投入成本。因此 ESB 其实是 SOA 特定历史阶段的一种实现方式。
然而,愿望总是美好的,现实却要残酷的多。过去这些年我们看到了很多实施 ESB 搞砸了的项目,投入几百万,产出几乎为 0,因此 SOA 这个概念也蒙上了不详的标签。 近几年流行起来的服务化架构,其拥护者开始拒绝使用包裹着失败阴影的 SOA 这个标签,而称其为微服务架构(Microservices Architecture Style)。但事实上 微服务架构依然是 SOA 架构思想的一种实现。