敏捷团队/devops的生命周期

2022-05-27 10:00:00
耿兵兵
转贴:
公众号
416
摘要:名心理学家布鲁斯·塔克曼(Bruce W.Tuckman),在 1965年提出了团队发展四阶段模型,并在1977年与詹森(Jensen)在原来的基础上加入了第五阶段,该模型对组织发展理论产生了深远的影响,这个模型也给项目管理提供了很多思路和理论基础。
著名心理学家布鲁斯·塔克曼(Bruce W.Tuckman),在 1965年提出了团队发展四阶段模型,并在1977年与詹森(Jensen)在原来的基础上加入了第五阶段,该模型对组织发展理论产生了深远的影响,这个模型也给项目管理提供了很多思路和理论基础。

我们现在前端开发中无论vue还是react或者是微服务都有各自的生命周期,正如天道轮回,万事万物都有其生命周期,花开花谢,我们了解其规律,可以更好的帮助我们去了解事物的本质,也更能提升自我的认知......

vue生命周期????
devops-vue life cycle
react生命周期????
devops-react life cycle

敏捷团队的生命周期

首先,我们先来看一下塔克曼的团队发展阶段模型: 
  • 阶段 1:组建期(Forming),团队(项目小组)成立阶段。
  • 阶段 2:风暴期(Storming),团队内部出现各种观念、想法、碰撞频繁,冲突不断。
  • 阶段 3:规范期(Norming),团队开始建立规则,统一行为、价值和目标。 
  • 阶段 4:发挥期(也叫执行期,Performing),团队能量积聚于一体,发挥出高效能。 
  • 阶段 5:解散期(也叫修整期,Adjourning),任务完成,团队解散。
塔克曼认为,所有五个阶段都是必须的、不可逾越的,团队在成长、迎接挑战、处理问题、制定计划、达成结果等一系列过程中必然要经过上述五个阶段。


接下来分析一下在敏捷团队中,如何在 5 个阶段中做好敏捷项目(团队)管理。

阶段 1:团队组建期,明确目标和任务

在这个阶段,敏捷团队刚刚成立,团队成员互相不熟悉,对即将开始的项目充满了疑问,比如,我们这个项目具体做什么?我们怎么来开展这个项目?我们和谁合作?我的工作内容是什么,等等问题。


在这个阶段任务不清晰,团队成员个人意识强,因为彼此不熟悉不了解,协作的意愿还比较弱,项目管理者在这个阶段的任务需要和大家明确目标和任务,像个创业者一样给大家注入意义感和方向感,尽可能的多了解项目信息并在内部拉通这些信息。


在此阶段,团队成员需要对目标的背景/前景/规划和为什么要做这个项目有个了解,人的第一驱动力就是兴趣。

devops-Project Management Canvas

阶段 2:团队风暴期,包容差异,指导团队处理冲突

这个阶段个人的意识和需求非常强烈,团队协作出现冲突,团队任务和目标的实现受到团队不和谐氛围的影响,项目管理者在这个阶段的任务是跳出具体问题,站在项目全局和全生命周期的角度来思考冲突和解决方案,对必然会变好的趋势保持乐观,包容团队和团队个体表现出的差异,需要强调一点的是,并不是所有的冲突都会给团队带来负面的影响,很多时候良性的冲突反而会帮助团队发掘创新的想法,帮助团队快速建立信任,所以项目管理者需要做的是指导团队把恶性冲突变为良性冲突。


这个阶段推荐项目管理者借助敏捷项目管理实践采取这样一些行动,帮助大家建立信任沟通可以解决80%的问题,合适的反馈机制可以极大的提升效率,构建反馈的文化。

阶段 3:团队规范期,引导团队制定规范

在这个阶段,敏捷团队开始为了解决问题而产出各种解决办法,在解决问题的过程中相应的制定各种规范和规则,等等。


整体来讲,这个阶段团队个体在磨合期已经有了相对的了解,团队协作机制形成,团队开始重视任务的达成和目标的实现,项目管理者在这个阶段的任务是引导团队制定规范,并且参与到具体的规范制定中来,鼓励通过协作的方式来解决问题,鼓励通过协作的方式进行知识传递和人员能力建设;透明指的是项目过程中所有的信息是公开透明的,鼓励通过流程和工具维护信息的透明性,降低误解带来的风险和重复沟通导致的效率降低。

阶段 4:团队发挥期,团队自组织,持续寻求突破

在这个阶段,敏捷团队个体之间已经建立起了信任的关系,彼此之间协作非常顺利且高效,技能上互补,行动上互助,团队处于高效能的状态,开始以自组织的方式开展各种工作,设定目标,解决问题,处理差异,不断取得阶段性的结果,团队自发形成各种能力建设和分享的活动,团队决策的效率也明显提高。


整体来讲,这个阶段团队个体比较能够发挥自身的优势,团队协作非常稳定,团队的目标通过协作不断达成,那么,项目管理者在这个阶段似乎能发挥作用的空间很小?


现实是,这个阶段是很好的创新和突破的阶段,团队在发挥期到达一个平衡,并不代表着团队就止步于此,项目管理者在这个阶段的作用是对团队提出新的挑战和要求,鼓励团队用新的方式来解决问题,这种要求有时候以一种压力的方式出现,目的是迫使团队走出舒适区,打破以前的平衡,在更高的要求下建立找到新的平衡,以此提升能力,提高团队整体水平。

