随着IT技术的不断发展,从传统的IT建设模型逐步向新型IT建设模型过渡,建设模式的改变,必然影响应用系统的全生命周期。应用系统的建设经过单体应用、SOA应用、逐步走向微服务应用,至于何为单体应用、SOA应用以及微服务应用,本文不做重点介绍,本文主要用于论述微服务与DevOps的关系。

为了避免枯燥的讨论抽象概念关系,接下来我将从一个日常生活场景开始讲起。对于一个正常人来说,每日的生活离不开吃住行,那么吃住行中吃排在首位,对于土生土长的北方人来说,提到吃就必须提到小麦,小麦从种子开始,经过播种、收割、碾压、风干、磨面、做成面包,每个过程阶段都需要不同的投入,播种前需要犁地、施肥、育种,播种后需要除草、施肥、光照、收割,收割后需要碾压、风干、磨面、做成面包,每个阶段都涉及不同的工作。

如果把小麦到馒头比喻成应用系统的开发,这期间有手工工作、自动工作、半自动工作。其实我们应用系统的开发,也是经过了一些列的手工工作、自动工作、半自动化工作。假如不考虑季节因素,日复一日,年复一年,小麦到面包的过程,就是一个持续交付的过程,在交付过程中,逐渐的完善犁地的深度、施肥的成份、碾压的强度、风干的时长等等。这就类似于我们做微服务化实施的过程,逐步的拆分微服务,逐步的实施交付,不断的完善,这个过程中,手工工作、自动工作、半自动化工作,就类似于我们在微服务开发过程中使用的工具,工具有高效低效之分。

在小麦到面包的过程中,为了提高投入产出率,我们不仅优化种子,而且优化过程工具,最典型的莫过于上世纪主要靠人工完成的过程,现在已基本有自动化机器完成,那在自动化机器完成的基础上,如何进一步提升回报率呢?就是我们的DevOps理念,“打破部门鸿沟,实现工具流水线”,DevOps的诞生从狭义上说,就是实现各个阶段工具链的自动化,从广义上讲就是实现跨部门之间高效协作。

虽说小麦到面包的案例比较普通,但是也已基本引出了本文的重点,即“微服务与DevOps的关系”,采用理工类经典的论证模式“如果某企业向微服务转型,且微服务实施已取得成效,那么企业DevOps平台也已基本落地”。听起来比较绝对,但话糙理不糙,具体原因如下:

  • 微服务的实施,必然将原先一个应用拆分成数十个,那么对于每个拆分后的微服务进行编译、打包、部署必将是原来工作量的数倍,如果不采用自动化工具。
  • 微服务的实施,必然会涉及多个微服务之间的协作,那么对微服务功能进行单元测试、回归测试、性能测试将变得更加复杂,如果不采用自动化工具,工作量之大,复杂度之高,难以估量。
  • 微服务的实施,必然会升级多个微服务采用框架各异,那么微服务部署所依赖的基础环境,必将异常复杂繁琐,如果不采用自动化工具。
  • 微服务的实施,必然会涉及多个团队协作开发,那么微服务需求的管理,则项目的管控将异常艰巨,如果不采用先进的项目管理工具。
  • 微服务的实施,必然会频繁的进行应用的更新,那么代码编译、版本控制、代码质量将无法保障,如果不采用成熟的工具。

鉴于以上种种问题,微服务的实施必然要具备需求管理、代码版本管理、质量管理、构建管理、测试管理、部署管理、环境管理等工具链,除此之外,还需要开发部门与运维部门的协作,因此,DevOps是微服务实施的充分必要条件

离开微服务,DevOps是否有意义,就如同农作物的流水线离开了小麦是否有意义一样,农作物的流水线离开小麦,还有玉米、大豆、高粱等,因此,微服务是DevOps实施的充分但不必要条件。

