近几年,我们有很多文章对SOA和微服务之间的不同点和相似点进行了分析。有些人认为SOA有很多地方是值得微服务学习的,而有些人则认为区别对待微服务和SOA会更好。而Neal Ford认为,将单体迁移到面向服务的架构要比迁移到微服务来得容易。关于选择SOA还是微服务的话题,最近并没有太多的争论,直到Redmonk的Stephen O'Grady发表了他的文章,这个话题再次进入了人们的视野。O'Grady在他的文章里说到,服务的大小不应该成为关键的决定性因素。这些年来,人们也一直在争论这个观点,比如Dan North。而Jeppe Cramon也说过:
单纯使用服务大小来定义微服务有失偏颇,也难以确定一个微服务是否被赋予了正确的职责……
O'Grady相信,SOA和微服务之间有着千丝万缕的联系:
在过去,SOA存在的一些缺陷导致它变成企业的幻象,就像今天那些使用了微服务云原生架构的激进型组织一样。如果我们深入到SOA的核心,我们会发现,SOA的本意是说架构应该由服务组成,而不是单体。
O'Grady在他的文章里通过Google Trends生成了一些图表,其中第一张图表显示了SOA在整个行业历史上曾经有一小段时期处于流行的高峰状态。
Stephen认为,通过服务大小来区分SOA和微服务将有碍找出导致SOA没落与微服务崛起的真正原因,SOA是由厂商驱动的,而微服务更多的是由开发者来驱动。
因为AWS的大肆成功,我们无法否认基于服务驱动的平台确实是构建可伸缩平台的一种有效方式,也无法否认它们在现今所取得的主导地位。但值得注意的是,现今基于服务的平台一般是由开发者来驱动的。而SOA最初由大型的厂商来驱动,基于拜占庭式的复杂(一般带有政治性质)的标准框架来构建服务,而这些标准并不为开发者所接受。
O'Grady在文章中提到,微服务在好的方面和不好的方面都借鉴了SOA。
微服务比单体更容易开发,而且没有了SOA的厂商标准累赘。
在过去几年,还有其他的一些人也表达了类似的观点,Asanka说:
如今,企业正在转向更干净的SOA,开始拥抱MSA。或许最大的看点是组件化,以及微服务提供的单一功能能够被快速地部署成组件,在必要的时候可以很容易地进行伸缩。不管怎样,这是一种很新奇的概念。
其中的第二张Google Trends图表也很有趣。
原文地址:http://www.infoq.com/cn/news/2017/07/soaandmicroservices
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注