DevOps简介

目录

1、概念

2、解决的痛点

[3、核心理念:CALMS 模型](#3、核心理念:CALMS 模型)

[4、DevOps 的生命周期](#4、DevOps 的生命周期)

[5、 常见的 DevOps 工具链](#5、 常见的 DevOps 工具链)


1、概念

DevOps不是某个具体职位,而是一套文化、实践和工具的集合,旨在缩短系统开发生命周期,提供高质量的持续交付。

它试图打破开发团队(追求快速变更)和运维团队(追求系统稳定)之间传统的壁垒和矛盾。

2、解决的痛点

在 DevOps 出现之前,大多数企业采用传统的"瀑布模型"或类似的孤岛式工作方式:

  • 开发与运维的目标冲突: 开发团队的目标是快速推出新功能,而运维团队的目标是确保生产环境的稳定。这种冲突常常导致互相指责。

  • 发布周期漫长: 从开发完成到最终上线,需要经过复杂的集成、测试和部署流程,耗时数周甚至数月。

  • 手动操作易错: 部署过程大量依赖手动操作,容易出错,且难以复现。

  • 问题反馈滞后: 问题只有在部署到生产环境后才会被发现,此时修复成本极高。

  • 效率低下: 团队将大量时间花费在等待、排查部署问题等非增值活动上。

3、核心理念:CALMS 模型

CALMS 是一个广泛用于评估和实现 DevOps 文化的框架。

  • C - Culture(文化): 这是 DevOps 的基石。强调共享责任、打破部门墙、信任与协作。开发需要关心代码的运行状况,运维需要提前参与设计阶段。

  • A - Automation(自动化): 凡是重复性的工作,都应自动化。 这是实现 DevOps 速度与可靠性的关键技术手段。自动化测试、自动化部署、自动化监控等。

  • L - Lean(精益): 借鉴精益制造思想,关注价值流动,减少浪费(如等待时间、不必要的流程)。追求小批量、持续不断地交付价值。

  • M - Measurement(度量): 用数据和指标驱动决策和改进。常见的指标包括:部署频率、变更前置时间、变更失败率、平均恢复时间(MTTR)。没有度量,就无法改进。

  • S - Sharing(分享): 鼓励知识、工具和经验的透明共享。避免信息孤岛,建立共同的学习型组织。

4、DevOps 的生命周期

DevOps 实践通常贯穿整个应用生命周期,形成一个无限的循环(称为"无限循环"),象征着持续交付和持续改进。这个循环通常包含以下八个阶段:

  1. 计划: 定义功能和要求,跟踪进度。工具如 Jira, Confluence。实践: 敏捷开发。

  2. 编码: 编写代码和代码仓库管理。实践: 版本控制(如 Git)、分支策略(如 GitFlow)。

  3. 构建: 将代码编译成可执行文件。实践: 持续集成。开发人员频繁地将代码合并到主干,并自动触发构建和单元测试。工具如 Jenkins, GitLab CI。

  4. 测试: 确保代码质量。实践: 自动化测试(单元测试、集成测试、端到端测试)。工具如 Selenium, JUnit。

  5. 发布: 准备将应用部署到生产环境。实践: 持续交付。确保代码始终处于可部署状态。

  6. 部署: 将构建好的应用发布到生产环境。实践: 持续部署(自动部署)、基础设施即代码(IaC,用代码管理和配置服务器,如 Terraform, Ansible)、容器化(如 Docker, Kubernetes)。

  7. 运维: 维护应用程序在生产环境中的运行。实践: 监控和日志记录(如 Prometheus, ELK Stack),保证系统稳定性和性能。

  8. 监控: 收集应用和环境的运行数据。实践: 通过监控发现问题,并将反馈(如用户反馈、性能瓶颈)快速传递回"计划"阶段,开启新的循环。

5、常见的 DevOps 工具链

  • 版本控制: Git, GitHub, GitLab, Bitbucket

  • 持续集成/持续交付: Jenkins, GitLab CI/CD, CircleCI, Travis CI

    • CI阶段 :代码拉取 -> 编译(mvn compile) -> 运行单元测试(mvn test) -> 打包(mvn package) -> 制品上传(到Nexus/JFrog Artifactory)。

    • CD阶段:从制品库拉取包 -> 构建Docker镜像 -> 推送镜像到仓库 -> 部署到测试/生产环境(通常调用K8s或云平台API)。

  • 配置管理和IaC(基础设施即代码): Ansible, Terraform, Puppet, Chef

  • 容器化: Docker

  • 容器编排: Kubernetes

  • 监控与日志: Prometheus, Grafana, ELK Stack, Nagios

  • 协作与沟通: Slack, Microsoft Teams, Jira

相关推荐
CS Beginner2 小时前
【Linux】Tomcat基本配置
linux·运维·tomcat
..Move...2 小时前
快速搭建Docker私有仓库指南
运维·docker·容器
小小的木头人3 小时前
Windows Docker desktop 部署
运维·kafka
wanhengidc4 小时前
云手机和虚拟机的区别都有哪些?
运维·服务器·安全·智能手机·玩游戏
码农周4 小时前
从零搭建vsftpd服务器:避坑指南+实战解决方案
运维·服务器
<但凡.6 小时前
Linux修炼:库制作与原理(一)
linux·运维·服务器
Maple_land7 小时前
编译器的“隐形约定”与本地变量:解锁Linux变量体系的关键密码
linux·运维·服务器·c++·centos
小蜜蜂爱编程9 小时前
Ubuntu无法开机Failed to activate swap /swapfile
linux·运维·ubuntu
阿巴~阿巴~9 小时前
CPU 指令集、权限与用户态内核态机制
linux·运维·服务器·指令集·权限·用户态内核态
小涵9 小时前
企业SRE/DevOps向的精通Linux课程培训课程
linux·运维·devops·1024程序员节