DevOps:原理、方法与实践

软件开发中的精益原则

1 )消除浪费。浪费是不会增加产品价值的东西,这里的价值必须是由客户确定的。
在精益思维中,浪费的概念有一个很大的跨越(与日常浪费概念相比)。如果一个开发周
期中在没有人读的文件中收集了需求,那就是浪费。如果一个制造工厂生产的材料比立
即需要的多,那就是浪费。如果开发人员编写比立即需要更多的功能,那就是浪费。在
产品开发中,将开发从一个团队转移到另一个团队是浪费的。理想的是找出客户想要的
东西,然后制作或开发它,并且几乎立即交付客户想要的东西。
2 )增强学习。软件开发是个持续学习的过程,最佳的改善软件开发环境的做法就是
增强学习。使用短周期的迭代(每个迭代都应包括重构、集成测试、部署和交付)可以加
速学习过程。在决定当前阶段的开发内容并对未来改善的努力方向进行调整时,客户反
馈是最重要的学习素材。通过反馈,产品团队能够应对不明确和易变的需求。在软件设
计时,不是去做成更多的文档或详细设计,而是对各种各样的想法进行实际的编码尝试,
在代码完成后马上进行测试,从而使得软件的质量在学习中保持在很高的水平。
3 )尽量延迟决策。面对当前软件复杂系统功能以及设计的不确定性,尽量延迟决
策,直到可以基于更多的事实并且不确定性更容易预测时才做出决定,这使得我们做出
正确决策的可能性变得更大。
4 ) 尽快交付。没有速度,我们无法延迟决策; 没有速度,我们没有增强学习需要的
反馈。交付周期对于学习至关重要: 设计、实施、反馈、改进。这些周期越短,可以学
到的越多。尽可能多地压缩价值流是消除浪费的基本精益策略。
5 )赋予团队权力。软件具体工作中涉及技术决策的细节是做出正确决策的基础,而
没有人比实际工作的人更了解细节, 精益主张将技术决策权利下放到团队的每个人手里,
从而使开发人员有权利来阐述自己的观点并做出决策,这能够极大地改善决策速度和
质量。
6 )内建完整性。当用户认为系统是完整的, 会感觉“是的,这正是我想要的,有人
在我的脑海里!” 市场份额是产品感知完整性的一个粗略测量,因为它衡量了客户的意见
反馈。完整性的软件具有一致的架构,在可用性和适用性方面达到高水平,具有可维护
性、适应性和可扩展性。
7 )全局优化。全局优化使得每个部门之间的联系更紧密。除了努力降低每个部门内
的成本,消除部门之间的隔阂和浪费会产生更显著的效果。在DevOps 成为一大趋势的今
天,开发部门、质量管理部门和运行维护部门之间的协同变得越来越重要了。

三种敏捷方法

scrum xp kanban
Sc 「um : 着重于项目管理,特别适于难以提前进行计划的项目。Scrum 以经验过程
控制理论为依据,采用迭代、增量的方法来提高产品开发的可预见性并控制风险。Scrum
框架包括一组Scrum 团队和与其相关的事物: 时间盒、工件和规则。Scrum 团队的目标
是提高灵活性和生产能力,自组织、跨职能,并且以迭代方式工作。Scrum 团队有三个
角色: ( 1 ) Scrum Master ,负责确保成员都能理解并遵循过程;( 2 ) 产品负责人,负责最
大化Scrum 团队的工作价值;( 3 )团队,负责具体工作。Scrum 利用时间盒实现规律性。
被时间盒限定的Scrum 要素有: Sprint 计划会议、Sprint 、每日站会、Sprint 评审会议和
Sprint 回顾会议。Scrum 中的Sprint 是贯穿于开发工作中保持不变的一个月( 或更短时
间)迭代。所有的Sprint 都采用相同的Scrum 框架,并且都交付潜在可发布的最终产品
增量。Scrum 采用了三个主要的工件: 产品Backlog 是开发产品的所有需求的优先排列表;
Sprint Backlog 包含了在一个Spri旧内的产品Backlog ; 燃尽图用来衡量剩余的Backlo g
的工作量[7] 。

Kanban : Kanban (看板)是日语单词,是“可视卡片”(或标志)的意思。在丰田,
看板专指将整个精益生产系统连接在一起的可视化物理信号系统。看板的主要规则有:
( 1 )可视化工作流,把产品切分成小块,将每一块写在一张卡片上,然后将卡片贴到墙
上;墙上的每一栏都有名称,以此显示每张卡片在工作流中所处的位置。( 2 ) 限定在制
品( WIP ), 针对工作流的每个状态, 明确限定正在进行中的工作项数量。( 3 ) 衡量并管
理周期时间,完成一个工作项的平均时间,有时称为前置时间(更贴切的术语可能应该是
流通时间) 。优化流程让周期时间尽可能短、尽可能可预测[32) 。

ITIL 的全称是Information Technology Infras tru cture Library (信息技术基础架构库) 。
ITIL 是一套公开的、基于业界最佳实践制定的、用于规范IT 服务管理的流程和方法论。
它以流程为导向,以客户为中心,目的是确保IT 能更好地服务于业务部门,从而让企业
的IT 投资回报最大化。

微服务架构

image.png

zipkin 调用链路图

image.png

监控:zabbix
测试:selenium
配置管理:puppet ansible
编译:maven ant
版本管理:git gitlab
持续集成:jenkins
协同开发:jira
docker k8s

你可能感兴趣的:(DevOps:原理、方法与实践)