随着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. JQuery Mobile - 解决动态更新页面内容,CSS失效问题!

    今天编写JQuery Mobile程序,需要对数组数据动态创建,并且每条数据对应一个复选框,于是我很顺利写了一个Demo,当我运行时候发现,和我期望的不一样!复选框确实创建出来了,但是却没有CSS效果 ...

  2. python操作mongodb实例

    安装pymongo扩展 import pymongo; client = pymongo.MongoClient(host='10.48.176.170',port=27017); db = clie ...

  3. 【北京】安全研究员/工程师-20-35K,人体工程学座椅坐等你来~

    招聘地点:北京市西城区 薪资:20-35K 人体工程学座椅,高大上环境坐等你来 [招聘]安全研究员+安全工程师-北京数字观星科技有限公司 北京数字观星科技有限公司成立于2016年9月29日,是一家致力 ...

  4. Zookeeper数据存储总结

    Zookeeper快照文件和事物操作文件以文件的形式存储在硬盘上,以快照文件为主,日志文件为辅.因为当对内存数据进行变更的时候,会保证将事务操作记入log日志,而snapshot只是内存某一个时刻影像 ...

  5. css基础小总结

    header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em} .markdown-body{overflow:hidden} .markdo ...

  6. web安全之——XSS、CSRF

    XSS漏洞 XSS 全称 Cross Site Scripting ,跨站脚本攻击.它的形成主要原因是多数用户输入没有转义,而被直接执行. 参考下面一段脚本: $('#box').html(locat ...

  7. C# 后缀名

    用Visual Studio进行开发时项目内会有很多文件,其中常见的文件名后缀及其功能如下: .sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息. .csproj:项目文 ...

  8. 导入不用的css文件及在不同设备显示不用的html页面

    当一个页面对应有多个css样式文件时,我们可以根据地址栏的参数值而导入不同的css文件: function getCss() { var linkNode = document.createEleme ...

  9. Ubuntu“无法打开锁文件(Could not get lock)”问题解决

    用apt-get安装软件时提示: 无法获得锁 /var/lib/dpkg/lock - open(11:资源暂时不可用) 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 其 ...

  10. zabbix 调用python脚本监控 磁盘剩余空间(创建模版,创建监控项,创建触发器)

    主要 记录一下  使用zabbix 自己创建模版.监控项.触发器,并调用python脚本. 需求: 监控备份机磁盘剩余空间(windows系统) 一.安装zabbix_agent 比较简单 修改配置文 ...