彻底搞懂DevOps是什么,CI/CD是什么,跟敏捷开发有什么关系
从之前到现在,从敏捷开发到CI/CD,再到最近的 DevOps等各种名词层出不穷,一直是大概知道是什么意思没有细究,其实本质上就是各种理念各种想法的进步。今天彻底搞懂他们是什么以及各自之间的关系。
DevOps
DevOps 是一种理念,其的宗旨就是消除两个传统上孤立的团队(开发团队和运维团队)之间的壁垒( 这个在小公司是不存在的,小公司基本上是谁开发谁部署谁运维,就是自己吃自己的bug),但在大公司,开发只管开发,开发完了,需要申请上线,接下来就是运维团队操作了。整个流程下来,沟通效率比较低,有问题整个修复流程也比较长,相关比较麻烦。对于需要频繁更新的场景,比如敏捷开发,很难。
所以有了 DevOps 的理念,这两个团队可以携手合作,共同提高开发人员的生产力,同时增强运维的可靠性,旨在加强开发和运维之间的协作和沟通,以实现更快的部署、更高的质量和更好的可靠性。
DevOps 的优势
速度
可以更快的适应市场,更快速地发布更新
快速交付
快速发布新功能和修复错误,快速地响应客户需求并建立竞争优势
可靠性
确保应用程序更新和基础设施变更的稳定,以便能够在保持用户优质体验的同时,更加快速可靠地进行交付。监控和日志能够帮助您实时了解当前的性能。
规模
大规模运行和管理您的基础设施及开发流程。自动化和一致性可在降低风险的同时,帮助您有效管理复杂或不断变化的系统
增强合作
建立一个适应 DevOps 文化模式的更高效的团队,强调主人翁精神和责任感。开发人员和运维团队密切合作,共同承担诸多责任,并将各自的工作流程相互融合。这有助于减少效率低下的工作,同时节约大家的时间(例如,缩短开发人员和运维团队之间的交接时间,编写将运行环境考虑在内的代码)。
DevOps 的发展历程
-
初期阶段(2008-2010年):DevOps 的概念最初由 Patrick Debois 提出,旨在解决开发和运维之间的沟通和协作问题。这个阶段主要是探索和实践阶段,DevOps 的概念和实践还不够成熟。
-
工具化阶段(2010-2014年):在这个阶段,DevOps 开始变得更加工具化,出现了一些重要的工具和平台,如Puppet、Chef、Jenkins、Docker等。这些工具和平台的出现,使得DevOps的实践变得更加容易和高效。
-
自动化阶段(2014-2017年):在这个阶段,DevOps 的实践开始更加注重自动化,包括自动化测试、自动化部署、自动化监控等。这个阶段的主要目标是提高软件交付的速度和质量。
-
业务驱动阶段(2017年至今):在这个阶段,DevOps 的实践开始更加注重业务价值,即如何将DevOps实践与业务目标紧密结合起来,以实现更高的业务价值。这个阶段的主要目标是实现持续交付和持续部署,以更快地响应市场需求和客户反馈。
DevOps 工具的类别
项目管理工具
- 使团队能够构建用户故事(需求)积压的工具,这些故事构成编码项目,将其分解为较小的任务并跟踪任务直至完成。许多工具支持敏捷项目管理实践,例如 Scrum、Lean 和 Kanban,开发人员将这些实践带入 DevOps。流行的开源选项包括 GitHub Issues 和 Jira。
协作源代码存储库
- 版本控制的编码环境,允许多个开发人员在同一个代码库上工作。代码存储库应与 CI/CD、测试和安全工具集成,以便当代码提交到存储库时,它可以自动进入下一步。开源代码存储库包括 GiHub 和 GitLab。
CI/CD
- 自动化代码签出、构建、测试和部署的工具。Jenkins 是此类别中最受欢迎的开源工具;许多以前的开源替代品(例如 CircleCI)现在仅提供商业版本。在持续部署 (CD) 工具方面,Spinnaker 以代码层的形式跨越应用程序和基础设施。ArgoCD 是 Kubernetes 原生 CI/CD 的另一个流行开源选择。
测试自动化框架
- 这些包括用于自动化单元、合同、功能、性能、可用??性、渗透和安全测试的软件工具、库和最佳实践。这些工具中最好的支持多种语言;有些使用人工智能 (AI) 自动重新配置测试以响应代码更改。测试工具和框架的范围非常广泛!流行的开源测试自动化框架包括 Selenium、Appium、Katalon、Robot Framework 和 Serenity(以前称为 Thucydides)。
配置管理(基础设施即代码)工具
- 这些工具使 DevOps 工程师能够通过执行脚本来配置和提供完全版本化和完全记录的基础设施。开源选项包括 Ansible(Red Hat)、Chef、Puppet 和Terraform。Kubernetes 对容器化应用程序执行相同的功能(请参阅下面的“DevOps 和云原生开发”)。
监控工具
- 这些工具可帮助 DevOps 团队识别和解决系统问题;它们还实时收集和分析数据,以揭示代码更改如何影响应用程序性能。开源监控工具包括 Datadog、Nagios、Prometheus 和 Splunk。
持续反馈工具
- 通过热图(记录用户在屏幕上的操作)、调查或自助问题票务收集用户反馈的工具。
DevOps 实践经验
敏捷项目管理
敏捷是一种项目管理和软件开发的迭代方法,可帮助团队更快、更少地为客户提供价值。敏捷团队专注于以较小的增量交付工作,而不是等待单个大规模发布日期。不断评估需求、计划和结果,使团队能够响应反馈并根据需要进行调整。
持续集成
持续集成是一种软件开发实践经验,采用持续集成时,开发人员会定期将他们的代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。持续集成的主要目标是更快发现并解决错误,提高软件质量,并缩短验证和发布新软件更新所需的时间
持续交付
持续交付是一种软件开发实践。通过持续交付,系统可以自动构建和测试代码更改,并为将其发布到生产环境做好准备。持续交付可以在构建阶段后将所有代码变更都部署到测试环境和/或生产环境中,从而实现对持续集成的扩展。
实施自动化
持续集成和交付允许开发人员定期将代码合并到主存储库中。CI/CD 无需手动检查代码,而是自动执行此过程,从指定窗口中的批处理到频繁提交。除了 CI/CD 之外,自动化测试对于成功的 DevOps 实践也至关重要。自动化测试可能包括端到端测试、单元测试、集成测试和性能测试
监控 DevOps 和应用程序
监控DevOps 非常重要,这样构建失败就会马上被发现并修复,自动化极大地提高了开发速度,同样,监控生产应用程序以识别故障或性能缺陷也很重要。
?
可观测性
随着行业从单一的本地系统和应用程序转向云原生、基于微服务的应用程序,监控现在变得更加复杂。因此,人们对可观测性越来越感兴趣。人们常说可观察性的三大支柱是日志、跟踪和指标。日志由大多数系统组件和应用程序生成,。跟踪跟踪应用程序内的逻辑流。指标包括 CPU/RAM 预留或使用情况、磁盘空间、网络连接等。可观察性仅仅意味着综合使用所有这三个信息源来发现和预测复杂系统的功能,否则这是很难实现
收集持续反馈
持续的反馈可确保团队成员及时获得完成工作所需的所有信息。从开发的角度来看,这需要团队立即收到任何管道故障的警报。这也意味着开发人员可以尽快获得清晰、全面的代码测试结果。从产品管理的角度来看,团队会了解任何生产故障或性能缺陷或报告的错误。过去,人们普遍认为开发团队只能针对速度或质量进行优化。持续反馈是 DevOps 的要素之一,它使两者成为可能。
改变文化
DevOps 需要协作、透明度、信任和同理心。如果您的组织是少数已经具备这些品质的组织之一,那么您的团队应该很容易采用 DevOps 实践。如果没有,就需要付出一些努力来发展这些。为了让 DevOps 取得成功,必须通过采用“谁构建,谁运行”的实践来消除这些障碍
CI
持续集成是一种软件开发实践经验,采用持续集成时,开发人员会定期将他们的代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。持续集成的主要目标是更快发现并解决错误,提高软件质量,并缩短验证和发布新软件更新所需的时间。
CD
持续交付 是持续集成的扩展,因为它在构建阶段后自动将所有代码更改部署到测试和/或生产环境。 这意味着除了自动化测试之外,您还拥有自动化的发布流程,并且可以随时通过单击按钮来部署应用程序。
理论上,通过持续交付,您可以决定每天、每周、每两周或任何适合您业务需求的方式发布。但是,如果您确实想获得持续交付的好处,则应该尽早部署到生产中,以确保发布小批量,以便在出现问题时易于排除故障。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!