首页 > 技术文章 > devops学习笔记

shanghai1918 2020-05-07 15:01 原文

1. devops的背景和含义:

IT 公司需要 负责的事情很多,其中包括下面两个必须实现的目标:
1. 对变化莫测的市场做出反应;
2. 为客户提供稳定、可靠和安全的服务。

开发部门通常负责对市场变化做出响应,以最快的速度将新功能或者变更上线。而 IT 运维部门则要以为客户提供稳定、可靠和安全的 IT 服务为已任,让任何人都很难甚至无法引入可能会危 害生产环境的变更。这种配置方式让开发部门和 IT 运维部门的目标和动因之间存在巨大的冲突。
Eliyahu M. Goldratt 博士称这种配置为“根本的、长期的冲突”—公司对不同部门的考核和激励不同,阻碍了公司全局目标的实现。
这种冲突造成了一种恶性循环,阻碍了业务目标的实现,不但波及 IT 公司的内部,而且还 会影响外部。这些长期冲突常常导致技术工作者交付出质量低劣的软件和服务,打造出糟糕的客 户体验,每天都要采用临时解决方案、应对紧急情况。以上情景在产品管理、产品开发、QA、 IT 运维和信息安全管理中不断上演。
你会注意到产品代码部署消耗的时间更长了,从几分钟到几个小时,再到几天或者几周。更 糟的是,部署的效果越来越差,这导致客户服务中断的次数越来越多,需要运维部门来救急,而 他们也因此无法偿还技术债务。
小团队的开发人员独立地实现自己的功能,在类生产环境中验证其正确性,再 把代码快速、安全、可靠地部署到生产环境里。代码部署是日常的且可预测的工作。部署工作不是 选在周五的午夜开始、鏖战整个周末才完成,而是在每个人都在办公室的工作日进行,大多数时 候甚至不会引起客户的注意(客户兴奋地看到出现了新功能或者旧缺陷被修复了的情况除外)。 由于代码部署是在工作时间段内进行的,几十年来,IT 运维人员第一次可以像其他人一样在正常 工作时间段工作了。

引用《devops: 方法 原理 和实践》书中的一段解释:

 

 

 

 

 

2. devops的发展历程:
2007-2008 萌芽阶段
2009-2010 社区确立阶段
2011-2012 产业关注阶段 《凤凰项目》 devops圣经
2013年~  相关技术基础协同发展的阶段
 
2013年,dotCloud公司推出docker
同年 Google推出k8s
 
2015 cloud-native云原生概念成熟—CNCF开源组织成立。

 

 

 

 3. 持续集成和持续交付
devops已经指导了一些关键实践:例如持续集成,持续交付
 
持续集成: 
 与版本控制系统相连
 构建脚本
 某种类型的反馈机制 email
 集成源代码变更的过程(使用手动或持续集成服务器)
 
 
持续交付:Continuous Delivery,需要手动部署到产品环境。
 
持续部署: 自动并连续的完全部署到实际的生产环境
 
4. devops自动化工具
devops本身是一种思想理念, 为了将devops从概念转换实际可操作的实践方法需要借助一系列自动化工具。
 
持续集成— 目标是对开发团队进行集成
        包括 代码的构建,单元测试,集成测试,生成结果报告。
        目的: 让开发人员更加关注代码的质量,而不是把时间浪费在解决代码冲突和等待测试报告上。
持续集成工具:
最流行的工具是:Jenkins ,类似的还有JetBrains
 
Travis CI是基于GitHub API打造的托管持续集成工具。 jenkins通过插件完成类似Travis CI的功能。
 
持续部署工具:
ansible,puppet,chef + docker
流水线 pipeline

推荐阅读