在交付了MVP最小可交付产品后,考虑运营的了,从持续运营的视角来看两个实践,一个是软件技术管理实践ExtremePrograming,一个是管理实践看板。
1. 极限编程
追求质量,达到极限的软件技术管理实践方法,XP 而SCRUM是一个管理框架,可用于非软件领域。 | 《解释极限编程拥抱变化》 1996年,贝克(Kent Beck)提出了极限编程(Extreme Programming , XP),他曾经帮助戴姆勒公司做过- - 个名为C3 (克莱斯勒综合薪酬,ChryslerComprehensive Compensation)的开发项目,当时项目处于困境,贝克与坎宁安(Ward Cunningham)、杰弗里斯( Ron Jeffries) 、福勒(Martin Fowler) 等人使用XP帮助项目取得了成功,这或许是第一个XP项目。 |
XP定义: 价值观+实践+社区 | XP是一种软件开发风格,专注于编程技术,清晰沟通还有团队协作的精彩实践。 |
XP的范式和属性: 确认方向; 验证结果; 反馈周期越来越短,逼近极限。 | XP的社会化属性,XP取得成功的假设: (程序员的个人修炼) |
XP13个核心实践 核心实践3: TDD+重构--开发; 持续集成; | 1. 管理实践: 团队协作(Whole Team); 规划策略(The Planning Game); 小型发布(Small Release); 客户测试(Customer Tests); 2. 管理与技术融合-管理规范-5: 代码共同所有权(Collective Code Ownership) 编码规范(Code Standards) 可持续的节奏(Sustainable Pace) 系统隐喻(System Metaphor)--通过打比方简化问题理解 持续集成(Continuous Integration)--集成前移,尽快看到结果 //持续集成、持续交付、持续部署,工具IDE的发展,持续集成不是问题了 3. 技术实践-4 测试驱动开发(Testing-Driven Development) 重构(Refactoring) 简单设计(Simple Design) 结对编程(Pair programming)--两个程序员结对,一个领队一个观察;老带新; |
核心实践扩展DevOps 开发运维一体化 | 响应拥抱变化,需要维护稳定;开发和运维的脱节--是DevOps解决的问题;
思想:开发测试联动-开发自测试;测试运维联动-测试自运维;开发运维联动,开发自运维;业务自运维; DevOps工具
华为基于二十几年的研发实践,并融合DevOps等理念方法,打造了软件开发云服务,希望为企业提供一站式的云上开发工具平台。据了解,华为软件开发云提供了项目管理、配置管理、代码检查、编译构建、测试、部署、发布等端到端地覆盖软件生命周期的相关服务。 在云计算、大数据等技术颠覆性趋势继续在应用经济下发挥作用的同时,DevOps也已经稳健地在业务思维方式中占有一席之地。在应用驱动、云连接、移动化的大环境下,DevOps战略将助力业务增值。 与DevOps相伴的一个变化是向持续集成的演进。软件开发和部署的速度是其中一个驱动因素,使得开发和运维的合并不是空谈而成为必需。 |
Scrum vs XP scrum--定位管理方法;XP: 定位仅适用于软件开发,有详细的工程实践定义; Scrum核心手段是工程学,没有太多关注人; XP则希望全面改善人的社会属性和技能。 | ![]() |
2. 看板(基于精益思想的管理方法)招牌/传递反馈信号
七个精益原则
- 消除浪费:识别浪费、价值流图
- 增强学习:反馈、迭代、同步、基于集合开发
- 延迟决策:可选项、最后责任时刻、制定决策
- 快速交付:拉动系统、排队理论、延迟成本
- 授权团队:自我决策、动机、领导力、专业技能
- 内建质量:感知、概念、重构、测试
- 整体优化:度量、合同
WIDETOM: 价值流程图中,WIDETOM可用于记录不同形式的浪费:
W-waiting等待
I-inventory不必要的库存
D-defects缺陷/次品
E-extra processing额外流程/不当流程;
T-transportation运输/搬运
O-over-production过度生产 (限制各个环节的在制品WIP Working in Progress)
M-motion动态/不必要的行动;
看板故事 | 过度生产导致的在制品挤压就是浪费,需要控制在制品数量。 |
看板的6个核心实践:
| 1.看板区别与任务板,看板按流程列泳道,每个流程节点按产量限制在制品的数量,反馈给前期节点。 //过渡生产是浪费 |
管理和度量流动方法: 1. CFD-CumulativeFlowDiagram图,累计流量图--预测待完成需求完成时间 2. Littes Law利特尔法则 //提高节点的单件生产效率; //减小等待队列长度. | |
SCRUM团队用任务板或者分层看板: 任务版-->转换为看板 把Doying的具体流程分拆为泳道,并加上在制品限制 任务版流动的是用户故事; 看板流动的是任务; | ![]() |
服务水平协议/工作分类分层 (开发任务+运维任务+突发任务)团队 | ![]() |
Scrum vs 看板: 1. Scrum中不限制在制品,Scrum限制时间盒,超时迭代失败结束; 看板限制在制品,不限制时间,从更长期持续运营的角度管理问题,没有迭代的概念。更适合运维管理。 2. Scrum的计划会,评审会和回顾会会有规律的按周期举行。 看板团队则不一定,也许有固定频率,也许按需安排。 3. Scrum团队任务会有明确的规律的三个阶段。而看板没要求。 因此看板使用场景更加灵活,运维团队更加容易介入看板管理方法。 | |
看板实施 《看板和Scrum相得益彰》 | ![]() |
8. DevOps
DevOps是Development和Operations缩写,现在市场需求和技术变化都非常快,为了配合市场的需求,开发周期就要变短(但是软件质量不能因为这个原因降低),比如说某些APP可能每周就要更新一次,所以说为了跟上市场的变化,势必就要缩短开发周期,但是传统的开发过程中与运维相关的部分比如测试,发布,部署都很花时间,所以往往开发人员和运维人员之间有着很深的隔阂,并且两者沟通效率低,为了解决这个问题,使之能够更专注于开发。
DevOps简单的说就是为了打破传统开发和运维之间的隔阂与低效,在保证产品质量的前提下实现更自动化、更高效的协作与产品的交付。 |
DevOps是什么
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。具体来说,就是在软件交付和部署过程中的提高沟通与协作的效率,旨在更快、更可靠的的发布更高质量的产品。
我们可以列举下DevOps是干啥的
- DevOps是一组过程、方法与系统的统称。用于促进开发、运维和质量保障部门之间的沟通、协作与整合。
- DevOps是一种文化转变,打破了以往开发和运维之间的隔阂,或者说是一个鼓励更好地交流和协作(即团队合作)以便于更快地构建可靠性更高、质量更好的软件的运动。
- DevOps 是一种工程模式,本质上是一种分工,通过对开发、运维、测试,配管等角色职责的分工,实现工程效率最大化,进而满足业务的需求。
- DevOps是一种能力,具备此能力的团队可以高质量、快速的交付软件产品或服务。
DevOps与传统开发方式区别
传统的开发方式是线性的,开发与运维之间存在隔阂而且沟通效率低下。而DevOps使开发与运维的流程形成了一个闭环,打破了隔阂,各部门协作更紧密,提高了协作效率。
DevOps好处
- 依托自动化工具把开发、测试、发布、部署的过程整合,实现高度自动化与高效交付。
- 在保证产品质量的前提下快速、频繁地发布产品。
- 能够即使获得用户反馈,并快速响应。
- 最大限度地减少风险,降低代码的出错率。
- 高质量的软件发布标准。整个交付过程标准化、可重复、可靠。
- 整个交付过程进度可视化,方便团队人员了解并控制项目进度。
- 团队协作更高效。
为什么DevOps姗姗来迟
1. 容器技术开始成熟,特别是docker技术的大行其道。
2. 微服务架构技术的广泛使用。
微服务是支撑DevOps方法的手段,传统开发是在一个服务器里面,把各种元素装在一起组合成一个程序,但微服务是每一个服务是一个单独的单元,可以部署在不同的服务器上,通过SOA的方法,把它连接起来,再提供整个功能。
微服务是由一个个团队组成,每团队有自己的服务,做好后,可以独立的进行测试、开发、部署,然后整个应用组合到一起。
3. 敏捷开发流程的深入人心。
诸如Scrum,Kanban等敏捷方式被团队广泛使用,TDD测试驱动设计、BDD行为驱动设计、DDD域驱动设计等设计方式的采纳,CI和CD这些持续集成和持续部署等方式的实施,这些都是对DevOps的强烈需求。
DevOps带来的变革
- 角色分工:打破传统团队隔阂,让开发、运维紧密结合,高效协作
- 研发:专注研发、高度敏捷、持续集成
- 产品交付:高质量、快速、频繁、自动化、持续交付
具体落地
简单的说,DevOps=团队文化+流程+工具
- 团队文化的意思很简单就是你的团队要知道并认可DevOps理念
- 然后就要通过具体的流程和工具来实现这个理念。
DevOps工具
简单列举下常见的DevOps工具
9. 一些问题
9.1 在运维环境中引入敏捷,但是运维如何做迭代计划呢?
引入精益思想,把看板引入运维管理当中,通过看板来管理运维bug的不断流动,并通过限制WIP的方法进一步控制。