随着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. 907. Sum of Subarray Minimums

    Given an array of integers A, find the sum of min(B), where B ranges over every (contiguous) subarra ...

  2. 【2019年OCP新题】OCP题库更新出现大量新题-10

    10.Which two statements are true about SQL*Loader Express Mode in an Oracle 12c database? A) It can ...

  3. Django + DRF + Elasticsearch 实现搜索功能

    django使用haystack来调用Elasticsearch搜索引擎  如何使用django来调用Elasticsearch实现全文的搜索 Haystack为Django提供了模块化的搜索.它的特 ...

  4. FunDA(7)- Reactive Streams to fs2 Pull Streams

    Reactive-Stream不只是简单的push-model-stream, 它还带有“拖式”(pull-model)性质.这是因为在Iteratee模式里虽然理论上由Enumerator负责主动推 ...

  5. byte范围及8种常见数据类型

    byte范围:-128  到 127 原因 : 在计算机内,定点数有3种表示法:原码.反码和补码 原码 :二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小. 反码 ...

  6. 使用图片预加载,解决断网后无法从后台获取提示网络异常的logo图片的问题

    项目中有需求,断网后,显示小提示窗,里面包含网络异常提示语和异常小logo图片. 在实际操作时,遇到,断网后,无法从后台获取异常小logo图片. 我是才用图片预加载的方法解决这个问题的,解决方法如下: ...

  7. CSS3 :nth-child(n)使用注意

    :nth-child(n)    ---->选中某个元素,该元素必须是某个父元素下的第n个子元素: p:nth-child(n)   ---->选中p元素,且该p元素必须是某个父元素下的第 ...

  8. (转) Linux(Centos7)yum安装最新mysql

    原文:http://blog.csdn.net/gebitan505/article/details/54613549 环境 CentOS 7.1 (64-bit system) MySQL 5.6. ...

  9. RSNAKE 的 Slowloris DOS攻击工具初试

    Slowloris 号称低带宽对服务器进行DDOS攻击 原理就是对WEB服务器发送 不完整的包并且以 单一  \r\n结尾,并不是 完整的HTTP包.造成WEB服务器堵塞达到最大连接数. 官网给出介绍 ...

  10. Android_设置全屏的方法

    在开发的过程中,我们有时候需要让我们应用程序全屏或者是让某个页面全屏,在今天的android小技巧中我们来讲讲如何设置我们的应用程序 全屏: 通常我们有三种方式: 1.在onCreate方法中添加代码 ...