2014年年底,塔里克·阿贝卓布(TareqAbedrabbo,OpenCredo首席技术官)发表了一篇题为“微服务之七宗罪”的文章,他在此文确定了微服务架构七种常见的反发展模式。2016年一月,来自Voxxed的Danial Bryant发表了该文章的最终版,结合原文以及自己的经验对此文做了进一步的更新。

两人讨论的第一个问题都是构建错误的东西。就像Abedrabbo文章说的那样,可能是由于在定义项目范围和目标时含糊不清所造成的,或者像Bryant说的,试图利用最新的技术,而不是使用最适合特定目标的技术。这两种情况都会导致额外的、不必要的复杂性,因为它们都未集中于项目的最终目标。

不实施契约优先(contract-first)设计方法是项目误入歧途的另一种途径。一个好的服务契约允许开发者专注于微服务是在做什么,而不是专注于它是如何实现的,确定总体目标才是重中之重。

技术实现的细节仍需要解决,Abedrabbo和Bryant两者的文章都提出了通过把单体架构概念运用到微服务架构上面,用以创建分布式单体架构(distributed monolith)。单体架构和微服务架构的交叉也暴露了一个共享域模型问题。

由于应用程序现在通常由多个微服务组成,因此一个应用程序不再是一个刚性边界的单一实体,就好比传统的单体架构案例。开发者可以采用领域驱动设计(Domain-Driven Design,DDD)方法提供一个核心业务概念的演化模型来解决这一问题,这样会更为合适。

这两篇文章同时也表达了对选择错误、太多选择、以及交换信息通信协议的关注。服务功能应该影响协议,而好的方法则是采用标准化的态度,同时使用面向外部服务的同步协议,以及面向内部服务的异步协议。

Abedrabbo强调引进实践证明的DevOps的重要性,正如微服务许可的那样,从一开始就发挥连续传送管道的优势。它从早期开始就支持验收、回归和性能测试自动化,Bryant延续这一主题是为了确保系统在快速移动并经常波动的微服务世界中支持测试。

DevOps这一概念贯彻于Bryant的文章之中,鼓励操作者或系统管理员之间的相互理解。他建议,员工必须接受培训,以应对现实生活中的灾难恢复,这样问题和成功可以通过整个团队进行共享。

人类因素(human factor)是原文的最后一点。微服务可以简化开发并且促进协作精神,但习惯于传统的、大规模的、充满筒仓和政治组织的开发者,对于如何在运行时表现图片服务不可能有更深、更广泛的理解。企业则可以通过投资开发商和鼓励广大组织合作以建立更好的、可持续的、能够利用微服务能力的系统,从而解决这一问题。

**文章转载自 开源中国社区[http://www.oschina.net]
**

再论微服务架构之七宗罪相关推荐

  1. Spring Cloud微服务再谈微服务架构(七)

    微服务架构 一.什么是微服务? 1.微服务的由来 2.为什么需要微服务 3.微服务与单体架构区别 4.微服务本质 5.什么样的项目适合微服务 6.微服务开发框架 7.什么是Spring Cloud? ...

  2. 微服务架构下的安全认证与鉴权

    微服务架构下的安全认证与鉴权 转载自:https://mp.weixin.qq.com/s/qBJ_257IWn3cctqmKfJ7FQ 作者:王海龙,来自:EAWorld 现任普元云计算架构师,毕业 ...

  3. 微服务架构下的身份认证

    从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验.为了适应架构的变化.需求的变化,身份认证与鉴权方案也在不断的变革.面对数十个甚至上百个微服务之间的调用,如何保证高效安全的 ...

  4. 《Spring Cloud 微服务架构进阶》读书笔记

    前页 随着 DevOps 和以 Docker 为主的容器技术的发展,云原生应用架构和微服 务变得流行起来. 云原生包含的内容很多,如 DevOps.持续交付.微服务.敏捷等 第一章,微服务架构介绍 架 ...

  5. 深入聊聊微服务架构的身份认证问题

    从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验.为了适应架构的变化.需求的变化,身份认证与鉴权方案也在不断的变革.面对数十个甚至上百个微服务之间的调用,如何保证高效安全的 ...

  6. SpringCloud微服务之微服务架构的优势

    微服务架构有以下优势: 当人们将业务领域分解为可独立部署的环境时,能够将相关的变更后期解耦.只要变更限于单一有限的环境,并且服务继续履行其现有合约,那么这些变更可以独立于其他业务来进行和部署.其结果是 ...

  7. 微服务架构的前世今生

    传统行业向互联网行业的转型 背景 2012年以后,因为移动互联网的兴起,随着网名数量的增多,需求变化大,用户群体大.导致已有的应用程序无法抗住大规模的并发,且版本迭代麻烦,扩展不够灵活,应对外界环境能 ...

  8. 云原生架构下微服务最佳实践-如何拆分微服务架构

    转自: https://mp.weixin.qq.com/s?__biz=MzI3MzEzMDI1OQ==&mid=2651821066&idx=1&sn=8475f813a8 ...

  9. 阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解

    本文涉及的内容以及知识点如下: 1.单体架构 2.单体架构的拆分 3.SOA与微服务的区别 4.微服务的优缺点 5.微服务的消息 6.服务集成 7.数据的去中心化 单体架构 Web应用程序发展的早期, ...

  10. 常见的服务器架构入门:从单体架构、EAI 到 SOA 再到微服务和 ServiceMesh

    前言:架构的演变流程 单体架构 ==> 垂直架构 ==> 前后端分离 ==> EAI架构  ==> SOA架构 ==> 微服务 ==> 微服务2.0 1.单体架构: ...

最新文章

  1. Redis5.0之Stream案例应用解读
  2. NLP面试时,项目经历要怎么讲?
  3. 跳转控制语句之break
  4. 进程控制块包含的信息
  5. 2019年最值得关注的五大微服务发展趋势
  6. Form,你到底是客户端还是服务端
  7. NYOJ 214(LIS,二分插入)
  8. Unity 基础资源知识汇总学习
  9. 全网最全清理c盘大全
  10. 那些年你用过的工具--网络工具Wireshark经验谈
  11. 安装sql server 2008时的错误,针对SQL Server 注册表项的一致性验证失败​
  12. 计算机黑屏无法启动,电脑黑屏无法启动
  13. 2022/2/3 四舍五入 分数化简 高精度运算
  14. 电子健康档案:实现医疗信息的有效共享
  15. Excel中批量添加批注图片
  16. Java Socket 参数详解
  17. 苏黎世联邦理工学院计算机硕士申请条件,苏黎世联邦理工学院研究生申请条件...
  18. liunx 查看oracle监听,Linux配置Oracle监听提示异常
  19. linux初始化启动文件,Linux 的初始化与启动过程
  20. THU-OS rCore学习总结 基于Rust + RISC-V

热门文章

  1. 设计模式--代理模式Proxy(结构型)
  2. 9.1.3 .net framework通过业务逻辑层自动生成WebApi的做法
  3. 楼市新政催生“金十月” 二手房改善需求变成交主力
  4. Windows Phone 程序发布过程
  5. SQL Server 2005 分页SQL
  6. (转)c# Invoke和BeginInvoke区别
  7. eclipse 导入appcompat-v7 包
  8. Boost Log : Trivial logging with filters
  9. PYTHON之计算机语言基础知识 —— 字符编码
  10. java集合框架01