文档章节

DevOps - 使SAAS持续交付

Mr-Bird-Lee
 Mr-Bird-Lee
发布于 2017/09/05 10:14
字数 1997
阅读 45
收藏 0

提到Devops我们不得不先切分一下Dev(开发)和Ops(运维)这两个角色。 在计算机产生早起,由于计算机使用范围的限制,硬件生产、软件开发及软硬件的维护都是来自相同的人员或团队,所以两个角色自然融合,本身就是一体的。 随着计算机使用领域和范围延入了各行各业,产品需求越来越复杂,人们更精细化的拆分了整个研发的生命周期,形成了更专注于开发测试的Dev角色和面向部署运维的Ops角色。

       如今为了更快速交付价值,传统瀑布式开发模型转型敏捷开发。同时一款优秀的产品通常也都是一个有规模的体系工程,需要产品、研发、测试、运维更和谐的团队沟通和更合理有效的配合流程,然而对开发团队的要求是通过快速实现新的功能交付价值,而运维团队则希望能提供给用户最稳定最可信任的生产环境,两个团队提供给用户的价值衡量指标不同,自然工作重点也不相同,这种矛盾也导致配合中出现了巨大的浪费。 为了缩小开发与运维之间存在着信息"鸿沟",能够更快地构建可靠性更高、质量更好的软件,DevOps的理念随之产生,它并不代表一个角色,一个资格或一个头衔,而是开发、运维和质量保证三个部门之间的沟通、协作和集成所采用的流程和方法的一个集合、一种文化,也是从瀑布式到敏捷再到精益的发展必然。

       近年来中国企业应用采用SAAS模式已经是大势所趋。但产品生产过程中出现的种种问题:不一致的运行环境、过多的人工参与依赖构建和部署,改动引起不可控的质量,各个环节沟通和理解不到位等,导致了个人或团队经常出现工作中断,配合效率低下。所以如何结合SAAS和DevOps高效发展产品也将是大多数企业快速成长必然经历的过程。

  • 全局把握
    团队对DevOps有统一的认识和相同的思维方式,描绘愿景,使DevOps的目标清晰。各角色深入理解相互的工作内容,打破隔阂,比如Dev角色要清楚部署架构、部署流程;如何保障安全性和高可用性;对性能指标、压力情况和监控报警的结果更要作为工作重点。Ops角色也要对开发所使用的语言、框架、工具等有所了解,如何管理源码及分支、如何编译打包部署更要不仅仅接手命令的使用,要深入理解原理和过程,甚至Ops也要参与需求的技术评审,提出技术实现可能带来的运维风险。团队有了统一的思想并能及时沟通协作,有助于技术或工具的合理选型及应用, 制定统一的规范,标准化流程。
  • 代码和运行环境
    管理好源码和分支是研发团队保障信息安全、高效协作的基础。我们采用Git作为源码管理工具,并引入多年来业界总结出的Git使用最佳实践,也定义了适合自己的源码命名规则及版本号规范。更合理的branches为敏捷开发提供了高效运转的可行性,但也对各个branch的运行环境带来巨大的挑战。我们根据敏捷生命周期不同时期的要求,拆分了四套(Develop、Test、Staging、Production)运行环境。
    Develop主要给feature branches提供环境。一次敏捷迭代会完成多个(几个或几十个)新feature,每个feature都需要有单独的运行时来保证feature之间互不影响,开发和测试环境单纯,所以Develop环境是由多个运行时组成的,根据新feature数量来决定。我们采用docker技术将运行时容器化,开发人员完全可以依据需要随时产生一个运行时,并在使用完毕后销毁它。
    Test主要给develop branch提供环境。当一次迭代中某个新feature已经开发并测试完成,这个feature就可以将源码merge到develop branch上并进入下一周期——集成测试,Test就提供了一个或多个新feature集成环境。
    Staging是一套预发布环境。它和Production在环境配置方面保持高度一致,用户数据则是production环境中混淆脱敏的数据。在Test环境完成集成测试后发布Staging环境中进入性能、压力及数据完整性方面的测试,同时公司内部也是通过这个环境完成产品新功能的培训和体验的。
    Production是生产环境。提供给用户使用SAAS服务的最终环境。
  • 持续集成和自动化
    每一次源代码提交都应该立即构建、测试来验证功能并保证新代码的正确性及和旧代码是否能成功集成在一起,持续集成将整个过程快速不断的反馈和修正。要达到持续集成的能力,不单是管理好源代码,还需要更多的工具和准则:使用code style对源代码编写规范化;maven进行构建;利用nexus建立本地私服来对各种环境的编译和部署提供统一的依赖库。更重要的是面对如此复杂多样的环境过多的人工参与会使出错的几率大大提升,为了降低浪费,我们要将各个环境尽可能的自动化:构建部署自动化、测试自动化(自动化单元测试、自动化集成接口测试、自动化功能测试),使用jenkins来建立jobs将所有的自动化环境串联起来。我们对Develop和Test环境设置了持续集成规则,任何feature branch代码的提交将触发jenkins一系列jobs的执行,检查、构建、测试最终部署到指定的docker容器中;同样Test环境每天早上从develop branch上检测出变更的代码进入jobs,自动化完成各个粒度的测试。当然持续集成过程中任何问题都会邮件通知给相应的人员处理。
  • 持续交付
    交付成果给客户使用时每次迭代的目标,在持续集成的基础上,将集成后的代码部署到真实运行环境中,使得交付物尽早的得到验证和反馈,无论输出的好坏都是有价值。持续的交付可以不堆积问题马上调整,也为产品下一次迭代提供优化的空间。
  •        计算机领域新概念都是在面临之前的困境和挑战中孕育而生的,这些概念不仅是人类经验积累和智慧的结晶,也为行业提供了统一的新思想和解决方案。如今DevOps已经离我们不再遥远,正是革新团队尝试新理念的好时机。IT服务能力在今天已经成为企业的核心竞争力,为了在激烈的市场竞争中占有优势,研发团队甚至整个公司都应该作出快速并积极的响应。也许在实践中还要结合实际进行探索和试错,但我们坚信只要方向正确,就要坚持走下去。

