软件开发之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 |

相关推荐
认真的薛薛13 分钟前
Linux基础:GitOps发布流程
java·linux·运维
北风toto24 分钟前
Jenkins新手入门安装插件全报错
java·运维·jenkins
dislike_shuati32 分钟前
Ubuntu18多用户情况一用户桌面卡死,鼠标能动但点击没用——解决办法
linux·运维·服务器
mCell1 小时前
可观测性实战:Prometheus + Grafana 全栈监控
运维·后端·google
fan65404141 小时前
GEO服务商技术评估的四维量化框架:以杭州文澜天下科技为例
运维·人工智能·科技
Lalolander2 小时前
设备工程项目如何高效管理项目进度与成本?
大数据·运维·设备工程项目管理·设备工程项目成本管理·工程项目进度管理
s_w.h2 小时前
【 linux 】理解进程状态
linux·运维·服务器
zandy10112 小时前
2026嵌入式BI PaaS平台技术剖析与实现指南
java·运维·paas
Harm灬小海3 小时前
【云计算学习之路】学习Centos7系统:服务搭建(VSFTP)
linux·运维·服务器·学习·云计算
志栋智能3 小时前
超自动化安全:如何降低人为操作失误风险?
运维·安全·自动化