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

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS2 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏2 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
布裘2 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
懂软件的胡子个哥2 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发
云贝贝贝2 天前
腾讯云 TDSQL(MySQL 版)性能优化与慢查询排障实战 6 招
运维·腾讯云