美文网首页@IT·互联网IT人IT事
IT思考 | 微服务架构模式的价值观

IT思考 | 微服务架构模式的价值观

作者: Sandniu | 来源:发表于2020-03-19 09:18 被阅读0次

    背景知识

    微服务软件框架

    微服务(Microservice)这个概念是2012年出现的,然后2014年开始受到各方的关注,而2015年开始成为了热门。

    在国内,也是从2015年开始,各大互联网公司开始涉足微服务软件框架,比如阿里巴巴开始使用Spring Cloud,并在Spring Cloud的基础上,衍生并开源出一套全新的微服务框架 - Spring Cloud Alibaba。同时阿里巴巴还开源了一套Dubbo框架。还有腾讯的TARS、百度的 bRpc。

    我也是在2015年开始接触并实践了谷歌的gRPC、Facebook的Thrift。

    微服务架构模式

    企业应用架构模式从最初的单体架构,后来发展为SOA(面向服务)架构模式,再后来从SOA架构模式进化出当下最盛行的Microservices(微服务)架构模式。

    企业应用架构模式变迁

    本文要说的是微服务架构模式,不是微服务软件架构。主要是关注一下微服务架构模式所倡导的一些核心价值观。希望从事软件架构设计的朋友,可以从这些价值观里面,学习到这种模式的思想和理念。从而可以从各种微服务软件架构里面走出来,不在纠结于用哪种架构体系,用哪个工具链。

    从事这么多年互联网的软件行业,我们一直是在跟随着大师们的思想在前进,比如曾经风靡一时的面向对象(COM、DCOM、CORBA)、23种设计模式、UML(统一建模语音)、SOA(面向服务)、Xp、Scrum、微服务、Devops、IaaS、Paas、Saas、Faas等等。但是我们一直被陷入在各种开发环境、开发语言,各种开源的框架系统之中,反而忽略了大师们的思想。

    曾经我问过一个做了两年Coding的同事:什么是类?什么是对象?
    他竟然不能回答。( 难怪他的代码总是质量很差 :) )
    不深入的理解类和对象,如何可以定义出一个优雅的类,如何可以管理好一个对象实体的生命周期呢?更别说业务的扩展性了。

    要想理解大师们的思想,最核心的就是要理解大师们所要表达的价值观。我罗列了一下微服务架构模式的核心价值观。如下图:


    书蛙老牛

    我主要从两个维度罗列的,一个是:

    组织架构

    Martin Fowler大神

    Martin Fowler,1963年出生在英格兰的沃尔索耳,在1994年,移居到了美国。
    他是国际著名的OO专家,也是敏捷开发方法的创始人之一。

    微服务架构模式,是Martin Fowler首次在一篇文章里面提出的,他提出这个模式和他的敏捷开发思想也是相通的。因为在组织架构上,这两种思想的核心价值观基本上是一样的,具体如下:

    • 服务意识
      根据微服务来划分团队,可以增强团队的服务意识,因为这个服务明确分配给你们,你们就需要提供好这个服务。
    • 产品思维
      每个微服务都是根据领域来划分的,负责独立的一部分产品业务,每个微服务也可以理解成一个子产品。
    • 权利分散
      因为从产品业务层就开始考虑划分微服务,然后分配资源,因为权利来源于资源,所以相当于把权利分散到了各个微服务。
    • 小团队
      团队多小合适,有一个“两个披萨原则“,意思是不能多于够吃两个披萨的人数。小团结易沟通协调,效率更高。
    • 独立自主
      因为资源权利下放到微服务团队里面,团队就有一定的自主权,这样更可以发挥团队的积极主动性。
    • 责任明确
      权利和责任是成对出现的,有权利就意味着要有责任,这个是非常明确的。
    • 全栈式
      由于微服务是包含整个业务的,所以可能会应用到各种技术,需要团队成员会多种技能。
    • 自由
      自由和独立自主是对应的。
    • 共享
      这个有两个层面,一个是需要对外共享这个微服务;另一个是团队内部的共享。
    • 协作
      小团队,更注重协作。

    还有一部分价值观,属于微服务本身的,如下:

    微服务

    • 规范
      由于一个大应用划分成很多微服务,这就需要有一套规范,来共同约定。
    • 文档化
      微服务的目标就是被调用的,首先微服务的使用文档是必备的。
    • 可用性
      微服务功能职责单一,具有更高的可用性。
    • 开放协议
      微服务可以被任何应用来使用,因为微服务具有开放的协议,只要按照协议来调用就可以了。
    • 扩展性
    • 安全性
      微服务是独立部署、独立运行的,也具有独立的安全认证机制。
    • 粒度小,松耦合
      微服务专注于应用解耦。
    • 移植性
      微服务是独立部署的,具有可移植性。
    • 隔离性
      隔离性也是来自于独立部署,独立运行。
    • 自动化
      微服务架构模式提倡自动化测试、自动化部署、自动监控。

    批判性思考

    微服务这个思想从2012年正式提出到现在已经8年的时间了,这期间被广泛的传播,相应的软件架构和技术也得到了广泛的应用。这里提出几个需要思考的问题,通过这几个问题,我们反思一下我们曾经应用过这种架构模式的产品,然后反思一下这个模式现在是不是还适应互联网软件行业的发展,以后会不会出现更出色的思想框架来替代它。问题如下:

    • 你和你的同事们,都认同这些价值观吗?还是只认同其中的一部分?为什么不认同?
    • 我知道很多应用案例,都是应用了开源的软件框架来实现后台功能的解耦,前端业务和组织结构层面上并没有采用,你知道是为什么吗?
    • 你知道都有哪些微服务架构吗?你知道它们分别适合哪种应用吗?
    • 针对你使用过的应用,你认为采用这种模式是最好的吗?还有没有更好的替代方案呢?
    • 你知道”函数式“架构模式吗?,你认为这种模式怎么样?和微服务架构模式比较呢?

    函数式架构模式脑洞

    1、把所有的业务功能拆分成一个一个函数,每个函数定义好输入和输出。每个函数都是完全独立的。
    2、然后根据这些函数划分团队,或者不要团队,直接分配给每个人,然后这个函数独立部署、独立运行。
    3、针对每个业务功能,会有一个函数的调用序列
    4、请继续。。。。。。

    相关文章

      网友评论

        本文标题:IT思考 | 微服务架构模式的价值观

        本文链接:https://www.haomeiwen.com/subject/obugehtx.html