DevOps
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
- 代码托管
- 虚拟化
- 持续集成、交付
- 无缺陷编程目标
软件开发的困难
- 复杂
- 不可见
- 可变
- 一致性:兼容
软件发展的三个阶段
- 软件依附于硬件
- 软件成为独立产品
- 网络化服务化
个体软件过程(PSP)
- 与软件质量(满足用户的期望)息息相关
典型的用户期望
- 正常工作
- 性能
- 非功能需求(安全、可靠)
质量策略
- 缺陷管理
基本流程
- 策划
- 设计
- 编码
- 单元测试
- 总结
基本原理
- 软件系统的质量由组成该系统的质量最差组件决定
- 软件质量与软件工程师息息相关
- 建立持续自我改进机制
过程度量
- 规模
- 精确的规模度量在早期很难
- 时间
- 良好的时间度量有助于工程师的能力
- 缺陷
- 日程
为什么要度量
体现决策者对要实现目标的关切程度 高质量的开发是计划出来的
质量路径
- 测试提高质量
- 评审消除缺陷提高质量
- PSP
评审手段消除缺陷比测试消除效率更高
有效的评审
- 评审检查表
- 分析整理历史项目的缺陷,辅助开展评审
- 质量控制指标
- 设计质量:设计的时间应该大于编码的时间
- 设计评审质量:设计评审的时间应该大于设计时间的50%
- 代码评审质量:代码评审时间应该大于编码时间的50%
- 代码质量:代码的编译缺陷密度应当小于10个/千行
- 程序质量:代码单元测试缺陷密度应当小于5个/千行
- 其他
- 环境
- 对阅读代码的辅助
- 时机
- 单元测试之前
- 个人评审与小组评审相结合
- 缺陷预防
- 环境
敏捷软件开发
- DevOps 是敏捷在开发端与运维端的延伸
精益思想
- 消除浪费
- 不能增加价值的行为即为浪费
- 增强学习(项目内容)
- 尽量延迟决定
- 尽快发布,尽快交付
- 下放权力
- 内置完整性
- 全局优化
DevOps成熟度模型
软件架构演化
单体架构
全部功能被集成在一起作为一个单一的单元
分层架构
- 关注点分离
每一层有特定的职责,上层只能直接访问下层
面向服务架构
- 关注点分离
- 延迟绑定(设计到运行)
消息总线与服务编排引擎
微服务架构
围绕业务能力构建的可独立开发部署的小型单元,使用远程调用进行通信
- 核心模式
- 服务注册与发现
- api网关
- 熔断器
挑战:
- 对运维监控的挑战
- 发布更复杂,出现分布式问题
- 部署依赖性强
- 通信成本高
云原生与容器
现代应用的十二范式
云原生
可快速可靠交付软件 微服务 DevOps
持续交付
使用敏捷开发来实现加快发布速度
容器
将不同特点的应用打包成一个标准化的应用
- 有效分配与管理物理资源
- 资源隔离
容器编排与调度
分布式应用由多个容器实例组成 需要一种高效的方法来管理容器集群
容器与devops
此前交付的东西是代码 当使用容器之后,交付的就是一个镜像
XaaS
什么 即 服务
SaaS 中心化的软件的分发方式,通过网络使用软件 IaaS 虚拟化硬件资源给用户 PaaS 提供给开发者使用
IT服务标准
- CMMI-SVC
- ITIL
- ISO20000
- ITSS
工具链
- 协同开发
- 工作可视化。加强沟通
- JIRA
- KanBan
- Rally
- 持续集成
- jenkins
- 版本管理
- git
- svn
- 编译工具
- ant
- maven
- gradle
- msbuild
- 测试工具
- junit
- selenium(ui测试)
- cucumber(自动化验收)
- fitnesse(管理)
- 监控
- nagios
- zabbix
持续交付
团队拓扑
- 业务流团队(Stream-aligned Team) 工作可能是一个产品或服务,也可能是一组特性、一个用户旅程或一个用户画像
- 赋能团队(Enabling Team) 由特定技术领域或产品领域的专家组成,对于技术问题开展调研,尝试不同的方案,寻找最佳实践
- 复杂子系统团队(Complicated-Subsystem Team) 业务逻辑十分复杂或者需要十分专业的领域知识,由该领域的专家组成一个固定的团队,来维护这个复杂的模块
- 平台团队(Platform Team)负责解决底层问题,让业务流团队可以更专注于业务开发
团队交互模式
- 协作(Collaboration)是指一个团队与另一个团队紧密合作
- 服务(X-as-a-Service)是指使用或提供某种服务,而尽量减少协作
- 促进(Facilitating)是指帮助其他团队清除障碍,赋能团队主要干的