1- Devops介绍
_ _ _ devops本质是一种理念,
_ _ _ devops是软件开发,运维和质量保证三个部门之间的沟通、协作和集成所采用的流程、方法和体系的一个集合。它是人们为了及时生产软件产品或者服务,以满足某个业务目标,对开发与运维之间相互依存关系的一种新的理解。
1.1- 特点
- Dev和Ops具有不同的世界观:
- 运维人员要求稳定可靠,认为变更充满风险。
- 开发人员则被鼓励频繁发布新代码,认为运维部门对流程的坚持,阻碍了开发的进度。
- 开发和运维之间的脚本,配置,过程和环境存在差别:
- 脚本程序在开发的环境上ok,但是在运维的机器却出现问题。
- 沟通壁垒:
- 开发和运维团队处于公司组织的不同部门,不同的管理者,不信任的关系或者不同的工作地点。
DevOps是敏捷理念从开发领域 向 运维领域 的延伸。
_ _ _ 在DevOps方法论指导下,所有运维人员不仅要参与到软件开发的整个流程,还需要一定的敏捷理念。
- 计划阶段:运维人员为开发提供需求,制定发布计划。
- 编码/构建/验证阶段: Scrum、极限编程和精益生产、持续集成、自动化测试。
- 部署阶段: 开发团队负责部署,监控部署过程,以及部署后的运行。
1.2- DevOps的具体定义:
_ _ _ 是一套实践方法,在保证高质量的前提下缩短系统变更从提交到部署生产环境的时间。
1.3- 驱动DevOps不断发展并付诸于实践的因素:
- 业务负责人要求加快产品交付的诉求
- 并发团队大规模使用敏捷软件开发过程与方法
- 虚拟化和云计算基础设施日益普遍
- 虚拟数据中心自动化技术和配置管理工具的普及
1.4- 核心思想: IT与运营团队的相互融合。#####
- 运营人员参与开发过程,指导开发人员生产运营友好的应用程序
- 开发人员参与运营环节,了解运营需求并及时清除代码中不利于运营的缺陷。
- 实现开发环境,测试环境,生产环境的高度相似度,可编程,自动化的全生命周期的配置维护管理,从而适应软件的高高变动性,高可用性,高可靠性要求
1.5- DevOps实践的原则
- 部署对系统变更时,质量很重要: 保证方法上有生产环境前跑通自动化测试用例,先让一小部分用户对生产环境的变更进行测试,对新部署的代码密切监控。
- 交付机制是高质量的:交付机制应具备的可靠性和可重复性。
- 时间重要性: 开发人员提交新代码的时间,代码部署到生产环境的时间。
- 目标导向: 不拘泥于实践形式或者是否使用工具,目标是减少提交代码到部署生产环境之间的时间。
- 用户测试和部署实践: 在需求阶段就包含运维人员的视角。
1.6- DevOps其他要素:
- 文化: 建立一体化的全功能团队,打破开发与技术的运营隔阂。
- 自动化: 一切可以自动化。
- 精益: 以精益的方式
- 度量: 建立有效的监控与度量手段快速获得反馈,推动产品和团队的持续改进。
- 分享: 不同职能、产品之间经验分享。
1.7- 具体工作
- 提升软件部署质量
- 更新软件发布
- 提升IT过程和需求的可视化程度
- 改变合作协同文化
- 相应更多的业务需求
- 开发更敏捷
- 管理过程更敏捷
- 提升代码质量
1.8- 所需理念或者工具
- 人员:自治的团队。开发人员向全栈工程师发展并融合不同团队。
- 流程: 开发过程中最小化可执行产品、持续集成/交付/部署、测试驱动开发。
- 技术: 开发者自服务,基础设施即代码、集成工具链
- 文化: 合作文化、持续体验
1.9 -遇到问题
_ _ _ DevOps实践能够使企业以更加精简、高效的方式运作。但也有很多障碍,比如不同部门的思维不同,对开发团队要求比较高等。
- 各环节能力没有自动化拉通,交付周期长;
- 问题不能早发现,不断向后积累,交付质量差;
- 解决问题不能自动化验证,效率低;
- 研发过程缺乏统一视角,沟通效率差,导致大量浪费和返工;
1.10- DevOps生命过程
实现自动化流水线,包含:
- 需求
- 编码
- 测试
- 构建
- 发布
- 部署
- 运维