第 3 章 提速 —— 工具落地,效率提升
1、敏捷工具
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来执行部署。
2、有效降低项目的上线风险
事实上,不管你付出多少努力,零缺陷和零风险都是不可实现的,很多问题只有在生产环境才会出现。而IT部门需要提升的是出了问题的时候,更快地修复问题并把业务影响降到最低的能力。如果敏捷和DevOps做得好,做到真正的持续交付、频繁上线,那么每次上线所涉及的变更范围会缩到最小,这才是真正有效的降低风险的方法。
3、前置时间 & 周期时间
真正的持续交付需要从左端的业务需求到右端的上线全流程配合才能实现。
在交付过程中,有两个时间,一个是前置时间(Lead Time),一个是周期时间(Cycle Time)。
IT部门的改善集中在缩短周期时间上,而业务部门更关心的其实是前置时间,也就是从他们提出一个请求到这个请求上线实现业务价值的时间,要缩短这个时间,需要业务和IT部门配合做更多的事情。
4、”DevOps时间“
首先通过工作坊(Workshop)和团队一起找出痛点,列出所有改进点并进行优先级排序。
然后,每天划出一个固定时段,半小时至一小时,在这个时间段内,所有团队成员放下手头的交付工作,自行摘取改进点进行实施,通过“DevOps时间”落实改进。
只有我们自己才清楚要改进什么和如何改进,我们必须自力更生。
5、每月名人堂
激励同事参与其中,设立一个‘每月名人堂’,所有当月完成改进点的个人或小组都将在名人堂上分享他们的成果,进行评选,设立奖项,给予获奖的个人或小组一定的奖励。
6、工作坊
以“团队共创”的形式进行,分为主题介绍、头脑风暴、排列组合、提炼中心词和模型图5步,计划用时两小时。
工作坊 Workshop1)主题介绍
和团队讨论工作坊的主题,也就是未来半年敏捷和DevOps的改进目标,确立目标为“半年内实现不需要加班的每周上线”。
2)头脑风暴
向每个参与者发放记事贴,要求大家进行个人头脑风暴,罗列出目前阻碍团队实现这个目标的每一个障碍,每张贴纸写一个想法,字数限制在6~12个字,每人写4~6张。
然后参与者分成几个小组,让他们从各人的想法中提炼出5个想法,用彩笔横写在A5纸上。
3)排列组合
各小组完成后,大家集中在白板前,要求小组代表向所有人大声逐一宣读小组的5个想法,然后对每张A5纸进行归类,同类放在同一列,不同类新开一列,控制在4~7列内。
4)提炼中心词
当所有小组的想法都以A5纸分类贴在白板上后,大家要为每一列提炼中心词,不超过6个字,将其记录在每列上方,从最长的一列开始。然后为每一列的所有贴纸标上列的序号,比如第一列的所有贴纸都标上1。
5)模型图
有了中心词后,大家一同思考这些中心词的逻辑关系,并通过关系摆放形成图形,然后解读图形,制定行动方案。
本章知识点小结:
· 敏捷与DevOps工具集(JIRA、Confluence、Nexus、Jenkins、SonarQube、Ansible);
· 团队共创工作坊——找出DevOps改进点;
· DevOps时间——挖掘改进时间和资源;
· 前置时间(Lead Time)与周期时间(Cycle Time)。
网友评论