来自ThoughtWorks的主管Neal Ford在最近的一次演讲中表达了他对企业软件系统架构转型的看法,他认为从单体架构转向基于服务的架构要比转向微服务架构来得容易。Ford在UberConf 2016大会上做了一次关于基于服务架构的演讲,基于服务架构是介于面向服务架构和微服务架构之间的一个中间地带。这里可以下载演讲幻灯片(PDF格式)。

\\

微服务架构有很多优点,不过Ford建议应该把这些优点应用在新开发的项目上。对于已经采用了单体架构的组织来说,转向微服务架构有很多问题需要解决:分离代码,分离单体数据库,采用DevOps方法,监控网络,管理分布式事务等。但是转向基于服务架构就不需要做这么多改变,只需要把系统代码分割成若干个以领域为中心的块。基于服务架构可以由几十个可部署的服务组成,并非像微服务支持者们所主张的成百上千个。这些服务可以有独立的数据库,也可以分享单个数据库。Ford认为这是最为关键的不同点,因为他深知在转向微服务架构过程中,拆分数据库是最为复杂的部分。而微服务架构的优点只有在一定条件下才能得以体现,比如每个微服务对它们的数据具有独占所有权,或者有属于自己的数据库存储。

\\

\\

Ford指出,微服务架构也会带来一些复杂性,比如调用关系链以及网络调用隐含的性能问题。单个微服务不管从业务领域方面还是从性能方面来说都很简单,易于理解。但如果是一群微服务,就不是这么回事了。基于服务架构按照领域把更大的代码块组合在一起,减少了网络调用,这样会带来更好的性能。原来可能需要若干个相关微服务的调用变成了单个服务的方法调用。

\\

这种处在中间地带的架构方式是一种折衷的解决方案。微服务架构通过采用DevOps方法,把代码拆分成更小的可部署单元,在交付速度和伸缩性方面得到优化。基于服务架构比单体架构或面向服务架构具有更快的交付速度,它使用微服务架构和面向领域开发拥护者们所推崇的以领域为中心的方式对代码进行拆分。面向服务架构主张根据层而不是领域来对整体架构进行拆分,导致一个简单的业务变更会影响到多个层,需要更多的测试才能发布出去。以领域为中心的架构把测试范围减少到单个要发布的组件上,相比单体架构或面向服务架构交付得更快。要发布的组件越小,测试范围就越小,这就是微服务优化的目标。基于服务架构在提升软件交付速度方面也卓有成效。

\\

最后,Ford在多个方面对几种不同的架构进行了对比。他建议在高度集成的环境里使用面向服务架构,在新开发的项目上使用微服务架构,而基于服务架构主要用于对单体架构系统进行迁移。他认为单体架构不是最终状态。另一个资深的企业架构师Mark Richards,在UberConf上也带来了关于基于服务架构的演讲,他的演讲PPT可以从这里下载(PDF格式)。他们和O'Reilly合作制作了一个深入探讨这个主题的视频。

\\

查看英文原文: Service-Based Architecture As an Alternative to Microservice Architecture

微服务架构之外的选择——基于服务架构相关推荐

  1. 爬虫工具和服务——Python之外的选择

    转载自公众号:FightingCoder 在之前介绍过很多爬虫库的使用,其中大多数也是 Python 相关的,当然这些库很多都是给开发者来用的.但这对一个对爬虫没有什么开发经验的小白来说,还是有一定的 ...

  2. 陌陌 php微服务架构,微服务架构中模块划分和服务识别

    沙龙晃荡 | 去哪儿.陌陌.ThoughtWorks在主动化运维中的实践!10.28不见不散! 比来在进行微办事架构的交换和评论辩论中,除了谈到微办事迹巧架构外,客户往往加倍挂你微办事模块的划分粒度, ...

  3. 富士通台式电脑_英特尔X86架构霸权终将崩塌,ARM架构才是未来PC电脑市场的王者?...

    人们日常接触到的各类处理器芯片,通常是基于X86架构或者ARM架构.一般认为,X86架构用的是复杂指令集(CISC),强调高性能,更适合台式机.服务器:ARM架构用的是精简指令集(RISC),强调低功 ...

  4. 基于微服务和Docker的PaaS云平台架构设计

    基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...

  5. 基于COLA架构创建运输微服务应用和DDD领域建模

    基于COLA架构(Clean Object-oriented and Layered Architecture,整洁面向对象分层架构)和DDD(Domain Driven Design,领域驱动设计) ...

  6. javaweb k8s_K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程...

    K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程 课程内容是关于Kubernetes微服务架构学习课程,基于K8S开展ASP.NET核心进行微 ...

  7. 读《中台架构与实现:基于DDD和微服务》有感

    导读:我是带着问题来看这本书的,在看的过程中不断有茅塞顿开.原来如此的感觉,原来这个问题人家是这么解决的!原来这些问题大家都遇到过! 个人在IT这个行业工作有很多年了,所服务的企业都是书中所谓的传统企 ...

  8. 基于事件驱动架构构建微服务第19部分:使用 SignalR 和 Azure Active Directory 构建和保护实时通信...

    原文链接:https://logcorner.com/building-micro-services-through-event-driven-architecture-part19-building ...

  9. 基于事件驱动架构构建微服务第12部分:向Apache KAFKA生成事件

    原文链接:https://logcorner.com/building-microservices-through-event-driven-architecture-part12-produce-e ...

最新文章

  1. mysql数据库同步 debug
  2. c语言fgetc()函数(从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动)
  3. cordova自定义一个简单的alert的插件(android平台)
  4. TensorFlow 2.X中的动手NLP深度学习模型准备
  5. 数据结构与算法-什么是数据结构,什么是数据,什么是抽象数据类型
  6. 大数据是企业未来最重要的资源
  7. C#LeetCode刷题之#66-加一(Plus One)
  8. Linux 安装 Pycharm
  9. SAP License:SAP 成本管理专题
  10. python中的json.loads_Python json模块dumps、loads操作示例
  11. 使用AudioRecord录制pcm格式音频
  12. VLAN技术详解三(VLAN三种访问模式)
  13. 洛谷P3332 K大数查询
  14. intel edison固件更新
  15. 计算机主板型号进bios,hp主板进入bios的方法(电脑进入BIOS的两种实用方法)
  16. 知名游戏设计师的 GitHub 仓库被删,CEO 道歉;工信部向四家公司发放 5G 牌照
  17. 软件设计师刷题与知识点总结 笔记
  18. 女生学计算机和师范类哪个好,什么专业适合女生学
  19. rs.next()为false导致resultset遍历不出数据
  20. [python]pip freeze和pipreqs的区别和使用方法

热门文章

  1. Matlab-基于短时神经网络的声音分类
  2. Python-基于flask的接口框架
  3. matlab simulink数据导出到变量区
  4. Python 中 pass的使用
  5. element ui走马灯怎么添加_Lovestu - Element UI 走马灯高度自适应
  6. java设计模式 单例_java设计模式一(单例模式singleton)
  7. 数据结构实验之串二:字符串匹配
  8. libsvm 使用介绍
  9. 第三天2017/03/30(上午:二级指针的(输入)内存模型:(共三种模型))
  10. 【Socket网络编程】4.tcp和udp的客户端和服务端收发流程