© 著作权归作者所有

共有 人打赏支持
Mr-Bird-Lee
粉丝 1
博文 22
码字总数 33438
作品 0
海淀
程序员
【干货合集】从菜鸟到老司机,20篇文章带你了解DevOps!

如今,虽然业内还并未对DevOps的定义达成共识。但是几乎每个行业机构和组织都制定了一套自己的DevOps实践。他们以为只要进行自动化、配置管理和敏捷开发,就算是真正意义上了解并实践了DevOp...

林一木
05/14
0
0
活动干货|基于Docker的DevOps实现

作者:精灵云 众所周知,传统开发模式已经面临了诸多难题。首先,在代码集成方面,因为没有合适粒度的代码合并,大规模的合并会有很大的风险,且传统开发模式中没有自动化测试,以至于测试周...

精灵云
2017/03/16
0
0
什么样的持续交付工具和平台最适合你的组织?

持续交付和DevOps的方法论及实践已经存在很很多年,其主要要解决的问题就是,如何快速,安全的完成从开发到发布、运维,及后续的线上监控等一系列活动。 持续交付和DevOps包含了很多内容,比...

猫耳m
05/02
0
0
IBM 云技术:如何结合使用所有技术

IBM 云技术:如何结合使用所有技术 Franck Barillaud, Chuck Calio, 和 John A. Jacobson 2017 年 6 月 19 日发布/更新: 2017 年 11 月 28 日 云计算代表了IT资源的创建,交付和使用方式的巨...

Franck Barillaud, Chuck Calio, 和 John A. Jacobson
2017/06/19
0
0
云规模落地 云服务后市场预热期已来?

  【IT168 云计算】在云服务产业蓬勃发展的今天,越来越多的企业已经开始实现云服务的规模部署。无可厚非,面向高可用、可拓展、安全可靠的高品质云服务越来越受到用户青睐,为了应对云端用...

it168网站
2016/09/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring 事件

ContextRefreshedEvent Event raised when an {@code ApplicationContext} gets initialized or refreshed. ContextClosedEvent Event raised when an {@code ApplicationContext} gets clos......

Canaan_
28分钟前
1
0
leetcode两数之和

leetcode中求两数之和解决方法 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 给定 nums = [2, 7, 11, ...

lar555
44分钟前
1
0
js实现限制网页内容复制

转载 在我们做的网页发到网上后,如果访客看到比较喜欢的内容,只要复制就可以变为自己的,自己辛辛苦苦弄半天还不及人家的一下复制,有时为了只让访客看到,而不能让它们复制内容,就用Jav...

lc_comeon
48分钟前
1
0
jenkins将spring boot项目发布到阿里云镜像中

1、spring boot项目 1.1 pom.xml配置 <artifactId>xxx-docker</artifactId><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.......

xixingzhe
今天
0
0
qsv格式可以在电视上播放吗

  大家都知道qsv格式是爱奇艺的独家缓存格式,是加密的,一般的播放器是无法播放的,只能在爱奇艺播放器上播放,如果想要在电视上播放,就必须要安装爱奇艺播放器,比较麻烦。其实还有一种...

萤火的萤火
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部