什么是 DevOps,先决条件,DevOps 与 AI
Source: Dev.to
请提供您希望翻译的具体文本内容,我将为您翻译成简体中文。
DevOps概述
DevOps是一套实践、工具和文化理念,自动化并整合软件开发(Dev)与IT运维(Ops)之间的流程。
其主要目标是缩短系统开发生命周期,并提供高质量软件的持续交付。两支团队不再各自为政(孤岛),而是在整个服务生命周期中协作。
DevOps 阶段
DevOps 生命周期通常用无限循环来表示,象征持续改进。
| 阶段 | 描述 | 常用工具 |
|---|---|---|
| 计划 | 定义业务价值和需求。 | Jira, Trello |
| 编码 | 编写代码并使用版本控制系统管理变更。 | Git |
| 构建 | 将代码编译并打包成可执行格式。 | Maven, Gradle |
| 测试 | 运行自动化测试(单元、集成、性能),及早捕获缺陷(“Fail Fast”)。 | JUnit, Selenium, Gatling |
| 发布 | 为部署准备构建;安排并管理版本。 | Azure DevOps、GitLab 中的发布流水线 |
| 部署 | 使用基础设施即代码将软件推送到生产服务器,确保环境一致。 | Terraform, Ansible |
| 运维 | 管理实时应用的配置和性能。 | Docker, Kubernetes |
| 监控 | 持续跟踪系统健康和用户行为。 | Nagios, Splunk, Prometheus |
如何采用 DevOps 模式
采用 DevOps 与其说是工具的事,不如说是 文化 的事。下面是一份逐步实施的路线图。
- 改变文化 – 将“归咎”转变为“共同责任”。开发人员和运维必须在共同目标上保持一致(例如,系统正常运行是每个人的职责)。
- 采用敏捷方法论 – 将冗长、僵化的计划周期转为短小、迭代的冲刺(Scrum/Kanban),以小块交付工作。
- 实施 CI/CD
- CI – 自动化代码合并和测试。
- CD – 自动化发布到预发布/生产环境。
- 自动化基础设施 (IaC) – 停止手动配置服务器。使用代码脚本(例如 Terraform)来 provision 环境,消除 “在我的机器上可以运行” 的错误。
- 自动化测试 – 用自动化测试脚本取代手动 QA,使其在每次代码变更时运行。
- 建立持续监控 – 搭建实时仪表盘,随时查看系统健康状态,立即对崩溃作出响应。
DevOps 如何节约成本(真实案例)
| 好处 | 为什么能省钱 |
|---|---|
| 更少停机时间 | 自动监控在系统崩溃前捕获错误;停机时间等于失去的销售额。 |
| 更快的上市时间 | 将功能在数周而非数月内发布,意味着收入更早到来。 |
| 降低人员成本 | 自动化处理重复任务(如服务器更新),让高级工程师专注创新。 |
实时案例
示例 1 – Network Rail(英国)
问题:传统测试环境速度慢;发布需要人工干预,导致数天停机。
DevOps 方案:采用基础设施即代码和自动化测试。
成本影响:配置时间从 5.5 天 降至几分钟,节省了大量运营工时并避免了罚款。
示例 2 – Target(零售巨头)
问题:2013 年数据泄露后,Target 的单体更新流程使安全补丁困难。
DevOps 方案:实施 DevSecOps 模型,将安全集成到 CI/CD 流水线;发布频率从每季度一次提升到每天数千次。
成本影响:自动化安全检查帮助避免可能高达 十亿美元 的泄露成本,并降低变更失败率,节省了数百万的修复费用。
DevOps 与 瀑布模型
| 特性 | 瀑布模型 | DevOps模型 |
|---|---|---|
| 过程类型 | 线性且顺序(步骤 A 必须完成后才能进行步骤 B)。 | 循环且迭代(规划、编码、测试的持续循环)。 |
| 协作 | 各自为政——开发人员将代码交给测试人员,再交给运维。 | 协同——开发、QA 和运维从一开始就共同工作。 |
| 反馈循环 | 缓慢——只能在最后才发现问题。 | 快速——每次提交后立即获得反馈。 |
| 发布周期 | 长(数月/数年)——“一次性”发布。 | 短(每日、每周或每两周)——持续的微发布。 |
| 风险 | 高——在最后修复缺陷成本高且会延迟上线。 | 低——缺陷在小批量中被立即发现并修复。 |
| 关注点 | 过程遵循和严格规划。 | 交付速度和业务价值。 |
Source: …
学习 DevOps 前的先决条件
DevOps 不是入门级的 IT 技能;它位于开发(Development)和运维(Operations)的交叉点。要想成功,需要在 DevOps 工具所依赖的技术上打下坚实的基础。
1. Linux 操作系统(基础)
- 为什么? 大约 90 % 的 DevOps 基础设施运行在 Linux 上;几乎不使用图形界面(GUI)。
- 需要学习的内容:
- CLI 基础:
cd,ls,pwd,cp,mv,rm - 权限管理:
chmod,chown,sudo - 文本编辑:
vim,nano - 软件包管理:
apt‑get,yum,dnf
- CLI 基础:
2. 网络基础(管道)
- 了解应用程序如何在服务器之间通信(TCP/UDP、DNS、负载均衡、防火墙、VPN 等)。
3. 脚本编写与自动化(粘合剂)
- 使用 Bash、Python 或 PowerShell 编写可复用的自动化脚本。
4. 版本控制(支柱)
- Git 基础:分支、合并、变基、拉取请求(pull request)和标签(tag)。
当你对这四大支柱熟练掌握后,就可以开始深入学习 Docker、Kubernetes、Jenkins 等现代 DevOps 工具箱中的组件了。
1. 网络基础
如果你不了解网络,就无法排查部署失败的问题。
学习内容
- IP 地址与端口 – 例如,为什么 Web 服务器运行在 80/443 端口。
- DNS – 域名如何解析为 IP 地址。
- HTTP/HTTPS – 常见状态码(200 OK,404 Not Found,500 Server Error)。
- SSH – 如何安全地登录远程服务器。
2. 基础脚本编写(胶水)
你不需要成为全栈开发者,但必须了解如何编写脚本来自动化重复性任务。
学习内容
| 语言 / 格式 | 为什么重要 |
|---|---|
| Bash / Shell 脚本 | Linux 的原生语言。 |
| YAML 与 JSON | 几乎所有 DevOps 工具(Kubernetes、Ansible、Docker Compose)使用的数据序列化格式。 |
| Python(建议掌握) | 能实现更复杂的自动化逻辑。 |
3. SDLC 与 Git(流程)
DevOps 的核心是加速软件开发生命周期(SDLC)。
学习内容
- Git – 了解
git clone、git commit、git push,以及如何解决合并冲突。 - Agile – 掌握冲刺(sprints)和迭代开发。
4. 谁可以学习 DevOps?
DevOps 是一种方法论,而不是特定的学位。大多数 DevOps 工程师都是从其他角色转型而来。
| 当前角色 | 转型难易度 | 需要关注的重点 |
|---|---|---|
| 系统管理员(运维) | 高 | 您已经了解 Linux 和网络。重点关注自动化(Python/Bash)和云(AWS/Azure)。 |
| 软件开发人员(开发) | 高 | 您已经了解代码和 Git。重点关注 Linux、网络和基础设施管理。 |
| 质量保证 / 测试工程师 | 中 | 您已经了解发布流程。重点关注自动化测试和 CI/CD 流水线(Jenkins/GitLab)。 |
| 应届毕业生(计算机/信息技术) | 中 | 您拥有理论知识。重点大量进行实操实验;大学课程很少涉及真实的 DevOps 工具。 |
| 非 IT 背景 | 难 | 可以,但道路更长。先花 1‑2 个月专注学习 Linux 和网络。 |
5. DevOps + AI
DevOps 与 AI 的交叉形成了一个强大的双向关系。由于它涉及两个不同的概念,可能会让人感到困惑:
| 概念 | 描述 |
|---|---|
| AI for DevOps (AIOps) | 使用 AI 工具来改进 DevOps 工作流(例如,AI 检测 bug)。 |
| DevOps for AI (MLOps) | 使用 DevOps 原则来管理 AI 开发(例如,对 AI 模型进行版本控制)。 |
5.1 AI for DevOps (AIOps)
将人工智能应用于 DevOps 流水线,使其更快、更智能且更自动化。
- 智能代码审查 – AI 工具(Amazon CodeGuru、DeepCode)实时扫描代码,查找 bug、安全漏洞和逻辑错误。
- 预测性监控 – AI 驱动的监控(Dynatrace、Datadog)分析历史数据,预测故障发生(例如,“内存使用率上升;服务器将在 2 小时后宕机”)。
- 自动化事件响应 – 当出现错误时,AI 代理可以自动回滚部署或重启服务。
- 自愈基础设施 – AI 能根据预测的流量自动扩容或缩容,而不是仅仅对当前负载作出反应。
5.2 DevOps for AI (MLOps)
构建 AI 模型是实验性且混乱的过程。MLOps 将 DevOps 的纪律(CI/CD、版本控制)应用于数据科学。
- 数据版本控制 – 在 MLOps 中,你对 代码 + 数据 + 模型参数 进行版本管理。如果今天重新训练模型,你必须能够复现六个月前使用的确切数据集。
- 持续训练 (CT) – 随着真实世界数据的变化,AI 模型会出现“漂移”。MLOps 流水线会在模型准确率下降时自动触发重新训练。
- 模型注册表 – 正如你将编译好的二进制文件存放在制品库(如 Nexus)中,MLOps 将训练好的模型存入模型注册表,然后再部署到生产环境。
5.3 对比:DevOps vs. MLOps vs. AIOps
| 特性 | DevOps | MLOps(DevOps for AI) | AIOps(AI for DevOps) |
|---|---|---|---|
| 主要目标 | 缩短 SDLC 并交付高质量软件 | 可靠且可扩展的 AI 模型 | 自动化 IT 运维 |
| 核心制品 | 软件应用(binary/WAR/JAR) | 机器学习模型 | 事件/警报报告 |
| 关键挑战 | 零缺陷代码 | 模型漂移(准确率下降) | 噪声削减(警报过多) |
| 新阶段 | CI / CD | CI / CD / CT(持续训练) | Observe / Engage / Act |
| 示例工具 | Jenkins、Docker | Kubeflow、MLflow | Splunk ITSI、BigPanda |
6. 实际案例
案例 1 – Netflix (AIOps)
- 挑战: 成千上万的微服务在服务故障时会产生“风暴”般的警报,使根因分析变得困难。
- AI 解决方案: Netflix 使用 AIOps 将警报关联为单一事件,定位出问题服务并降低平均修复时间(MTTR)。
案例 2 – Uber (MLOps)
- 挑战: Uber 的 ETA(预计到达时间)预测依赖于数百个不断更新的模型。
- DevOps 解决方案: Uber 构建了内部的 MLOps 平台 Michelangelo,让数据科学家只需一次点击即可部署模型——就像软件工程师部署代码一样——确保应用始终使用最准确的 ETA 模型。