1、敏捷与,DevOps,浅谈,1,2024/11/22 周五,引言,敏捷,的出现缩小了商业需求和开发之间的隔阂,有效的加快了产品开发的周期和效率。,开发和运维之间的隔阂需要解决,,DevOps,的理念应运而生。,目录,理解敏捷,敏捷开发流程,Scrum,迭代式增量软件开发,DevOps,理念,敏捷与,DevOps,敏捷更符合软件开发规律,传统开发,敏捷开发,软件更像一个活着的植物,软件开发是,自底向上逐步有序的生长过程,,类似于植物自然生长,敏捷开发遵循软件客观规律,不断的进行,迭代增量,开发,最终交付符合客户价值的产品,理解敏捷,敏捷开发是,“,一种以人为核心、迭代、循序渐进的开发方法,
2、在敏捷开发中,软件项目在构建初期被切分成,多个子项目,,各个子项目的成果,都经过测试,,具备可视、可集成和可运行使用的特征。,谁在用敏捷,目录,理解敏捷,敏捷开发流程,Scrum,迭代式增量软件开发,DevOps,理念,敏捷与,DevOps,敏捷开发流程,PO,和开发团队对产品业务目标形成共识,PO,建立和维护产品需求列表,(需求会不断新增和改变),并进行优先级排序,PO,每轮迭代前,,Review,需求列表,并筛选高优先级需求进入本轮迭代开发,开发团队,细化本轮迭代,需求,并按照需求的优先级,依次在本轮迭代完成,开发团队每日,站立会议,、,特性开发,、,持续集成,,使开发进度真正透明
3、PO,对每轮迭代(,2,4,周,)交付的可工作软件进行现场验收和反馈,回到第,3,步,开始下一轮迭代,迭,代,每日工作,站立,会议,特性开发,特性测试,持续集成,交付,可以工作,的软件,迭代计划,回顾,确定一个迭代,的工作内容,产品和利益相关人,、,目录,理解敏捷,敏捷开发流程,Scrum,迭代式增量软件开发,DevOps,理念,敏捷与,DevOps,Scrum,特点,Scrum,将小型团队转化为自身命运的管理者,强调每个人的主动性与参与性,快速实现“频繁变更的需求”,关注交付与产出的商业价值,目的:促使整个开发过程,迅速,、,自我驱动,Scrum,角色,敏捷,团队,包括,3个核心角色,:,
4、PO,(,Product Owner),传递来自市场的声音、提升项目的回报,确定产品,Backlog,中的优先级,从产品的角度确保团队工作方向,Scrum Master,(Scrum,教练,),管理,Scrum,流程,确保,Scrum,运转,确保每个,Sprint,目标的实现与产出,不受外界干扰,Team,(Virtual Team,虚拟团队,),-,由,5-9,人组成(开发,测试等)、评估每个,Sprint,工作,Scrum,框架,迭代,每,2-4,周,Daily SCRUM,每,24,小时,高优先级,可运行的软件,工作项,分解,产品订单,Product Backlog,迭代订单,Sprin
5、t Backlog,新的功能增量,迭代规划会议,Sprint Plan,一般,不超过,8,小时,。,前,4,个小时:,产品负责人,向团队展示最高优先级的产品,团队则向他询问产品,Backlog,的内容、目的、含义及意图。,后,4,小时:团队计划本,Sprint,的安排,迭代复审会议,Sprint Review,一般,4,个小时,,由,团队成员,向产品负责人和其他利益相关人展示,Sprint,周期内的产品开发情况,迭代回顾会议,Sprint Retrospective,一般,3,个小时,,,Scrum Master,将鼓励团队在,SCRUM,过程框架和实践范围内,对开发过程做出修改,使它在下一个
6、Sprint,周期中更加有效和令人愉快,每日站立会议,Daily Scrum Meeting,在简会上,每个成员主要回答三个问题,;,自上次,SCRUM,简会后的一天了(昨天),,你做了什么,?,从现在到下次,SCRUM,简会的一天里(今天),,你要做什么,?,在实现,SCRUM,及项目目标的工作中,你遇到,哪些困难,吗,?,产品负责人,Scrum,主管,开发团队,Scrum,工具,团队:,Sprint,计划会议,(,Sprint Backlog,),Daily,简会,评审会议、总结,Product Backlog,所有需要完成的产品清单,包括优先级、商业诉求,,PO,负责,Sprint B
7、acklog,由团队主动选择完成的每个,Sprint,需要完成的,Story,列表,每个,Story,包括了需求、优先级、工作量,一旦确定,不亦更改,Sprint Burn down,显示工作量趋势变化的图表,每天,由,Scrum Master,更新,Story,列表,故事是用来讲的、分享的、讨论的,有价值:从商业的角度阐述(非技术术语),小、独立,:简单的功能,可讨论:关于故事的交流更重要,动态的:伴随交流,确定细节、优先级,优先级、需要交付的截止日期,大需求可先写下大故事,再,提炼,、,分解,Story,列表,XXXXX,备注:,XXX,内容,优先级,P1,Sprint,Sprint 1,
8、细节,1,:,XXX,细节,2,:,XXX,细节,3,:,XXX,Task 1,:,3 hour,Task 2,:,2 hour,Task 3,:,3 hour,Task 4,:,3 hour,Task 5,:,2 hour,Task 6,:,3 hour,Deadline,2015XXXX,SP,8,估算时间,(story point),计划纸牌,Daily Meeting,每天,15,分钟,,团队面对面站立成圈,晨会是为项目信息同步可视化,不是为了解决问题,避免无关的讨论,(SM,引导,),欢迎各界人士,但,只有“猪”可以发言,任务看板,-,燃尽图,迭代结果的验收,(,Review,),迭
9、代结果的验收,(,Review,),团队需要演示所完成的,迭代工作,典型的做法是使用演示形式展示新功能或者底层架构的实现,非正式的,2,小时的提前准备,不需要正式演示文档,相关的利益相关者,邀请所有关注产品的人参加,一个好,Demo,的效果,1.,促进,PO,融入团队,PO,真正被团队认可成为团队的一员,不再是“,那个被,Boss,传递需求,”,2.,判定演示成效:,符合故事结果预期,没有,Bug,亮点可以是技术的革新,界面好,生产力提升等,每个评委都必须把不足点表达出,并请团队改进,3.,沟通:,每个故事,Demo,后,有,1 3,分钟,沟通和提问,团队会直接直面客户的反馈,目录,理解敏捷,
10、敏捷开发流程,Scrum,迭代式增量软件开发,DevOps,理念,敏捷与,DevOps,DevOps,的出现,开发团队,要求的不断满足新的客户需求,并快速实现新的功能。,而,运营,最关心的是“稳定压倒一切”,任何差错都有可能对生产环境中的用户造成直接影响。,如何解决开发和运维的隔阂,Wikipedia,对,DevOps,的定义是:,DevOps,是,软件开发,、,运维,和,质量保证,三个部门之间的沟通、协作和集成所采用的流程、方法和体系的一个集合。它是人们为了及时生产软件产品或服务,以满足某个业务目标,对开发与运维之间相互依存关系的一种新的理解。,.DevOps,并不仅仅关注软件部署,它是部门
11、间沟通协作的一组流程和方法。,打破了目前的,rd-qa-op,流水线的流程,例如:,rd,每次提交代码触发一系列的自动化步骤,包括,编译,单元测试,代码覆盖率,功能测试,部署测试,性能,/,容量测试,,,rd,,,qa,,,op,都在过程中做质量保障。,如何解决开发和运维的隔阂,代码树,-,主干开发,所有的,feature,作为一个整体发布,Team Foundation Server,持续集成工具,-,开发测试一体,持续集成,持续集成,的解决方案是简洁的。产品由,SVN,去管理,构建过程由,CI server,负责,而构建过程包含了编译,测试,发布,部署过程,Tools,:,Automate
12、d infrastructure(自动化,系统之间可集成),shared version control(SVN共享源码),one step build and deploy(持续构建和部署),feature flags(公司内部称为single branch,主干开发),Shared metrics,(指标度量工具),IRC and IM robots(信息整合),目录,理解敏捷,敏捷开发流程,Scrum,迭代式增量软件开发,DevOps,理念,敏捷与,DevOps,敏捷与,DevOps,敏捷,/,精益,开发方法可以提高应变业务变化的能力,并内建质量。,DevOps,把开发和运维的沟壑抹平。那么我们的,development,和,ITIL,就能够结合到一起了。,敏捷与,DevOps,Go for the goal,!,






