跟我学Devops之思想篇(一)


声明:这是我在大学毕业后进入第一家互联网工作学习的内容


Devops简介

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

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

它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

下面用一张图来表示Devops的思想
跟我学Devops之思想篇(一)

敏捷开发

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷部署

敏捷部署是通过自动化工具或脚本来达到项目自动发布的目的。强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。

个人从工作中理解什么叫Devops

我们公司的项目应用大多以Java为主,用的微服务架构。那么在实际项目中应用到devops中是怎么样的呢?详情可以看下图。
跟我学Devops之思想篇(一)

整个流程可以细分成3个阶段

开发阶段

  • 开发团队提交代码到gitlab的dev分支
  • 从gitlab拉去dev分支代码
  • 单元测试
  • maven编译打成jar包
  • sonar质量检查
  • Dockerfile将jar包打成image
  • 将image推送到Harbor仓库
  • 开发环境服务器拉取Harbor仓库image并创建容器
  • 验证相关功能正常

测试阶段

  • 测试环境服务器拉取Harbor仓库image并创建容器
  • 验证相关功能正常
  • 通知开发合并分支到master分支
  • 从gitlab拉去master分支代码
  • 单元测试
  • maven编译打成jar包
  • sonar质量检查
  • Dockerfile将jar包打成image
  • 将image推送到Harbor仓库
  • 测试环境服务器拉取Harbor仓库image并创建容器
  • 验证相关功能正常

投产阶段

  • 将Harbor仓库image推送到生产环境Harbor
  • 生产环境服务器拉取生产环境Harbor仓库image并滚动发布
  • 测试、产品人员验收

细分阶段的好处

这样分阶段的Devops流程好处在于允许分散开的团队控制他们自己的命运:

  • 开发人员只用关心自己的分支代码功能、代码质量,不用考虑部署、测试。
  • 测试人员只用关心开发人员的代码功能、回归、自动化、性能测试等,不用考虑部署流程。
  • 运维人员只用关心将镜像发布到生产环境,不用考虑,代码功能、测试。

这样的流水线设计是需要一段时间的,但是设计完成后可以一劳永逸,每个团队都能专注自己的工作。也许以前你是开发,你还需要负责部署、测试;也许以前你是测试,你还需要推送镜像到生产环境;有了Devops后,你只需要在jenkins点下构建按钮,选择环境就可以实现一键发布了,专注自己领域的事有利于提高整个团队的工作效率!

总结

作为一个运维人员,当我学习到了Devops思想后就深深的认同这一点:所有的人工操作都要转换成自动化。

Devops七荣七耻与大家共勉

跟我学Devops之思想篇(一)


版权声明:

原创不易,洗文可耻。除非注明,本博文章均为原创,转载请以链接形式标明本文地址。