「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。
前言
Hello 大家好,我是l拉不拉米,今天的『超级架构师』系列给大家分享DevOps相关的知识,是一份适合初学者的工程指南。
DevOps的发展与敏捷开发息息相关,更与微服务体系密不可分。因此开发者应当具备DevOps相关的能力,应当紧跟技术发展改革的潮流。
什么是DevOps?
DevOps 是开发和运营的混合体,它将来自分布式堆栈的人员、用于创建高效应用程序的工具与开发过程相结合,以加快交付高质量产品的速度。
通过将人员、工具和流程整合在一起,DevOps 可以通过向产品添加一系列增量功能来实现快速开发和交付。
DevOps是怎样工作的?
DevOps 模型将开发团队和运营团队结合起来,共同努力弥合“孤立”流程之间的差距。有时,跨这些流程的人员在一个联合团队中工作,以更快地开发和交付以实现业务目标。
简单地说,一个由开发人员组成的团队,他们拥有从编码、部署(使用各种工具和应用程序)到维护应用程序在整个开发生命周期中协同工作的技能,以更快地部署产品。
应用程序中添加了增量功能,以使其与客户满意度的最新趋势保持同步。
DevOps 使用各种 DevOps 工具将应用程序创建的主要部分(即开发、质量、部署、安全性)组合到一个流程中,以加快应用程序的交付速度。
DevOps模型
软件条款已经从支持企业的在线存在转变为成为企业的一个关键方面。在这样的市场中,应用程序需要跟上最新的需求并动态地适应趋势以促进业务并实现客户满意度。
DevOps 模型提供了这种灵活性,可以更快地部署业务就绪的应用程序,并根据客户需求添加或更新应用程序。通过缩小应用程序开发过程各个部分之间的差距,DevOps 可以快速部署高性能、快速增强和安全的应用程序。
使用正确的工具和正确的思维方式调整 DevOps 对于成功实施和利用 DevOps 模型非常重要。
工程团队中使用DevOps的好处
速度
由于在同一流程中的多种技能协同工作,产品交付速度更快。更容易添加更新和功能以跟上市场标准并保持质量和客户满意度。
快速交付
由于交付速度的提高,新功能的发布速度可能会更快。因此,现在可以根据市场需求和客户反馈修复错误、添加/更新功能以及添加到产品中,从而使应用程序能够在竞争激烈的市场中有效交付。
可靠性
由于交付速度更快,持续集成(Continuous integration,简称CI)和持续交付(Continuous Delivery,简称CD)等 DevOps 实践允许软件可靠性,即确保质量的新功能快速添加到应用程序中,同时用户继续获得流畅和优质的体验。
规模
由于快速交付和可靠性,添加到您的应用程序以使其根据业务需求进行扩展,而不会影响用户体验。
改善协作
由于开发人员和运营团队分担责任以实现更快的交付,这改善了协作。团队可以根据共同的责任添加和即兴创作。这也减少了切换和依赖之间的等待时间。
安全性
DevOps 提供了一系列安全性和合规性测试/管理工具,以便您可以在不牺牲安全性的情况下改进应用程序。
DevOps实践
DevOps 是一种不断发展的模型,它基于一组策略来适应组织的需求。敏捷思维支持 DevOps 和迭代开发模型。一些 DevOps 模型是敏捷、Scrum、看板等。
持续集成
不断对代码库进行更改,并根据新需求、客户反馈等添加新代码。自动运行构建和测试以确保更改符合要求的标准并遵守以前的功能。持续集成确保所有开发人员都可以访问代码库,并且定期推出新更改,以便在需要时轻松重构。
持续交付
随着代码库的更新,将执行构建和检查以检查其是否正常工作。然后将代码移至预生产环境并进行测试,直到准备好投入生产。因此,生产就绪的代码始终存在于团队中,并经常添加新的更新。
微服务
微服务架构将单个应用程序分解为通过安全网络相互交互的小服务。每个服务独立运行其进程,同时与其他微服务通信以完成更大的任务。由于每个微服务都可以独立部署,因此可以更快地推出更新,并且可以更轻松地查明和修复错误。
基础设施即代码
基础设施即代码(Infrastructure as Code)允许用户以脚本或代码的形式管理和实施基础设施,可以像任何代码更改一样进行管理。版本控制、频繁更新和恢复是 IaC 实践的一些特征。
监控和记录
由于应用程序在全球范围内 24/7 全天候使用,因此主动监控应用程序的用户活动、功能差异和意外错误等变得更加重要。通过日志记录和监控,团队可以为特定错误设置警报,管理基础设施和软件工作,并更快地查明错误和错误。
沟通与协作
DevOps 文化通过将来自不同开发和运营工作流程的人员聚集在一起来鼓励沟通和协作。在团队之间沟通需求和挑战并有效协作以解决和部署它们是 DevOps 团队模型的一部分。团队之间沟通所需的适当工具将用于实现这一目标。
DevOps工具链
工具链是编程世界中用于实现业务目标的一组工具。 DevOps 也使用此类编程工具来实现开发人员和运维工程师之间的协作和协调。使用它们,团队可以更快地编程、测试和部署应用程序。这些工具具有多种用途,从通信、版本控制到用于质量检查和部署的自动化管道。
计划
计划是任何项目的第一步。确定业务计划和需求,然后将它们分解以供开发团队采用是规划过程的一部分。
一些用于规划的工具包括 - Git、Jira 等。
代码
在计划之后,这是执行阶段的一部分,在此阶段,基于设计实现软件的实际开发。
用于编码的工具包括 - GitHub、GitLab、Atlassian、Bitbucket 等。
构建
与之前开发人员必须手动运行构建、对代码运行检查不同,在这个阶段,自动构建被配置和运行。代码质量等检查也可以与同步部署一起添加到构建中。
此阶段使用的工具包括 - Docker、Jenkins、Gradle、Maven 等。
测试
测试是开发过程中不可或缺的一部分。在此阶段,手动或通过自动化测试代码。
此阶段涉及的工具包括 - JUnit、Selenium、TestNG、Soap 等。
部署
此阶段包括通过自动发布将软件部署到生产中。部署构建被安排、协调,然后运行以完成这个过程。
此阶段使用的工具包括 - Jenkins、Kubernetes、Docker 等。
操作
生产过程中的软件管理属于这个阶段。
支持这个阶段的工具有 Ansible、Powershell、Puppet 等。
监控
在部署应用程序时,在此阶段监控应用程序以捕获可能发生的任何错误或错误非常重要。可以使用各种监控工具快速隔离任何错误或问题。
此阶段使用的工具包括 - Grafana、Splunk、Datalog、Wireshark 等。
DevOps左移原则
在任何正常的开发周期中,都会对不同的模块进行更改,然后将这些模块组合在一起并进行测试以实现复杂的业务目标。但是在这个过程中,集成测试是在稍后的阶段执行的,当软件聚集在一起时,可能会检测到问题。因此,错误、错误和其他跨平台依赖性问题会在更晚的阶段被检测到,然后该过程会匆忙完成设定的最后期限。
DevOps 中的“左移”原则是指在开发的早期阶段将测试主要转移到集成测试,并在实现需求时添加到测试中。
这需要在以代码为主要优先事项的业务思维中进行文化变革。许多组织现在正在采用这种方法,因为在更早的阶段检测到问题,从而节省了后期维护的大量时间。
敏捷中的测试驱动开发侧重于根据需求测试和编写测试用例,然后添加代码以支持。同样,左移原则侧重于开发生命周期早期阶段的集成测试,以实现组合目标。
DevOps和SRE之间的区别
SRE 或站点可靠性工程侧重于自动化或完成通常由运营团队通过使用一组工具或软件来自动化任务的开发人员或运维工程师完成的任务。这汇集了执行的大部分操作,从而消除了对项目的单独管理部分的需要,从而将软件开发中的模块汇集在一起。
SRE 专注于自动化运营,而 DevOps 则专注于将开发和运营团队聚集在一起。两个团队都清楚另一个团队所做的要求和更改,因此弥合了协调信息和同步发布周期所需的不同流程和时间之间的差距。
DevOps 和 SRE 有一个共同的目标,即消除传统的分离方法并将依赖的流程整合到一个流程中。但是,DevOps 和 SRE 实现这一目标的方式有所不同。
DevOps术语表
- 敏捷:一种基于计划、开发、测试和部署的重复循环的软件开发方法。
- 自动化:将流程/任务配置为自行运行而不是手动执行。
- 部署:在开发范式中,部署是指计划、开发/配置、测试,然后在特定环境中运行更改以供用户使用。
- 一体化:集成是指将各种模块组合在一起以作为一个系统运行。
- 发布:发布是提供给最终用户的定期更新或最新版本。
- 重构:更改或更新现有功能或代码以进行改进或添加新更新。
- 孤立的:与其他同行隔离或分开。
- 版本控制:版本控制是为同一产品的不同版本分配唯一的名称/编号。
结论
近年来,DevOps 非常受欢迎。随着敏捷组织转向云以满足其所有需求,DevOps 获得了更多关注,因为它是实现更快部署的一种手段。安全性也是采用 DevOps 的组织的主要关注点,这导致了 DevSecOps 一词。
创作不易,请大家多多关注,多多点赞!👍👍