devops是什么?

        DevOpsDevelopmentOperations的组合词)是一种重视“软件开发人员(Dev”和“IT运维技术人员(Ops”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

devops概念提出

  • 单体架构+瀑布模式

devops产品架构 devops技术_devops产品架构

        服务器少,部署简单,通常开发就可以完成运维的工作,不需要专门的运维来做部署,所以开发模式很简单,直接按照瀑布流方式开发即可。

  • 分布式架构+敏捷开发模式

devops产品架构 devops技术_devops_02

        业务体量发展越来越大,一台机器扛不住,那么就加机器,单机变多机,业务架构也开始加入了 nginx、cdn、缓存等通用基础服务,业务变多肯定会招人,就涉及到多人协同开发,多人多机器模式。

        多人协同开发问题:敏捷开发的核心理念:既然我们无法充分了解用户的真实需求是怎样的,将一个大的目标不断拆解,把它变成一个个可交付的小目标,然后通过不断迭代,以小步快跑的方式持续开发。为了保证项目质量,测试环节不可减少,为了贾逵啊速度增加开发效率,QA的工作最好是和开发同步交替运行的。需要将测试环节从后面注入到整个开发环节当中,每次可交付的都是一个可用的功能集合,对开发交付的内容进行持续验证。

        多机器问题:公司业务一大,服务器一多,就需要专门的运维介入了,一方面是因为开发分工每个人都专注于自己的事情,不会那么用心进行维护,另一方面是运维的学习成本确实变高了,开发人质量参差不齐。这个时候不是 DEVOPS,而是 DEV+OPS,Ops(IT运维技术人员)的主要职责就是:硬件维护、网络设备维护、DBA 、基础服务维护、数据监控等,运维们擅长写各种部署,监控脚本,减少机械的重复工作,开发模式变成了敏捷开发模式。

  • 微服务架构+DEVOPS

devops产品架构 devops技术_敏捷开发_03

   于是,拆分解耦是最终的出路,将项目拆成一个个小的服务单独部署,如图例,将整个项目拆分为用户服务、商品服务、订单服务……每个服务单独部署,之间通过互相调用的方式来交互,而且可以将一些基础服务抽象到一个单独的服务,也就是前些年鼓吹的很厉害的“中台服务”。

        由运维事先把上线的规则都给定义好了,开发只要按照他的规则都访问这台服务器进行各自的代码合成和发布,自己上线呢,能用代码自动完成的事情就绝不要手动解决,这是每个开发人员都在想的东西。运维需要做的事情,慢慢的都沉淀到了各个平台上面,渐渐的,只要这些都配置好了,开发也可以做运维的部分工作,毕竟开发才是最了解代码的人,哪里出了问题看看监控日志,可以最快速度定位到问题,于是DEVOPS开发模式诞生了,开发也是运维。

 devops深度理解

  • 最初大家说到DEVOPS,都是指的“开发运维一体化”。
  • 现在大家说的 DevOps 已经是扩大到“端到端”的概念了。
  • DevOps 的三大支柱之中,即人(People)、流程(Process)和平台(Platform)。即

        DevOps = 人 + 流程 + 平台

        人 + 流程 = 文化

        流程 + 平台 = 工具

人 = 赋能