DevOps详解

一、DevOps概念

基本概念

在如今互联网的格局下,抢占市场变得尤为重要,因此敏捷开发越来越被大家所推崇。于是,慢慢的有了DevOps这个概念,含义就是开发-运维一体化,能够理顺开发和运维之间相互配合关系的任何事物。

DevOps是一组过程、部署及开发系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

DevOps的方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。

核心就在于简化Dev和Ops团队之间的流程,使整体软件开发过程更快速

开发流程

整体的软件开发流程包括:

1. PLAN:开发团队根据客户的目标制定开发计划
2. CODE:根据PLAN开始编码过程,需要将不同版本的代码存储在一个库中。
3. BUILD:编码完成后,需要将代码构建并且运行。
4. TEST:成功构建项目后,需要测试代码是否存在BUG或错误。
5. DEPLOY:代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。
6. OPERATE:运维团队将代码部署到生产环境中。
7. MONITOR:项目部署上线后,需要持续的监控产品。
8. INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核心,即持续集成、持续部署。

总的来说就是:

1. Code阶段(编码):Git+GitLab
2. Build阶段(构建):Maven或Gradle
3. Operate(运行):Docker
4. Integrate(集成):Jenkins

  •     CI/CD(持续集成):操作Jenkins,编写对应脚本文件
  •     Code review(代码质量检测):Jenkins集成Sonar Qube
  •     自定义镜像:Harbor
  •     Jenkins流水线操作
  •     WebHook:通知操作,如:钉钉机器人通知

5. K8S编排:更加方便我们管理容器

二、为什么会出现DevOps?

1. 容器化技术的发展,微服务架构的发展,直接促进了DevOps的迅速发展
2. 敏态需求的增加,即探索性工作的增加软件开发从传统的瀑布流方式到敏捷开发,再到现在对敏捷开发提出了更高的要求,近些年创新型的应用不断涌现,在这些应用的研发过程中多采用小步快跑、快速试错的方式,这些探索性工作要求运维能够具备一天发布多次的能力,需要企业完成由稳态到敏态的转变。
3. 软件开发活动在企业经营活动中占比的不断增加业务发展对软件的依赖由轻度依赖、中度依赖发展到目前的重度依赖。
4. 企业存在对消除浪费的需求
   - 软件开发活动在企业中的位置越来越重要,而像企业经营活动一样,软件开发活动中也存在着许多的浪费,企业管理上必然存在着 「识别并消除浪费」 的需求。
   - 软件开发中的浪费包括不必要和必要的浪费,不必要的浪费有:无人使用的功能、软件bug、等待测试、等待审批等;必要的浪费包括:工作项移交、测试、项目管理等。

三、DevOps的优势

1. DevOps 的主要优势在于,自动化流程可以比人员更快,更可靠地执行重复操作。对于组织而言,让开发人员或其他人员整天构建和部署代码既不可行,也无济于事。使这些重复性任务自动化可以使开发人员腾出精力去做自己最擅长的工作 ~ 修改代码。
2. 这样做是允许在几分钟之内构建和部署代码,这仅受组织选择管理其DevOps管道的方式的限制。这意味着从开发功能或错误修正到向最终用户提供更好的体验之间的时间可以大大缩短,从而使用户更加满意。
3. 它还创建了更好的反馈循环。新功能越早交付给用户,组织就越早可以收集反馈和指标并深入了解用户对其产品的喜好。这使组织保持敏捷并为创新提供了更好的环境。

四、DevOps生命周期

DevOps生命周期主要包括产品(策划、研发、运营、推出)、项目(立项、执行、完工),而敏捷、持续集成、持续部署、持续交付都是 DevOps 的一个局部的阶段。

DevOps 在支持全生命周期的过程,要以产品的视角来看待,真正进行交付的时候,也要以产品为维度进行组织的设立。

DevOps 的核心是一组工具和实践,可帮助组织更可靠,更快地构建,测试和部署软件。DevOps 使组织能够比具有传统开发和发布周期的组织更快地发展和交付其产品,从而可以提供竞争优势。与其每天两周或更长时间发布一次版本,不如每天向用户交付新功能,并且可以在数小时内部署错误修正,所有这些都遵循相同的可重复自动化流程。

