在各种规模的公司当中,由于技术团队定义成功的方式发生了变化,软件正越来越多地提供业务价值。构建的应用程序为客户带来价值。凭空说和稳定已不再是IT的关键价值。现在,通过与业务合作来提高开发人员的速度。为了更快的跟上步伐,领先的技术专业人员正在构建具有精确性并接受持续集成,持续交付和DevOps标准的软件。
在DevOps文化 当中,一个重要的价值 就是接受失败,这是实现价值之旅的一部分。对于软件,以持续交付的形式出现 ,使我们定期发布代码。快速的步伐使出现失败的可能变大,但同时也确保了当失败时,可以从错误中学到并迅速适应的能力。这就是业务发展的方式:会获得更多见识,并由它们引导走向成功。
由于那些已经在实施或采用DevOps的人犯了错误,因此可以利用他们的经验来学习并避免重复同样的错误。本着DevOps和开放源代码的精神,以下是企业在DevOps实施中如何解决它们遇到的一些最常见的错误。
1.OUT-OF-ORDER DELIVERY 无序的交付
有时,开发人员会同时执行持续集成(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,ops和dev的新团队成员和现有员工组成,他们很高兴加入DevOps计划。后者拥有大量的知识,这些知识在您实施如此庞大的计划时非常有价值。
6.自动化数据库
数据库是构建DevOps时被忽略的最重要的技术领域之一。新的临时应用程序可以以前所未有的速度通过了DevOps管道。但是,对数据量大的应用程序的部署却不那么容易。
无需集中精力有效地使它们自动化,单独环境中的数据快照可能会并且会逐渐趋向于不准确。专家们强调不断的集成和代码处理,但未能自动化数据库。数据库管理应正确完成,尤其是对于以数据为中心的应用程序。数据库在此类应用程序中起着重要作用,可能需要单独的专业知识才能与其他应用程序一起自动化。
7.事件处理程序不足
万一出了问题(肯定会),DevOps团队应该制定事件处理程序。事件处理应该是一个连续的,活跃的过程,清楚地概述了这一过程,以确保一致性并避免错误。这意味着为了记录事件处理过程,您必须捕获并描述事件响应要求。对运行手册文档有很多研究 ,这对于学习成功至关重要。
8.对DEVOPS的了解不足
尽管近年来DevOps的接受度迅速增长,但是应用专家可能在没有精确的质量控制程序的情况下工作。团队有时无法在DevOps中取得成功所需的所有技术,文化和流程更改。
采用DevOps做法是明智之举,但是成功需要足够的经验和准备。在某些情况下,获得合适的专业知识以满足您的需求意味着您需要聘请外部专家。这些训练有素的专家应拥有所需技术的认证,并且公司应避免做出快速的DevOps决策,而不能很好地处理结果。
9.忽视安全
安全性和DevOps应该并排移动。许多组织都拒绝安全准则,因为这很困难,并且DevOps之旅可能很艰难。这导致了一些问题,例如,最初使开发人员的输出最大化,后来意识到他们忽略了保护这些应用程序的安全。认真对待安全性,并研究 DevSecOps以了解对您的组织是否有意义。
10.实施DEVOPS时会感到疲劳
如果您成立了一个DevOps团队,目标是从每月一次产品部署到每周进行10次推送,那么它很可能会失败。获得在演示过程中看起来不错的任意指标的途径不会激励团队。DevOps不是简单的技术运动;这是一次巨大的文化升级。
企业规模越大,坚持DevOps实践可能花费的时间就越长。您应该以阶段性和可衡量的方式应用DevOps方法,并将实际结果作为值得庆祝的里程碑。在开始第一轮应用程序部署之前,培训您的员工并安排充足的休息时间。第一个DevOps管道的实现速度可能很慢。这就是现实生活中不断改进的样子。
公司正在迅速向DevOps迈进,以跟上竞争步伐,但在实现过程中会犯常见错误。为避免这些陷阱,请精确规划并应用正确的策略,以取得更成功的DevOps结果。
关于作者
泽阳,DevOps领域实践者。专注于企业级DevOps运维开发技术实践分享,主要以新Linux运维技术、DevOps技术课程为主。丰富的一线实战经验,课程追求实用性获得多数学员认可。课程内容均来源于企业应用,在这里既学习技术又能获取热门技能,欢迎您的到来!