实施DevOps中要避免的10个陷阱现在,通过与业务合作来提高开发人员的速度。为了更快地跟上步伐,领先的技术专业人员正在构建精确的软件,并采用持续集成、持续交付和DevOps标准。DevOps文化中的一个重要价值观是接受失败作为价值之旅的一部分。对于软件,这以持续交付的形式出现,我们定期发布代码。快节奏增加了失败的可能性,但也确保了从错误中学习并在失败时迅速适应的能力。这就是业务发展的方式:获得更多的洞察力并导致成功。由于那些已经在实施或采用DevOps的人会犯错误,因此可以利用他们的经验来学习并避免重蹈覆辙。本着DevOps和开源精神,以下是企业如何解决他们在DevOps实施中遇到的一些最常见错误的方法。1.无序交付无序交付有时,开发人员会同时进行持续集成(CI)和持续交付(CD),以加快自动化测试和反馈的周期。CI/CD作为一种实践在软件交付速度方面有很多好处。这样做也是有风险的,不正确的代码配置可能会在没有充分探索其影响的情况下交付到生产中,从而使前面的自动化测试变得毫无价值。在我看来,在代码通过软件交付周期之前,手动验证仍然很重要。必须有一个预生产阶段(生产前的部署和测试环境),允许开发人员纠正用户在将代码直接推送到生产时可能遇到的错误。在代码到达最终用户之前对其进行监控非常重要。例如,具有与开发环境同时运行的测试环境的CD管道将确保不会自动部署更改。虽然DevOps标准规定团队必须超越孤岛,但部署应始终由熟悉从开始到编码的管道的人员进行验证。这需要在代码到达客户之前对其进行彻底审查。2.对DEVOPS名称的误解一些组织对DevOps的概念感到困惑。尽管DevOps意味着开发人员和运维人员之间的协作,但他们认为DevOps工程师的目标是解决与DevOps相关的所有问题。DevOps集成开发和运营角色的方式可能是一个艰难的职业转变。开发人员需要更多地了解他们的应用程序如何工作以保持运行并在出现问题时寻求支持。实际上,DevOps帮助公司加快IT运营中耗时的任务。例如,自动化测试可以更快地向开发人员提供反馈,而自动化集成可以更快地将开发人员的更改合并到代码库中。DevOps也可能被要求自动化收集、扩展和运行应用程序的过程。您组织的基本需求决定了您的DevOps专业人员的技能水平是否需要在运营或开发方面更强,并且此信息必须与您选择或雇用DevOps团队的方式保持一致。例如,当自动化是关键(而不是需要容器化方面的专业知识)时,重要的是优先考虑过去的软件开发和脚本技能。根据您独特的DevOps体验需求进行招聘,并让人们在工作中学习其他技能。如果你雇用愿意学习的人,你将为你的组织建立最好的团队。3.DEVOPS计划缺乏灵活性尽管DevOps原则提供了基础,但每个组织都必须为预期结果做好准备。公司需要确保DevOps在实施时保持稳定,但他们会进行内部修改,这对于衡量其预期结果至关重要。掌握DevOps的基础知识,尤其是CALMS**(文化、自动化、精益、衡量和共享)**支柱,对于为技术进步奠定基础非常重要。但是,没有一种通用的DevOps实施方案。通过认识到这一点,DevOps团队可以制定计划来解决该计划的关键原因,以过去的失败为基础。团队应准备好修改计划,同时遵守基本DevOps原则的建议。4.选择速度而不是质量许多公司只关注产品交付,而没有足够重视产品质量。如果工作的关键绩效指标(KPI)仅以生产时间为中心,则质量很容易从流程中溜走。可以监控性能的端点留给了未来的版本,非生产就绪软件被认为是成功的,因为它没有足够快地转移到生产中。在瞬息万变的市场中,团队无法在客户或内部需求要求的时间内交付最佳的产品质量。许多公司都在争先恐后地在短时间内完成尽可能多的DevOps项目,以在竞争激烈的市场中保持自己的地位。这听起来像是个好主意,但期望DevOps快速发展可能会带来更多的痛苦而不是收获。实现速度和质量的提升是DevOps的基本价值。这并不容易,需要运营商和开发人员以新的和改进的方式编写测试。如果做得好,质量和速度都会提高。5.建立专门的DEVOPS团队从理论上讲,拥有专门的团队专注于培训最新的IT专业人员是有意义的。完成DevOps实施的过程必须是轻松的,对吧?但很快出现了两个问题:现有的质量保证(QA)、运营和开发团队成员被忽视,这可能会阻碍新团队的工作。这个新团队成为另一个孤岛,提供新技术但没有推进公司在DevOps实施中的目标。理想情况下由新团队成员和QA、运营和开发部门的现有员工组成,他们很高兴加入DevOps计划。后者拥有丰富的知识,当您实施如此大的程序时,这些知识是无价的。6.数据库自动化数据库是构建DevOps时被忽视的最重要的技术领域之一。新的、短暂的应用程序可以以前所未有的速度在DevOps管道中移动。然而,数据密集型应用程序的部署并不那么容易。如果不专注于有效地自动化它们,不同环境中的数据快照可能并且会随着时间的推移变得不准确。专家强调持续集成和代码处理,但未能实现数据库自动化。数据库管理应该正确完成,尤其是对于以数据为中心的应用程序。数据库在此类应用程序中发挥着重要作用,可能需要单独的专业知识才能与其他应用程序自动化。7.事件处理程序不足万一出现问题(而且肯定会出现问题),DevOps团队应该有适当的事件处理程序。事件处理应该是一个连续的、主动的过程,明确概述以确保一致性并避免错误。这意味着为了记录事件处理程序,您必须捕获并描述事件响应要求。有很多关于Runbook文档的研究,这对学习成功至关重要。8.对DEVOPS的理解不足尽管近年来DevOps的接受度增长迅速,但应用专家可能在没有精确的质量控制程序的情况下工作。团队有时无法做出在DevOps中取得成功所需的所有技术、文化和流程变革。采用DevOps实践是明智之举,但成功需要经验和准备。在某些情况下,获得合适的专业知识来满足您的需求意味着您需要聘请外部专家。这些训练有素的专家应该拥有所需技术的认证,公司应该避免做出不能很好地处理结果的快速DevOps决策。9.忽视安全安全和DevOps应该并行。许多组织拒绝安全指南,因为它很困难,而且DevOps旅程可能很艰难。这导致了一些问题,例如最初最大化开发人员的输出只是后来才意识到他们忽略了保护这些应用程序。认真对待安全性,并研究DevSecOps看看它是否对您的组织有意义。10.实施DEVOPS时的疲劳如果你建立一个DevOps团队的目标是从每月部署一个产品到每周推送10次,那么它很可能会失败。访问在演示期间看起来不错的任意指标并不能激励团队。DevOps不是简单的技术运动;这是一次巨大的文化升级。企业越大,坚持DevOps实践所需的时间就越长。您应该以分阶段和可衡量的方式应用DevOps方法,并将实际结果作为值得庆祝的里程碑。在开始第一轮应用程序部署之前,培训您的员工并安排足够的休息时间。第一个DevOps管道实施起来可能很慢。这就是现实生活中持续改进的样子。公司正在迅速转向DevOps以跟上竞争的步伐,但在此过程中也会犯一些常见的错误。为避免这些陷阱,请精确规划并应用正确的策略以获得更成功的DevOps结果。
