DevOps理论

DevOps DevOps评论3,2061字数 4657阅读15分31秒阅读模式

DevOps方法论

目标: 我们只有掌握了DevOps方法论的相关知识,才能够通过技术工具等手段实现。DevOps方法论是我们在进行DevOps实践时必须掌握的原则类知识。

1.1 什么是DevOps?

devops是一种思维方式,同时也是一种工作方式。成功的DevOps文化是将人、过程和工具的相互融合。DevOps并不是简单的理解为自动化工具。

DevOps理论

1.2 DevOps的历史

DevOps理论

1.3 DevOps基本术语与概念

1.3.1 软件开发方法论

DevOps理论

1.3.2 运维方法论

DevOps理论

1.3.3 精益方法

DevOps理论

1.3.4 开发、发布和部署概念

DevOps理论

1.3.5 基础设施概念

DevOps理论

1.4 DevOps的常见误区与反模式

DevOps理论

1.5 有效实施DevOps的四大支柱

DevOps理论


1.6 实施DevOps: 克服大型组织中的挑战

DevOps转型可能需要组织文化和“完成方式”的重大转变。这在任何组织中都可能很难实现,但随着组织规模的扩大而变得越来越困难。

  • 人才短缺,培训员工困难。
  • 打破组织中的孤岛:(孤岛使团队交接流程复杂化)创建一个提供DevOps服务的平台团队。
  • 进行改变的犹豫: 正确实施DevOps文化,提供有关工具和概念的实施步骤培训。
  • 安全性DevOps工具链也需要保护。使用数十种工具,每种工具都有自己的特权和凭证,安全风险随之增加。使用秘密管理和解决方案在整个DevOps管道中提供集成的凭据管理,有助于减轻负担并加强安全状况。

1.7 DevOps实施过程中应避免的陷阱

  • 无序交付: 错误的代码配置可能会交付给生产环境,而没有对其影响进行充分的探索,从而使前方的自动化测试丧失价值。手动确认仍然至关重要。必须有一个预生产阶段(生产之前的部署和测试环境),该阶段允许开发人员纠正将代码直接推送到生产中时用户可能会遇到的错误。

DevOps理论

  • 对DevOps误解: 一些组织对DevOps的概念感到困惑。即使DevOps意味着跨开发人员和运维人员进行协作,他们认为DevOps工程师的目标是解决与DevOps相关的所有问题DevOps整合开发和运营角色的方式可能是艰难的职业发展。开发人员需要对他们的应用程序如何运行了解更多的,以使应用保持运行状态,并在出现故障时寻求支持。
  • 速度胜于质量许多公司专注于产品交付而没有对产品质量给予足够的重视。在快速发展的市场中,团队无法承受客户或内部需求所规定的时间要求来提供最佳产品质量。许多公司急于在较短的时间内完成并完成尽可能多的DevOps项目,以保持其在竞争激烈的市场中的地位。这听起来似乎是个好主意,但是期望DevOps快速发展可能会带来更多的痛苦而不是收获。
  • 组建一支专门的DevOps团队最好由QA,ops和dev的新团队成员和现有员工组成,他们很高兴加入DevOps计划。后者拥有大量的知识,这些知识在您实施如此庞大的计划时非常有价值。

1.8 如何实施有效的CI/CD流水线?

DevOps有效地结合了开发,运营和IT服务团队之间的鸿沟。为了培养DevOps文化,使用正确的DevOps流程实施正确的DevOps工具至关重要。持续集成/持续交付/持续部署(CI/CD/CD)帮助开发人员和测试人员在结构化环境中更快,更安全地发布软件

与传统软件生命周期不同,CI/CD实施过程每周或每天更新一次,而不是每月或每季度更新一次。有趣的是,客户甚至不会意识到更新是实时发生的。    

持续集成 CI是开发人员每天多次将新代码集成到制品库中的过程这是比传统方法更好的方法,在传统方法中,开发人员将隔离构建新代码,然后在项目生命周期结束时将其集成到主存储库中。主要目标是在初始阶段检测到任何集成错误,以便可以迅速对其进行纠正。每当新代码与现有主存储库合并时,它将触发新的构建。针对这些新版本执行测试运行以检查是否有破损。

