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