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

相关推荐
乘云数字DATABUFF14 小时前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--3 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森3 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜3 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB4 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode6 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220706 天前
如何搭建本地yum源(上)
运维
大树889 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠9 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质9 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务