本文系作者本人原创,如需转载,请务必写明出处,谢谢!
题目很长,想说的东西很多。
一 IT的进化论
达尔文的进化论同样适用于IT世界,能大行其道的IT技术,确实是优胜劣汰,自然的选择。 有人说J2EE想解决很多东西,可惜它不够人性,有人说,SOA多么美好,可惜它生不逢时。所以在经历多年的发展之后,J2EE也好,SOA也好,终于碰到了天花板,逐渐被其他IT技术所取代。
而最近炒得火热的中台概念,是不是因为手中握着被自然选择优胜劣汰下来的利剑?
首先让我们看看中台是个什么鬼?
二 从中台说起
以下两张图告诉我们中台要做些什么,又该怎么做。
(图片来源 Thoughtworks 王健在华为CBG IT技术合作峰会上的分享《中台战略到微服务架构》)
DDD已是旧闻,最近一些公司大谈中台建设,似乎就是想用手握的利剑,再次采用领域驱动设计的方法,帮助客户重建平台系统,从而大赚一笔?
比较下面这两张SOA的示意图,各位是不是就清楚了,原来中台要做的事情只是当初SOA 要做的事情的一部分(可以理解为Enterprise Service这部分)。
(图片来源
Microservices vs. service-oriented architecture
By
Mark Richards
July 6, 2016
这些大公司们凭什么敢做曾经没有取得大成功的事情?他们手握的自然法则锻造出来的那把利剑究竟是什么?我们得先从webservice 说起。
* 有关中台的文章,网上这两篇可参考,
从中台到平台(上)
从中台到平台(下)
另外,可参考《
企业IT架构转型之道:阿里巴巴中台战略思想与架构实战
》
三 两种最为流行的web service实现方式,后来者居上
按照进化论的角度来看,目前最主要的Web服务实现方案有两种:
SOAP:即
简单对象存取协议(Simple Object Access Protocol),是
XML Web Service
的通信协议。当用户通过
UDDI
找到你的
WSDL
描述文档后,他通过可以
SOAP
调用你建立的
Web
服务中的一个或多个操作。
SOAP
是
XML
文档形式的调用方法的规范,它可以支持不同的底层接口,像
HTTP(S)
或者
SMTP
。
REST:表征状态转移(Representational State Transfer),采用Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 将所有 Web 系统的服务抽象为资源,REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。Http协议所抽象的get,post,put,delete就好比数据库中最基本的增删改查,而互联网上的各种资源就好比数据库中的记录(可能这么比喻不是很好),对于各种资源的操作最后总是能抽象成为这四种基本操作,在定义了定位资源的规则以后,对于资源的操作通过标准的Http协议就可以实现,开发者也会受益于这种轻量级的协议。REST是一种软件架构风格而非协议也非规范,是一种针对网络应用的开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
如果你开始用Spring boot来编写web应用,你一定会发现用Rest风格来写web service实在是太方便了,用起来也方便,于是越来越多的web服务开始采用REST风格设计和实现。
那么我们为什么要用web service? 这要从企业应用的发展历史来谈
四 从巨石应用到微服务应用,我们一路走来
实际上,当计算机技术开始用于企业应用的时候,应用的结构是这样的(这里省略掉最初期刀耕火种的原始计算机时代,数据库技术发展),只要有个业务,我们就建一个业务系统。这个时代的应用,我们称之为monolethic application 、silo system、孤岛系统、竖井式结构。
企业应用越来越多,这时候,在新开发系统的时候,大家发现,许多数据和功能,在已有的系统里已经有了。
我们将来能不能建立这样的新系统(或者改造老系统),在架构上能支持其他应用来调用一些特定功能?如何在已有的老系统上,增加一个服务集成组件,使能系统间能互相调用?SOA的理念由此提出。
针对第一个问题,
我们将来能不能建立这样的新系统(或者改造老系统),在架构上能支持其他应用来调用一些特定功能?
web service 的概念应运而生。如下图的J2EE架构。一个企业应用,它的用户,已经不再只是在客户端点击菜单和按钮的人,更是企业其他应用。所以,我们由 web service衍生出服务提供者,和服务消费者的概念。以SOAP协议为主的web service大行其道。
时代又开始进入了移动互联网时代,这个时代被称作VUCA的时代。企业应用开始直面最终用户,也就是2C了。谁能最快让应用上线,谁就能取得市场先机。在组件服务化的前提下,围绕着云原生技术的两条脉络清晰可见
1,前后端分离,使前段从后端分离出来,快速提高软件开发的效率。
对于原来由J2EE应用服务器提供的MVC的功能,将VC交给node.js来处理,应用服务器只处理业务包装