持续交付 CD确保自动执行软件交付过程,并保障将集成代码交付到生产阶段,而不会造成任何错误或延迟。DevOps实施过程中的CD 可帮助开发人员一致地将新代码与主分支合并,以便他们可以构建即时软件就绪的产品。它负责检查代码的质量,并执行测试以检查它是否可以将功能构建释放到生产环境中。

持续部署自动化的最关键部分发生在交付管道的此阶段。只要代码中有重要更改,相应的构建和部署就会同时发生。它是通过连续部署过程实现的,该过程允许对通过CI阶段的每个代码修改执行实时部署更改。在此阶段,从初始代码开始直到代码进入生产阶段,都无需进行人工干预。

DevOps理论

1.8.1 实施CI/CD的好处

任何软件应用程序的最终目标是比以往更快地到达其潜在客户。这正是CI/CD管道向利用软件过程的任何业务模型提供的功能,该过程可降低每次构建中的风险并帮助最终产品更快地到达客户。

通过CI工具获得更快的反馈对于每个提交的代码,将同时运行相应的测试,以避免在以后的阶段出现任何链接断开的情况。更快的反馈有助于检查代码的质量和影响。

更高的可视性通过CI / CD管道设置,可以分析新版本的整个过程,测试结果以及新版本的任何问题。这种透明性使开发人员可以知道构建中的哪些更改影响了业务,并避免了将来发生此类变化。

尽早错误检测进行各种类型的自动化测试可以在早期发现任何错误问题,而不会产生任何最后的惊喜。这些自动化测试以及很少的手动测试运行,有助于解决可能出现的任何问题。

1.8.2 CI/CD管道实施的不同阶段

为了充分利用现代DevOps环境的优势,着手实施可扩展的CI/CD DevOps实现非常重要。它为您的业务构建敏捷的DevOps奠定了坚实的基础。

本地开发阶段:  本地验证。

提交阶段(commit):在这个阶段会将新特性或者新的代码集成,质量平台帮助获得代码质量检查反馈,CICD工具将帮助执行一系列的单元测试和其他有效的测试。例如:Jenkins提供了各种工具和界面,可帮助自动完成整个软件周期。

构建阶段(build):首先代码已经集成并测试通过,接下来此阶段完成构建打包。在这个阶段会将开发人员生成的制品上传到制品仓库。例如:docker工具用于创建服务器并将工件部署到制品库中,以便可以进行测试。   业务/项目a/服务/version/xxxx.jar

测试阶段(test):alpha 和 beta部署在此测试阶段进行,开发人员可以在Alpha部署中检查其新版本的性能以及这些版本之间的相互作用。在beta部署阶段,将进行手动测试,这将在移入生产之前再次检查应用程序是否正常运行。

生产发布(production deployment):这是应用程序上线的第四个也是最后一个阶段,一旦构建成功通过了所有测试方案,就可以将其部署到生产阶段以供最终用户使用。

1.9 DevSecOps在流水线中增加安全

1.9.1 DevOps和DevSecOps之间的区别

DevOps是指开发,测试和运营团队之间的协作环境,以实现持续交付,而DevSecOps涉及将安全组件集成到DevOps流程中DevSecOps专注于解决DevOps Automation安全问题,例如配置管理,组件分析等。

DevSecOps到底是什么?

DevOps通常被理解为流程和工具的组合,可促进软件工程和基础架构团队之间的持续协作。反过来,这些功能可自动在整个组织中快速可靠地交付应用程序和服务。DevOps包括多个重点领域,包括自动配置,持续集成,持续监视和测试驱动的开发。

作为DevOps思维方式的扩展,DevSecOps将安全控件和流程嵌入到DevOps工作流程中,并自动执行核心安全任务。这些安全性原则是在开发过程的早期引入的,并在整个开发生命周期中得到实施。

除了为DevOps团队提供安全知识和实践外,DevSecOps还将应用程序开发知识和流程整合到安全团队中,以实现团队之间的高效协作。在IT领域中,关于DevSecOps一词的用法没有一致意见,DevSecOps一词有时被称为DevOpsSecSecDevOpsRugged DevOps

