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

相关推荐
云运维笔记1 小时前
IP地址从入门到精通:网络通信的核心基石
运维·网络·计算机网络
码农学院2 小时前
企业官网改版后 AI 引用归零的复盘:301 重定向断层让爬虫索引掉线,修复方案与恢复数据
运维·geo优化·ai优化aio
kuroomi3 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
当下新鲜事3 小时前
空调机房冷冻泵与冷却泵技术分析:赛莱默B&G背包式智能变频管道泵的工程应用
运维·物联网·业界资讯
Doris__HE4 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
龙智DevSecOps解决方案7 小时前
JFrog供应链流量控制器架构解析:如何通过 SASE 集成阻断 AI 智能体的恶意依赖拉取?
ai编程·devops·jfrog·软件供应链安全
闲云野鹤在人间7 小时前
docker 入门 | 第7章 容器监控 和 第8章 容器日志 详解
运维·docker·容器·架构·云计算
亚川楼宇自控系统数据中心厂家7 小时前
IBMS 集成如何打通数据中心的子系统数据孤
运维
蓝速科技8 小时前
桌面双屏翻译机量产调试:三类场景兼容性破局方案丨蓝速科技
运维·数据库·人工智能·科技·技术分享
见闻小天地8 小时前
脱硫脱硝塔选变频器避坑指南:四方DL500变频器使用体验分享
大数据·运维·人工智能·业界资讯