文档章节

DevOps - 使SAAS持续交付

Mr-Bird-Lee
 Mr-Bird-Lee
发布于 2017/09/05 10:14
字数 1997
阅读 39
收藏 0
点赞 0
评论 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
博文 20
码字总数 33438
作品 0
海淀
程序员
【干货合集】从菜鸟到老司机,20篇文章带你了解DevOps!

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

林一木 ⋅ 05/14 ⋅ 0

活动干货|基于Docker的DevOps实现

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

精灵云 ⋅ 2017/03/16 ⋅ 0

什么样的持续交付工具和平台最适合你的组织?

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

猫耳m ⋅ 05/02 ⋅ 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

灵雀云发布Alauda EE,基于容器面向DevOps应用的新一代PaaS平台

  【IT168 云计算】6月8日,以“云筹帷幄、从容自如”为主题的Alauda EE企业专享版产品发布会如期举行,灵雀云CEO左�h宣布正式发布企业专享版产品“Alauda EE”。   Alauda EE 是灵雀云...

it168网站 ⋅ 2017/06/12 ⋅ 0

云规模落地 云服务后市场预热期已来?

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

it168网站 ⋅ 2016/09/22 ⋅ 0

你所不了解的DevOps

本文摘自人民邮电出版社异步社区《DevOps开发运维训练营》一书,点击查看http://www.epubit.com.cn/book/details/7709 关注微信公众号【异步社区】每周送书 DevOps开发运维训练营 一旦建立了...

异步社区 ⋅ 01/12 ⋅ 0

运维杂谈老王:详谈运维可视化、DevOps和运维危机

本文分为三个部分,第一部分从服务交付和服务度量两方面介绍运维可视化;第二部分介绍什么是DevOps以及它给运维带来的改变和影响;第三部分结合最新的数据资料和趋势聊一聊运维人可能面临的危...

王津银 ⋅ 2016/02/17 ⋅ 0

谈谈持续集成,持续交付,持续部署之间的区别

经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署 正如你在上图中看到,...

风起云飞fir_im ⋅ 2016/08/04 ⋅ 0

给 DevOps 初学者的入门指南

当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念。那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代的频率越来越高,传统的...

风起云飞fir_im ⋅ 2016/09/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

笔试题之Java基础部分【简】【一】

基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他 1.length、length()和size() length针对...

anlve ⋅ 27分钟前 ⋅ 2

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 51分钟前 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 56分钟前 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 8

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部