DevOps是将人员和部门聚集在一起,专注于创建一个统一的系统,将开发和运营的任务和目标结合起来。随着越来越多公司采用DevOps流程,实践过程中遇到的各种问题也逐渐浮出水面。因此,任何一家要实践DevOps的公司,都应该关注这六个领域,以此来减少各种不利因素对软件开发和部署周期的影响。
1.没有正确的文化理念
DevOps文化是关于开发人员和运营人员之间的共同理解,以及对他们构建的软件的共同责任。因此,DevOps要发挥作用,拥有正确的文化是关键。这意味着,可以提高开发、IT/运营和“业务”之间的透明度、沟通和协作效率。
DevOpsInstitute公司的CEOJayneGroll曾表示,虽然部署和优化基础设施会减慢开发和运营速度,但团队如果没有正确的文化理念,可能会导致项目崩溃。
持续交付服务提供商CloudBees的DevOps传播者BrianDawson也认为,一家拥有正确文化的公司,可以克服任何基础设施和技能问题。
2.重技术忽视软技能
成功的DevOps工程师不仅是出色的问题解决者,还是出色的沟通者。随着DevOps逐渐由人工智能统治,软技能将变得更加关键。因此,很多公司在招聘DevOps人才时,会优先考虑软技能——例如协作能力、解决问题能力和人际交往能力。
对公司而言,员工是否拥有协作、学习和解决任何问题的意愿是很重要的,但是除此之外,同时还应该具备自动化技能,比如基础设施知识、对流程的软件开发、源代码控制和分析。当然,要找到完全符合要求的人才并不容易。因此,如果要在一个拥有强大的文化和人际关系能力的人,和一个拥有某项专业技术的人之间做出选择,选择前者带来的效益往往会更高。
3.自动化工具过多成为累赘
DevOps的关键是自动化。由于DevOps跨越Dev、Ops、IT、安全和产品团队,以及软件开发的不同阶段,因此有大量工具可供选择。比如,版本控制&协作开发工具GitHub、GitLab、BitBucket,自动化构建和测试工具ApacheAnt、Maven、Selenium,持续集成&交付工具Jenkins、Capistrano、BuildBot,以及部署工具、维护工具、监控,警告&分析工具等等,琳琅满目不下百种。
但这对于亟须进行数字化转型的传统企业来说,并非是件好事。过多工具本身导致了新的管理问题,如确认工具版本是否符合项目要求,甚至出现了管理这些工具的工具。因此,在寻求自动化,选择自动化工具或平台时,更应该从多个方面衡量该平台是否适合,是否能真正地实现降本增效。
4.变更决策进展缓慢
DevOpsInstitute的Groll表示,软件变更的流程和基础设施也已成为影响公司效率的主要因素。“我们谈论的是持续部署和持续交付,但大多数组织都希望提前两周发布变更公告。因此,我们所说的、我们想要的与现实之间存在脱节。”
通常,公司将更新分为三类:标准变更、正常变更和紧急修复。正常变更是进行软件更新的典型过程,而标准变更是无需预先批准或至少可以加急进行的更改。然而,Atlassian的Buchanan表示,借助DevOps中的自动化,应该能够更快地进行更多变更。
“标准是新常态。随着所有这些自动化的进行,可以进行标准变更——预先批准、易于理解、低风险、明确规定——因为我们知道这些流程是如何工作的。”
——IanBuchanan
5.方向错误
对于大多数践行DevOps的公司来说,从低水平的自动化,扩展到难度更高的基础设施项目时,往往会迷失方向。比如,有的公司会创建一个专门的功能团队来支持DevOps的实施,然而这会带来更多的潜在风险。事实上,公司要做的不是扩张职能团队,而是应该选择允许他们快速扩展业务的基础设施。
大型国有企业中国石油,为了开发一个大型电商平台,聘请了外部团队进行开发,同时选择了一个开源电商软件进行二次开发。但商城上线之后,问题频出。之后,中国石油选择使用SoFlu软件机器人对商城进行系统重构,SoFlu是一款通过人机协同,自动完成软件后端开发、前端开发、测试、运维,帮助开发者实现“一人一项目,十人抵百人”的软件机器人。在5个SoFlu软件机器人的协助下,中石油信息化团队仅投入9位研发人员在45天内就完成了商城的系统重构。而且,测试过程表明,平台的稳定性过关,且该电商平台可以根据企业的需求,独立部署到任何平台。所有数据企业均可自行存储,同时平台本身的安全规范,保证了数据的安全性。
可以看到,选择一个优质的基础设施平台来提高自动化水平,要比开设专门的职能部门更加有效。
6、技术债务正在累积
技术债务是一个不得不重视的话题。根据DevOps工具和服务提供商Atlassian发布的一项研究显示,近四分之三的开发团队花费大量时间更新和升级软件,有的甚至要浪费每周工作时间的50%。
同时,技术债务还给公司带来了很多不利因素。OutSystems的一份报告表明,“大多数(69%)的IT领导者表示,技术债务对他们的创新能力构成了根本性的限制,61%的人表示这拖累了公司的业绩,64%的人同意它将继续对未来造成影响。”
如果企业拥有适当的DevOps流程和自动化能力,至少会在一定程度上减少技术债务的堆积。CI/CD流程中体现的自动化,例如自动化测试和自动化构建,有助于及早识别技术债务,进而有助于持续偿还债务。同时,自动化执行的质量标准也有助于减少技术债务。