敏捷开发和DevOps开发运维有哪些相连之处?

网友投稿 1371 2022-12-25

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

敏捷开发和DevOps开发运维有哪些相连之处?

敏捷开发和DevOps开发运维有哪些相连之处?这个问题一直困扰着很多人!

下面由深圳青蓝咨询的小编给大家来讲解!

一、敏捷开发

敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。

简单地来说,敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。

敏捷开发模式的分类

敏捷开发的实现主要包括 SCRUM、XP(极限编程)、Crystal Methods、FDD(特性驱动开发)等等。其中 SCRUM 与 XP 最为流行。

同样是敏捷开发,XP 极限编程更侧重于实践,并力求把实践做到极限。这一实践可以是测试先行,也可以是结对编程等,关键要看具体的应用场景。

二、SCRUM 工作流程

SCRUM则是一种开发流程框架,也可以说是一种套路。SCRUM 框架中包含三个角色,三个工件,四个会议,听起来很复杂,其目的是为了有效地完成每一次迭代周期的工作。

学习 Scrum 之前,我们先要了解几个基本术语:

Sprint

冲刺周期,通俗的讲就是实现一个“小目标”的周期。一般需要 2-6 周时间。

User Story

用户的外在业务需求。拿银行系统来举例的话,一个 Story 可以是用户的存款行为,或者是查询余额等等。也就是所谓的小目标本身。

Task

由 User Story 拆分成的具体开发任务。

Backlog

需求列表,可以看成是小目标的清单。分为 Sprint Backlog 和 Product Backlog。

冲刺评审会议,让团队成员们演示成果。

Sprint burn down

冲刺燃尽图,说白了就是记录当前周期的需求完成情况。

Release

开发周期完成,项目发布新的可用版本。

如上图所示,在项目启动之前,会由团队的产品负责人(Product owner)按照需求优先级来明确出一份 Product Backlog,为项目做出整体排期。

随后在每一个小的迭代周期里,团队会根据计划(Sprint Plan Meeting)确定本周期的 Sprint Backlog,再细化成一个个 Task,分配给团队成员,进行具体开发工作。每一天,团队成员都会进行 Daily meeting,根据情况更新自己的 Task 状态,整个团队更新 Sprint burn down chart。

那么,现实中的 Scrum 是什么样的情景呢?看看下面的照片就知道了:

三、Devops

DevOps是Development and Operations的复合词,是一组流程、方法和系统的统称,用于促进开发(应用/软件工程)、技术运营和质量保证(QA)部门之间的沟通、协作和集成。IT是重视“软件开发人员(DEVs)”与“IT运维技术人员(Ops)”之间的沟通与合作的文化、运动或习俗。通过自动化“软件交付”和“架构变更”的过程,软件可以更快、更频繁、更可靠地构建、测试和发布。其目标是加强开发人员、测试人员和运维人员之间的沟通和协调。如何达到这个目的?我们的项目需要持续集成、持续交付和持续部署。

DevOps 的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。 从定义来看,其实 DevOps 就是为了让开发、运维和QA可以高效协作的流程。(可以把DevOps看作开发、技术运营和质量保障(QA)三者的交集)。

四、DevOps对应用程序发布的影响

在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下:

1)减少变更范围

与传统的瀑布模式模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。

2)加强发布协调

3)自动化

强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。

与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)。

五、实现DevOps需要什么?

硬性要求:工具上的准备

上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下:

代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion

构建工具:Ant、Gradle、maven

持续集成(CI):Bamboo、Hudson、Jenkins

配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail

容器:Docker、LXC、第三方厂商如AWS

服务注册与发现:Zookeeper、etcd、Consul

日志管理:ELK、Logentries

预警:PagerDuty、pingdom、厂商自带如AWS SNS

HTTP加速器:Varnish

消息总线:ActiveMQ、SQS

应用服务器:Tomcat、JBoss

Web服务器:Apache、Nginx、IIS

项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker

在工具的选择上,需要结合公司业务需求和技术团队情况而定。

软性需求:文化和人

DevOps成功与否,公司组织是否利于协作是关键。开发人员和运维人员可以良好沟通互相学习,从而拥有高生产力。并且协作也存在于业务人员与开发人员之间。

出席了2016年伦敦企业级DevOps峰会的ITV公司在2012年就开始落地DevOps,其通用平台主管Clark在接受了InfoQ的采访,在谈及成功时表示,业务人员非常清楚他们希望在最小化可行产品中实现什么,工程师们就按需交付,不做多余工作。

这样,工程师们使用通用的平台(即打通的工具链)得到更好的一致性和更高的质量。此外,DevOps对工程师个人的要求也提高了,很多专家也认为招募到优秀的人才也是一个挑战。

上一篇:事件管理(TMS事件管理)
下一篇:动力环境集中监控系统的架构、标准在3G综合解决方案中的应用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~