《猎豹行动:硝烟中的敏捷转型之旅》读书笔记DAY02:提速--工具落地,效率提升

举报
真爱无敌 发表于 2020/03/19 17:50:24 2020/03/19
【摘要】 这次主要讲解了以下内容:一、敏捷与DevOps工具集1.JIRA--项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域(很多开源项目就是用 JIRA 收集和管理缺陷与交流的)。2.Confluence--用于企业知识管理与协同,以及构建企业 wiki。(来自澳大利亚的 Atlassian 公司推出的 JIRA和 Confluence...

DAY02:《猎豹行动:硝烟中的敏捷转型之旅》 提速--工具落地,效率提升



image.png


这次主要讲解了以下内容:

一、敏捷与DevOps工具集

1.JIRA--项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域(很多开源项目就是用 JIRA 收集和管理缺陷与交流的)。


2.Confluence--用于企业知识管理与协同,以及构建企业 wiki。(来自澳大利亚的 Atlassian 公司推出的 JIRA和 Confluence 是敏捷开发的两大利器,它们彻底地贯彻了敏捷开发所倡导的去中心化、协作、集体讨论、信息共享、灵活、透明、可视化等原则。JIRA 与 Confluence 相互结合,更是相得益彰。)


3.GitHub--基于Git工具的在线代码托管平台,分布式的代码管理工具,突破了传统的集中式代码管理模式,程序员可以通过Git在本地管理自己的分支,在成熟的时机把分支推到GitHub中,管理员可以通过保护主干(master)分支,强制所有合并到主干的请求必须通过评审才能完成,从而强化代码评审的过程。


4.Nexus--使用Maven或Gradle进行项目代码管理已经是绝大多数Java项目的首选,而公司自建Nexus仓库缓存和管理代码库可大大提高下载和管理的效率。


5.Jenkins--持续集成工具,可灵活定义各种自动化的Job来完成特定的集成工序,包括定时触发或代码提交时触发。典型的应用是监测代码库(如GitHub)的提交行为,一旦提交完成,自动执行集成,包括从代码库获取所有代码,执行设定的Maven Goal(比如编译、运行测试、打包、发布到Nexus)并输出测试结果。所有Job的运行结果都会被记录。IT团队的每日站会应查看当天的集成结果,如果发生任何集成失败,应该立即分配人员处理,防微杜渐,维持100%通过的状态。一旦放任任何一次集成失败,很容易造成代码和测试腐化,积重难返,失去了持续集成的意义,前功尽弃。


6.SonarQube--通过Jenkins可以看到每日甚至每次代码提交的集成结果,SonarQube可以给出团队代码质量的趋势,其插件可涵盖静态代码分析、自动化测试覆盖率等指标,告知团队指标趋势向好还是向坏。对于有遗留代码的系统而言,作为团队的代码质量目标,趋势比静态指标更现实。在Jenkins的Job中可以嵌入SonarQube检查。


7.Ansible--自动化部署工具,通过编写Play Book来执行部署。



二、团队共创工作坊--找出DevOps改进点

“团队共创(Team Consensus Method)”是一种使群体能够迅速达成共识的促动技术;它遵循人类大脑的自然思维过程,通过挖掘及综合各种观点,形成创新、可行的决策和计划。团队共创法可以促进参与者实现求同存异、缩小差距、扩大共识和共创共赢等目的。

spacer.gifimage.png


三、DevOps时间--挖掘改进时间和资源

通过团队共创五个主题的模型过程,找出了相应的问题,并制定相应的行动方案:

1)业务请求跟踪性差--通过JIRA记录所有的请求和需求,并建立可视板使进度可视化。每日站会围绕着JIRA可视板进行,确认每天的优先级、进度和阻碍。通过Confluence建立项目文档和知识库,使所有知识和信息透明化,提升沟通和学习效率。

2)缺乏回归测试--开发团队研究如何从全手动测试转向自动化测试,然后通过Jenkins每天自动执行全部自动化测试并发布测试结果,结合SonarQube观测测试代码的覆盖率是否处于上升趋势。

3)手工部署--每次部署,不管是部署到测试服务器还是生产服务器,都是手动进行的,整个过程烦琐,容易出错且效率低下。由于公司大部分系统只能在周末进行维护和上线,一般由运维团队负责。手动方式意味着要在周末加班进行,这大大限制了上线的频率。最频繁的上线也只能做到每月一发,这也导致了开发团队为了应对业务部门的催促草率开发和上线,因为对业务而言赶不上本月这班车就是一个月的延迟。开发团队也希望能有更频繁、更灵活的上线周期,而这意味着运维团队需要频繁地在周末加班,该形式难以持续。通过Ansible编写部署脚本,从而实现部署自动化,开发团队可以在周五把部署计划定时设好,部署计划在周六自动执行,发生部署意外会自动通知运维团队,从而减少上线工时并降低上线风险。;


四、前置时间(Lead Time)和周期时间(Cycle Time)

有关这两个时间的概念,书中以一个实际的例子来进行说明,相信大家能够很好的理解:

我去咖啡店买咖啡,从到达咖啡店排队那一刻就开始计算前置时间,当我在店内下单后,店员接到我的单开始制作咖啡时,开始计算周期时间,直到咖啡交到我手上,这两个时间停止计算。可以想象,这两个时间有很大的差距。提升咖啡制作的效率,可以显著缩短周期时间,但前置时间还有很多与咖啡制作不直接相关的因素,包括下单前的排队时间、下单速度、下单方式、支付方式等。目前IT部门的改善集中在缩短周期时间上,而业务部门更关心的其实是前置时间,也就是从他们提出一个请求到这个请求上线实现业务价值的时间,要缩短这个时间,需要业务和IT部门配合做更多的事情。当然,不能因此否定IT部门在这个阶段的成果,毕竟改变自己比改变别人要容易得多,从改善自身效率起步是正确的选择。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。