【软件工程】DevOps的研究和解读

文章目录

    • 前言
    • 1、DevOps的历史由来
    • 2、什么是DevOps
    • 3、DevOps的优势
    • 4、DevOps工具
      • (1)监控工具
      • (2)性能分析/APM工具
      • (3)批量+自动化运维工具
      • (4)日志分析工具
      • (5)持续集成/发布 工具(个人感觉这个是DevOps中比较重要的部分)
      • (6)IaaS集成工具
    • 6、DevOps的应用前景

前言

最近学习了一些关于敏捷开发模式的课程,正好结合我最近在看的一个概念——DevOps,来阐述一下软件项目开发的一些观点和概念。

1、DevOps的历史由来

为了有一个完整的叙事逻辑,在此再简述一下早期软件开发:

  • 早期程序员什么都给会:对所要开发的软件的所有环节都有透彻的了解,从规格说明书编写、到软件开发、到测试、到部署、再到技术支持;
  • 随着业务的扩大,程序员群体内部开始分化为:软件工程师、 络管理员、数据库开发者、 页开发者、系统架构师、测试工程师等等。而 页开发者又能很快进化成后台开发者,前台开发者,PHP开发者,Ruby开发者,Angular开发者等等。

分工之后的传统的软件开发流程是这样的:

  • 软件开发人员编写代码,然后将代码交给QA(质量保障)团队进行测试,然后将最终的发布版交给运维团队去布署。所有的这三个阶段,即开发,测试,布署。早期所采用的软件交付模型,称之为“瀑布(Waterfall)模型”。

只是,这种模型比较理想化:

  • 适用于用户需求非常明确、开发时间非常充足的项目。大家按部就班,轮流执行自己的职责即可;
  • 但是,项目不可能是单向运作的;客户也是有需求的;产品也是会有问题的,需要改进的;
  • 于是,软件开发团队引入了一个新的概念,那就是大名鼎鼎的——“敏捷开发(Agile Development)”。

敏捷开发在2000年左右开始被世人所关注,是一种能应对快速变化需求的软件开发能力。其实简单来说,就是把大项目变成小项目,把大时间点变成小时间点(有关于敏捷开发的大致定义我就不赘述了,相信大家都有一个概念):

  1. DevOps中的一些关键步骤,例如自动化运维(基础设施搭建)等等,在原有的技术条件下难以实现,随着云计算、Docker、IaaS这些概念、工具的星期,为DevOps提供了技术支持;
  2. 大公司本身没有追求小而快开发模式的动力,而国内的小公司在前些年往往都属于野蛮生长的时代,对于软件项目开发没有足够的关注,其关注点可能还是在业务方面。现在随着市场的成熟,人们对于软件项目开发的关注度也在逐步提升。

2、什么是DevOps

首先,至今为止都没有一个权威的定义来说明什么是“DevOps”,所以接下来我将从一些角度来尽可能地描述DevOps是什么。现在,我们先来看看维基百科对 DevOps 的定义。不过,估计也没谁能看懂这到底是在说什么。

DevOps(开发 Development 与运维 Operations 的组合词)是一种文化、一场运动或实践,强调在自动化软件交付流程及基础设施变更过程中,软件开发人员与其他信息技术(IT)专业人员彼此之间的协作与沟通。它旨在建立一种文化与环境,使构建、测试、软件发布得以快速、频繁以及更加稳定地进行。

我从字面上来理解:

    6、DevOps的应用前景

    虽说 DevOps 优势多多,但实际情况却是说的人多,做到的很少(至少在国内,我看起来是这样)。究其原因,在于:

    1. DevOps 并不是简单地将开发部门和运维部门合并,更是企业文化、组织结构的变革,是通过自动化的基础设施和自动运行系统测试来加强开发部门和运维部门之间的协作和沟通;
    2. 对于传统企业,特别是大型分布式组织,在整体意义上的 DevOps 成功往往是不可能实现的。因为 DevOps 要求深层次的文化和组织变革,要改变的太多太多。

    所以,至少在国内,我认为DevOps这个概念还有很长的路要走,目前为止,不论是知名度还是项目的实践,都远不如他的前辈——”瀑布开发“、”敏捷开发“成熟。

    但是!随着一些新技术的普及——例如容器技术、IaaS等,会更加促进DevOps的发展:

    • 因为DevOps有在测试、发布环境上保持标准化、规范化的需求,而容器——Docker的作用就是批量创建运底层运行环境(换句话说,docker其实就是轻量化的虚拟机),这一点和DevOps的宗旨相重合。
    • 同时随着云环境的成熟,可能未来企业会完全在云端完成开发到上线的全过程(类似于买远程服务器一样,我可以用鼠标点点就可以配置若干主机,用鼠标滑轮选择拓扑结构,而小公司可能需要真正的去插拔 线,才能实现同样的功能),有了 络这个新工具,也能更好地促进不同功能团队之间的协作,暗合DevOps的思想。

    文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8665 人正在系统学习中

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月23日
下一篇 2020年10月23日

相关推荐