软件开发之DevOps

我们在学习和理解一个技术,我们首先需要知道他是什么,能给我们带来什么好处,它的使用场景是什么,核心的理论、原理是什么,有什么相关的技术栈。

1.首先我们先来理解DevOps是什么,DevOps 是一种结合 软件开发(Development)IT 运维(Operations) 的方法论与实践文化。

2.目标或者说好处是让软件 更快、更稳定地开发、测试、发布和运行。

1️⃣ DevOps 核心理念

DevOps 强调 协作、自动化、持续改进

  • 开发和运维协作 🤝

    打破传统"开发写完就丢给运维"的模式。

  • 自动化流程 ⚙️

    自动构建、测试、部署软件。

  • 持续交付 🔁

    小版本快速上线,而不是大版本长周期发布。

2️⃣ DevOps 典型流程

|----------------------------------------------------------------------------|
| 代码开发 ↓ 代码提交 (Git) ↓ CI 持续集成 自动构建 + 自动测试 ↓ CD 持续交付 / 持续部署 ↓ 上线部署 ↓ 监控 & 反馈 |

3️⃣ DevOps 常用工具

常见 DevOps 技术栈:

|---------|----------------------------------------|
| 过程 | 技术栈 |
| 代码管理 | * Git * GitLab * GitHub |
| CI/CD | * Jenkins * GitHub Actions * GitLab CI |
| 容器化 | Docker |
| 容器编排 | Kubernetes |
| 基础设施自动化 | * Terraform * Ansible |
| 监控 | * Prometheus * Grafana |

4️⃣ DevOps 能解决什么问题

传统模式问题:

开发:

我这边代码没问题

运维:

服务器上跑不了

DevOps 解决:

✔ 自动部署

✔ 自动测试

✔ 快速发布

✔ 可回滚

✔ 实时监控

5️⃣ DevOps 的好处

更快发布

更少故障

自动化运维

团队协作更好

---------------------------------------------------------------------

具体流程步骤

下面是一个 从写代码 → 自动部署到服务器 → 上线运行 的完整 DevOps 实战流程。我用目前企业最常见的一套技术栈来举例:

  • 代码管理:Git

  • CI/CD:Jenkins

  • 容器化:Docker

  • 容器编排:Kubernetes

  • 监控:Prometheus + Grafana

我把整个流程拆成 6 个真实公司里的步骤

一、开发阶段(写代码)

开发人员在本地写代码,例如:

  • Java(Spring Boot)

  • Python(Django / FastAPI)

  • Node.js

  • Go

开发完成后:

|--------------------------------------------------------------|
| git add . git commit -m "add login api" git push origin main |

代码被提交到代码仓库,比如:

  • GitHub

  • GitLab

二、触发 CI(持续集成)

当代码 push 后,CI 自动触发。

例如在 Jenkins 中会自动执行 pipeline:

|---------------------------------|
| 代码提交 ↓ 触发 Jenkins ↓ 自动构建 ↓ 自动测试 |

Jenkins pipeline 示例:

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| pipeline { agent any stages { stage('Checkout') { steps { git 'https://github.com/example/project.git' } } stage('Build') { steps { sh 'mvn clean package' } } stage('Test') { steps { sh 'mvn test' } } } } |

三、构建 Docker 镜像

CI 会把应用打包成 Docker 镜像。

使用 Docker

Dockerfile 示例:

|-------------------------------------------------------------------------------------|
| FROM openjdk:17 COPY target/app.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] |

构建镜像:

|-----------------------------|
| docker build -t myapp:1.0 . |

四、推送镜像到镜像仓库

镜像需要上传到仓库,例如:

  • Docker Hub

  • Harbor

|--------------------------------------------------------------------|
| docker tag myapp:1.0 myrepo/myapp:1.0 docker push myrepo/myapp:1.0 |

五、CD 自动部署到服务器

CI 完成后,CD 开始部署。

如果使用 Kubernetes

部署文件:

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: myrepo/myapp:1.0 ports: - containerPort: 8080 |

部署:

|----------------------------------|
| kubectl apply -f deployment.yaml |

相关推荐
智能运维指南2 小时前
信创背景下,国产 DevOps 选型的价值跃迁路径设计(2026)
运维·devops
生活予甜2 小时前
2026年算法备案办理服务优选服务商口碑解读
大数据·运维·人工智能
jiayong232 小时前
流程设计器技术选型评估报告
运维·ubuntu·流程引擎
AI-小柒2 小时前
OpenClaw技术深度解析:从智能助手到自动化引擎的范式革命(附DataEyes实战)
大数据·运维·开发语言·人工智能·python·http·自动化
springfancy20133 小时前
数字化运维实践:如何构建全场景、智能化的设备管理系统?
运维·设备管理系统·设备维保管理系统·设备运维管理系统·设备保养管理系统
邓草3 小时前
phpStudy v8.1 离线版一键安装包(小皮面板)
运维·服务器·mysql
ego.iblacat3 小时前
Web 技术与 Nginx 网站环境部署
运维·前端·nginx
野生工程师3 小时前
【Linux基础】CentOS Stream10详细安装教程
linux·运维·centos
无效的名字4 小时前
最快速在服务器上搭建代理
运维·服务器