从巨石应用到微服务应用,从ESB到APIGateway,从前后端分离到中台出现,九九归一,Rest要一统天下?

  • Post author:
  • Post category:其他


本文系作者本人原创,如需转载,请务必写明出处,谢谢!

题目很长,想说的东西很多。

一 IT的进化论

达尔文的进化论同样适用于IT世界,能大行其道的IT技术,确实是优胜劣汰,自然的选择。 有人说J2EE想解决很多东西,可惜它不够人性,有人说,SOA多么美好,可惜它生不逢时。所以在经历多年的发展之后,J2EE也好,SOA也好,终于碰到了天花板,逐渐被其他IT技术所取代。

而最近炒得火热的中台概念,是不是因为手中握着被自然选择优胜劣汰下来的利剑?

首先让我们看看中台是个什么鬼?

二 从中台说起

以下两张图告诉我们中台要做些什么,又该怎么做。

(图片来源  Thoughtworks 王健在华为CBG IT技术合作峰会上的分享《中台战略到微服务架构》)

DDD已是旧闻,最近一些公司大谈中台建设,似乎就是想用手握的利剑,再次采用领域驱动设计的方法,帮助客户重建平台系统,从而大赚一笔?

比较下面这两张SOA的示意图,各位是不是就清楚了,原来中台要做的事情只是当初SOA 要做的事情的一部分(可以理解为Enterprise Service这部分)。


2-4.png

(图片来源

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来处理,应用服务器只处理业务包装



版权声明:本文为alva_xu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。