1.9.2 DevSecOps方法的主要组成部分:

组织需要在其开发DevSecOps的方法中纳入文化和技术上的转变,以更有效地应对实时安全威胁。实际的DevSecOps方法需要考虑六个主要组成部分。这些包括:

  • 代码分析通过小块代码交付,可以快速识别漏洞。
  • 变更管理这样,用户不仅可以提交高速度和高效率的变更,还可以确定变更的影响是正面还是负面。
  • 监视合规性组织应遵守通用数据保护法规(GDPR)和支付卡行业数字安全标准(PCI DSS)之类的法规,并随时准备由监管机构进行审核。
  • 调查威胁每次代码更新都会伴随潜在的新兴威胁。尽早识别这些威胁并立即做出反应至关重要。
  • 漏洞评估涉及对新漏洞的分析以及对新漏洞的响应。
  • 培训组织需要让他们的软件IT工程师参与安全性相关的培训,并为他们配备确定例程的准则。

1.9.3 重要的DevSecOps工具

DevSecOps的采用涉及评估应用程序安全风险和代码测试,而专用工具是必不可少的。集成开发环境(IDE)中自动测试工具的使用使开发人员能够将安全性纳入DevOps工作流程中,而无需每次都启动新的环境来测试代码。

已经开发了多种工具来促进DevSecOps实施的各个方面。这些包括:

  • 可视化工具 Kibana和Grafana之类的工具可帮助识别,发展安全信息并与操作共享。
  • 自动化工具每当发现安全缺陷时,StackStorm之类的工具都可以帮助提供脚本化的补救措施。
  • 搜寻工具这些工具有助于检测安全异常。一些示例包括Mirador,OSSEC,MozDef和GRR等。
  • 测试工具测试是DevSecOps的关键要素,为此目的使用了广泛的工具,例如GauntIt,Spyk,Chef Inspec,Hakiri,Infer和Lynis。
  • 警报工具 Elastalert,Alerta和411等工具会在发现需要修复的安全缺陷时提供警报和通知。
  • 威胁情报工具这些工具可捕获和整理威胁情报,包括OpenTPX,关键堆栈和被动总计。
  • 攻击建模工具这些有助于实施攻击建模和安全防御。

1.9.4 如何实现DevSecOps?

DevSecOps通过在代码级别合并安全性,将它们组合为一个简化的流程,从而确保了流程链所有级别的应用程序和过程的安全。

成功实现DevSecOps的五个功能:

  • 每个阶段的强制性安全
  • 安全前进行彻底评估
  • 在代码级别进行与安全相关的更改
  • 自动化所有可能的过程
  • 通过警报和仪表板进行持续监控

1.10 ChatOps基本概念与实践方法

实施ChatOps是一种现代工作方式,它将人员,工具和讨论结合在一起,以提高生产力并帮助企业更快地发展。在ChatOps上运行的组织将自动监视和系统解析与人工监督和分析相结合,以最大程度地提高正常运行时间和效率。ChatOps奖励组织提高效率,自动化和创新的能力,更高的可靠性,更快的事件响应时间以及数千小时的生产率节省。

DevOps理论

DevOps理论

1.11 GitOps基本概念与实践方法

GitOps提供了一种自动化的管理基础架构的方法。它通过使用许多团队已经使用的DevOps最佳实践来做到这一点,例如版本控制,代码审查和CI/CD管道。

由于DevOps具有提高生产力和软件质量的巨大潜力,因此公司一直在采用它。在此过程中,我们找到了使软件开发生命周期自动化的方法。但是,当涉及到基础架构的设置和部署时,它仍然主要是手动过程。

借助GitOps,团队可以自动化基础架构的配置过程。这是由于可以使用声明文件将基础结构编写为代码(IaC)。我们可以将它们存储在Git存储库中,就像存储应用程序开发代码一样。

DevOps理论

继续阅读
DevOps
  • 本文由 发表于 2022年3月4日 17:08:22
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
评论  0  访客  0

发表评论