成功实施DevOps的最佳做法

最初发表在Knowledgehut!

什么是DevOps

DevOps只是流程和理念的结合,其中包含四个基本组件文化,协作,工具和实践。 作为回报,这提供了良好的自动化系统和基础架构,可帮助组织交付高质量和可靠的构建。 这种文化的优点在于,它使组织能够更好地为客户提供服务并更有效地参与市场竞争,同时还增加了一些承诺的好处,包括信心和信任,更快的软件发布,快速解决关键问题的能力以及更好的管理计划外的工作。

“ DevOps不是目标,而是永无止境的持续改进过程。”
杰斯·汉布尔

  • 周期时间:您需要以一种通用的方式定义软件周期,您需要了解其局限性,能力,如果有任何停机时间,则需要记录确切的时间。
  • 版本控制环境:在规划DevOps时,始终准备好替代解决方案,环境版本控制可帮助您推出/支持计划。 如果您有多个模块且紧密耦合,则需要一个干净整洁的计划来标识每个补丁和发行版。
  • 底层代码:当我们说底层代码时,它意味着可以满足这两种需求的解决方案-通过以代码形式捕获和管理基础架构,可以最大限度地缩短周期时间和版本控制环境。 您构建的内容应该可以长期扩展。

2.不要起步:无需一口气就完成整个周期,而总需要一个小的实体并运用您的理念并进行验证。 一旦感觉到您的POC合理,就立即开始扩大规模并创建一个完整的管道并定义一个过程,以便您随时可以返回并检查所有需要改进的地方。 所有这些小小的成功将帮助您在团队内部建立信心,并建立对利益相关者和客户的信任。

“ DevOps并不是魔术,而且转型永远不会在一夜之间发生”

3.持续集成和持续部署:如果您的团队不打算实施这种持续集成和持续交付,那么对于DevOps来说是不公平的。 甚至我会说DevOps的优点在于,您的团队可以无干扰地交付的频率以及在此过程中您有多少自动化。 让我们来看一个用例:您和您的团队成员正在敏捷团队中工作。 实际上,您也参与了多个紧密联系的团队和模块。 每天,您都要处理自己的故事,并在一天结束时,将您的“私有版本”推送到工作中,以验证它是否构建并将其“交付”到团队构建服务器,并且同样适用于其他个人。 这表示您都将您的工作“集成”在公共构建区域中并进行“集成构建”。 进行这些集成并构建以定期(最好是每天)验证它们的方法称为连续集成。

持续部署并不意味着所有变更都应尽快部署到生产中。 这意味着每个变更都可以随时部署。 它需要您所有经过验证的功能,并从CI进行构建并将其部署到生产环境中。 在这里,我们可以遵循一些实践。 a)维护模拟生产的过渡环境b)始终在过渡中进行部署,然后转移到生产中c)对功能和非功能性需求进行自动化测试d)自动获取版本控制的开发工件。

4.定义性能并进行基准测试:始终进行一些性能测试,并为您的团队共享的最新版本获取集体基准测试报告,因为这只会证明您的构建质量和所需的基础设施是合理的。

例如:我们几天前进行了一项性能测试,并取得了良好的效果,详细说明了这一点。 因此,我们对CFM机器进行了一些基准测试,因为我们的足迹遍布全球,与此同时,对我们而言,延迟很重要,并且我们需要最近的地区的CFM。 我们已经使用当前的版本验证了可以处理多少个请求,并且发现我们触发了超过200 RPS(每秒的请求)。 因此,我们计划检查构建功能并发出大量请求,并记下构建崩溃的数量并记录RPS,然后进行CFM自动缩放。 我们可能已经升级了CFM,但我们计划进行自动缩放,因为请求数量是一个假设,并且我们不想为此花很多钱,但与此同时,我们已经准备好消耗实验流量。 然后,我们发现2个CFM中有7个仅消耗精确的数量或少一些的配置和请求(181到191 RPS)。 因此,我们向业务团队共享了一份报告,重点关注由于我们支付相同金额而导致流量很少的其他区域。

结论:我们验证了我们的构建,该构建对我们的开发团队具有良好的信心,并与业务团队共享了该报告,从而帮助他们规划了营销策略,同时我们还完成了流程的自动扩展。

5.沟通和协作:协作和沟通是帮助组织发展和评估DevOps的X要素。 与业务和开发团队的协作可帮助DevOps团队了解设计和定义文化。 这有助于加快开发,运营乃至其他团队(如市场营销或销售)的速度,从而使组织的各个部门更紧密地与目标和项目保持一致。

6.开始记录:记录您在流程和基础结构中散布的所有内容(所有工作已完成),尤其是报告,RCA(根本原因分析),变更管理。 这可以帮助您返回并查看我们面临的所有问题是否可以在下一个周期中自动化,或者以其他方式自动解决,而不会中断您的生产环境。

7.密切关注成本的消耗:很多时间以来,如果我们不关注云的账单,它将持续增长,并且往往与您的业务增长成正比,直到您不这样做为止。寻找优化。 始终在2个月内进行审核,并评估您的云计算以进行优化。 对基础设施进行一些实验,因为如果您完全依赖于基础设施,那么您不应该在云基础设施上花费不超过5%到10%的成本。 您可以尝试使用的工具:重新优化,Cloudyn,Orbitera等。

“如果您是DevOps,则应该考虑否。”

8.保护您的基础设施:如果您的团队从第一天起就遵循某些法规,那么您泄露数据的机会就很少了,这可以通过提供一个可以验证漏洞的设置来轻松实现。 在将构建移交给生产团队之前,您可能需要在开发的早期阶段通过使用诸如SonarQube,VeraCode,Codacy,CodeClimate等已配置的工具来遵循标准。

9.工具选择:始终选择与您计划使用的其余工具链兼容的工具。 之所以必须如此小心,是因为您必须捕获每个请求捕获。 完成工具选择后,草拟您愿意捕获或将帮助您进行调试的工具指标。 开始记录和监视它们,并对这些日志有一些明确的定义,以便您可以证明并确定您的进程正在按预期工作。 您可以查看的工具:Nagios,Grafana,Pingdom,Monit,OpsGenie,Observium,Logstash等

DevOps流程的工具链:

“如果您不监视,那么您就不在生产中”

结论:

遵循以上所有最佳实践的组织可以创建正确的文化,从而最终获得应有的成就,即DevOps组织。 Progress Software产品开发副总裁Rob Steward表示:“一个好的DevOps组织将使开发人员腾出精力专注于做他们最擅长的事情:编写软件。” “一旦编写,DevOps应该消除部署,保护和运行该软件所涉及的工作和烦恼。”