阶段 5:团队解散期,最好的学习方法是沉淀经验

在这个阶段,敏捷项目已经取得了阶段性的成果,团队或者会继续下一期,或者就此告一段落,这个时候团队会面临人员的替换或者团队的解散。


项目管理者在这个阶段的作用是带领大家做一次有纪念意义、有回忆色彩、又收获满满的项目复盘,因为最好的学习方法是沉淀经验。


项目回溯复盘,不仅能对项目进行一个有仪式感的回顾,还能让参与复盘的团队人员从项目的整个经历里总结经验和教训,在以后的项目中,能够快速及时选择验证过的想法、方法和经验,规避错误的行为,少走一些弯路。


具体来讲,如何做好一个项目复盘,有这样几个步骤: 

  • 大家一起回顾项目启动前所有人对项目的理解; 
  • 对项目的整体发展过程做回顾; 
  • 对项目的关键事件做细节性的充分讨论和回顾; 
  • 对回顾的内容做分类,产出主题性的经验和行动方案。

总结

在不同的阶段,团队在个体需要、任务达成和团队协作方面会表现出不同的特点,项目管理者为了保证项目的成功,需要在了解各个阶段的基础之上,协调个体、团队和任务之间的关系让团队快速进入高效能的状态,发挥出一加一大于二的作用。

DevOps的生命周期

DevOps定义了运营与开发之间的敏捷关系。从产品的开始到最终阶段,开发团队和运营工程师共同实践这一过程。
devops life cycle
DevOps 生命周期包括以下七个阶段:

1) 持续开发

此阶段涉及软件的计划和编码。在规划阶段确定项目的远景。开发人员开始为应用开发代码。计划不需要任何 DevOps 工具,但是有几种工具可以维护代码。

2) 持续集成

此阶段是整个DevOps生命周期的核心。这是一种软件开发实践,开发人员需要更加频繁地对源代码进行更改。可能是每天或每周提交,然后会构建每个提交,如果存在问题则可以尽早发现问题。构建代码不仅涉及编译,而且还包括单元测试、集成测试、代码审查和打包。


支持新功能的代码与现有代码不断集成在一起。因此,软件在持续开发。更新后的代码需要与系统持续续流畅地集成,从而将变更反映给最终用户。


Jenkins 是这个阶段使用的流行工具。每当 Git 存储库中发生变更时,Jenkins都会获取更新的代码并准备该代码的构建,生成 war 或 jar 形式的可执行文件。然后将此构建转发到测试服务器或生产服务器。

3) 持续测试

在此阶段,开发好的软件被持续测试,以发现错误。持续测试中可以使用自动化测试工具,如 TestNG、JUnit、Selenium 等。这些工具使 QA 可以完全并行地测试多个代码库,以确保功能上没有缺陷。这个阶段可以使用 Docker 容器模拟测试环境。

Selenium 进行自动化测试,TestNG生成报告。Jenkins 这个持续集成工具的帮助下,整个测试阶段可以自动化。


自动化测试节省了执行测试所需的时间和精力,而不是手动执行。除此之外,报告生成是一大优势。评估测试套件中失败的测试用例这样的任务,变得更加简单。同样,我们可以安排在预定的时间执行测试用例。测试后的代码将与现存代码持续集成。

4) 持续监控

监控阶段涉及整个DevOps流程的所有操作因素,在此阶段将记录并仔细处理有关软件使用的重要信息,以发现趋势并确定问题域。通常,监视被集成在软件应用的操作能力之内。


监控数据可能是文档文件的形式,也可能在持续使用时生成关于应用参数的大规模数据。此阶段解决了系统错误,例如服务器无法访问、内存不足等。它维护服务的安全性和可用性。

5) 持续反馈

通过分析软件操作的结果,持续改进应用开发。由此,要设置一个当前运营的软件应用和下一版本开发之间的关键阶段,来接受持续反馈。


在 DevOps 中,连续性是至关重要的因素,因为它消除了开发软件所需要的不必要的步骤,使用它来发现问题然后生成一个更好的版本。这可能会降低应用程序的效率,并减少感兴趣的客户数量。

6) 持续部署

在此阶段,将代码部署到生产服务器。同样,必须确保在所有服务器上正确使用该代码。


新代码不断部署,配置管理工具在频繁且快速地执行任务中起着至关重要的作用。以下是此阶段使用的一些流行工具,例如 Chef、Puppet、Ansible 和 SaltStack。


容器化工具在部署阶段也起着至关重要的作用。Vagrant 和 Docker 是用于此目的的流行工具。这些工具有助于在开发、阶段、测试和生产环境中实现一致性。它们还有助于柔和地伸缩实例。


容器化工具有助于在测试、开发和部署应用程序的环境中保持一致性。生产环境中不会出现错误或故障的机会,因为它们打包并复制了测试、开发和阶段环境中使用的相同依赖项和程序包。它使应用易于在不同的计算机上运行。

7) 持续运营

所有 DevOps 运营都基于连续性以及发布过程的完全自动化,并使组织能够持续加快整体上市时间。
DevOps文章
联系我们
联系人: 阿道
电话: 17762006160
地址: 青岛市黄岛区井冈山路157号中南金石国际广场A座3202室