五、DevOps三大原则

  •  开发人员完成了为其小部件的新功能编写代码。他们将代码提交到功能分支,该功能分支在其开发计算机上启动了一些轻量级测试,检查是否存在任何代码样式问题,同时还扫描具有新公开的安全漏洞的软件包。开发人员提交拉取请求以将其代码合并到代码存储库中,该代码存储库向团队聊天发送通知。
  •  团队中的另一位开发人员检查了代码更改,在发现代码中没有问题之后,批准了请求请求。该代码会自动合并到开发分支中,从而开始构建过程。构建服务器将克隆 developer分支,安装所有软件包依赖项并构建窗口小部件。生成服务器会运行单元测试和集成测试,以确保新功能不会在小部件的其他部分引起任何退步。
  •  每个测试都通过了,构建成功。根据代码库中定义的最佳实践配置,将在云中自动配置一个新容器,并部署小部件。
  •  此时,组织有两个选择。他们可以选择将更新后的窗口小部件自动发布到生产环境中,并使所有用户或选择接收最新功能的部分用户可以使用该功能。自动部署到生产中称为连续部署(CD)。
  •  或者,组织可以选择仅将功能发布到用户验收测试(UAT)环境中,然后根据预定义的时间表手动批准将发布发布到生产中。在管道中添加手动审批流程通常称为“持续交付”(CD的另一种形式)。
  •  无论是否涉及手动步骤,一旦将小部件成功部署到生产中,都将执行附加的自动化测试。其他工具收集有关性能和用户行为的指标,这些指标将提供给IT运营和开发团队,以提供实时反馈,突出显示潜在的错误并帮助塑造新功能。
  •  对于基本的 DevOps 管道,这是一个相当典型的过程,但具体细节取决于组织。
  •  一些组织倾向于在生产环境中快速部署,将新功能隐藏在功能标记后面,以允许向用户群分阶段发布。其他人则更喜欢使用更传统的开发,测试和生产环境结构,在此结构中,功能被批量部署并在部署到生产之前通过多个手动门缓慢发布。
  •  DevOps 可以根据组织或项目的特定需求进行定制。
  •  该过程趋于发展,添加其他测试以生成更安全的应用程序,或找到优化管道以加快构建速度并减少人工干预的方法

### CI/CD 的定义及其在 DevOps 中的作用 持续集成 (Continuous Integration, CI) 和持续交付/部署 (Continuous Delivery/Deployment, CD) 是现代软件开发实践的核心组成部分,它们共同构成了 DevOps 方法论的重要支柱之一。CI 主要关注于频繁地将代码更改合并到共享存储库中并自动运行测试以验证这些变更[^1]。而 CD 则进一步扩展了这一理念,通过确保应用程序可以随时安全地发布给最终用户来增强其可用性和可靠性。 #### 持续集成 (CI) - **核心目标**: 自动化构建过程以及早期发现错误。 - **主要活动**: - 开发人员定期提交他们的工作成果至版本控制系统(如 Git)。 - 使用自动化工具执行编译、静态分析和单元测试等一系列操作。 这种做法有助于减少因长时间分支隔离而导致的冲突,并能更快识别潜在缺陷从而降低修复成本[^2]。 ```bash git push origin main ``` 上述命令展示了开发者如何将自己的修改推送到远程仓库触发后续流程的一个简单例子。 #### 持续交付 (CDelivery)/持续部署(CDeployment) 两者虽然名称相似但存在细微差别: - 如果提到的是 Continuous Delivery,则意味着每次成功完成 CI 后都会创建一个可发布的产物包;然而实际是否真正对外发行仍需人工确认; - 对应于 Continuous Deployment 场景下,在没有任何人为干预的情况下新功能会立刻上线面对真实环境下的客户群体。 无论是哪种形式都强调缩短从想法产生到最后价值传递之间的周期时间同时保持高质量标准不变[^3]。 以下是基于 Jenkins 配置基本流水线脚本片段用于展示整个端到端处理逻辑: ```groovy pipeline { agent any stages { stage('Build') { ... } stage('Test') { ... } stage('Deploy') { ... } } } ``` 此 Groovy 脚本定义了一个简单的三阶段管道模型——分别代表构建、测试与部署环节。 ### 实现方式概述 为了有效实施 CI/CD 策略,团队通常需要考虑以下几个方面因素: 1. **源码管理平台的选择** - 推荐采用支持 Pull Request 功能的服务提供商以便更好地协作审查代码质量。 2. **合适的 CI/CD 工具选型** - 市面上有许多成熟的解决方案可供挑选比如 GitHub Actions、GitLab CI/CD 或者 CircleCI 等等。 3. **基础设施即代码(IaC)** 技术的应用 - 运用 Terraform 或 Ansible 编写声明式的配置文件描述所需 IT 架构资源状态进而促进一致性的维护效率提升。 4. **监控报警机制建立** - 结合 Prometheus + Grafana 绘制实时性能指标图表配合 ELK Stack 记录日志事件方便排查问题根源所在之处。 综上所述,成功的 CI/CD 不仅仅是技术层面的事情还需要文化变革的支持才能达到预期效果[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值