微服务与DevOps关系的更多相关文章

  1. Kubernetes才是微服务和DevOps的桥梁

    一.从企业上云的三大架构看容器平台的三种视角 一切都从企业上云的三大架构开始. 如图所示,企业上的三大架构为IT架构,应用架构和数据架构,在不同的公司,不同的人,不同的角色,关注的重点不同. 对于大部 ...

  2. 基于微服务的DevOps落地指南 交付效率提升40%

    基于微服务的DevOps落地指南 交付效率提升40% 2015-2016年,珍爱线下门店已新增覆盖城市9个,与此同时,CRM系统大小故障却发生了数十起... ... 珍爱网是以“网络征选+人工红娘”模 ...

  3. 通俗地理解面向服务的架构(SOA)以及微服务之间的关系

    SOA是一种软件的应用架构方法,它基于面向对象,但又不是面向对象,整体上是面向服务的架构.SOA由精确的服务定义.松散的构件服务组成,以及业务流程调用等多个方面形成的一整套架构方法. 这话是不是听起来 ...

  4. spring boot 与微服务之间的关系

    Spring Boot 和微服务没关系, Java 微服务治理框架普遍用的是 Spring Cloud. Spring Boot 产生的背景,是开发人员对 Spring 框架越来越复杂的配置吐槽越来越 ...

  5. .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目

    系列目录     [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...

  6. 微服务与devops的文章推荐

    http://www.sohu.com/a/125040520_355140 http://www.csdn.net/article/2015-11-18/2826253 http://www.cnb ...

  7. DevOps架构下如何进行微服务性能测试?

    一. 微服务架构下的性能测试挑战 微服务与DevOps 微服务是实现DevOps的重要架构 微服务3S原则 DevOps核心点 微服务架构下的业务特点 亿级用户的平台 单服务业务随时扩容 服务之间存在 ...

  8. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  9. 唱吧DevOps的落地,微服务CI/CD的范本技术解读

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

随机推荐

  1. Handler主线程和子线程相通信

    //创建主线程的handlerprivate Handler handler = new Handler(){ @Override public void handleMessage(Message ...

  2. Socket编程概念

    一.网路套接字 在通信过程中,套接字是成对存在的,该套接字内部借助两个缓冲区实现 二.网络字序 1.存储方式 大端法(网络):高位存低位,低位存高位 小端法(本地):高位存高位,低位存低位 2.网络字 ...

  3. 三,PHP缓存机制实现页面静态化

    页面静态化思路: 因为新闻这种信息对实时性要求不高,并且比较稳定,所以可以这样做:当地一个用户访问某条新闻后,我们使用ob缓存机制,将内容缓存到html页面.当下一次访问时候,直接访问html页面.这 ...

  4. 深入理解java内存模型

    深入理解Java内存模型(一)——基础 深入理解Java内存模型(二)——重排序 深入理解Java内存模型(三)——顺序一致性 深入理解Java内存模型(四)——volatile 深入理解Java内存 ...

  5. Java内存模型Cookbook

    前言 指令重排 内存屏障 多处理器 指南 前言 这是一篇用于说明在JSR-133中制定的新Java内存模型(JMM)的非官方指南. 这篇指南提供了在最简单的背景下各种规则存在的原因,而不是这些规则在指 ...

  6. Android访问网络,使用HttpURLConnection还是HttpClient?

    本文转自:http://blog.csdn.net/guolin_blog/article/details/12452307,感谢这位网友的分享,谢谢. 最近在研究Volley框架的源码,发现它在HT ...

  7. 2019CVPR《Mask Scoring R-CNN》

    题目:<Mask Scoring R-CNN> CVPR 2019 Oral Paper(2017年783篇论文,获得口头报道的有215篇,oral paper很有含金量) 华中科技大学h ...

  8. (转)python高级:列表解析和生成表达式

    一.语法糖的概念 “糖”,可以理解为简单.简洁,“语法糖”使我们可以更加简洁.快速的实现这些功能. 只是Python解释器会把这些特定格式的语法翻译成原本那样复杂的代码逻辑 我们使用的语法糖有: if ...

  9. centos 7 nginx 安装

    1.下载nginx rpm包 下载地址:http://nginx.org/packages/mainline/centos/7/x86_64/RPMS/ ,可查看所有安装包 从中如下载: wget h ...

  10. hbase集群中其中某个regionserver 没有启动

    第一步: date命令查看各个机器的时间 发现linux02机器时间差了2个多小时 第二步:ntpdate pool.ntp.org 修改错误时间的机器 第三步: 重启 hbase