当前位置: 首页 > news >正文

软件开发之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
http://www.jsqmd.com/news/468760/

相关文章:

  • 震惊!Nature子刊论文竟有85%的参考文献都是假的!为提高编校质量,期刊编辑部启用这款文献校对软件,已经迫在眉睫!
  • MATLAB 2021b闪退问题排查与解决:字体兼容性案例
  • Python 3.12 MagicMethods - 41 - __imod__
  • 【Halcon】halcon中的常用算子的中文
  • Vue页面加载复杂表单弹窗内存上升页面崩溃的解决方案
  • FCC认证是美国电子市场准入的核心合规门槛,中鉴检测值得信赖
  • 跨网文件安全交换系统的进化之路——更智能、更安全的未来
  • .NET Core 集成 SqlSugar 最简实战(开箱即用)
  • 铌酸锂波导和频技术的研究与应用:引领未来通信技术革新
  • 静态住宅IP安全吗?
  • 当“数字同事”遇上“物理工人”:OpenClaw与人类劳动的终极博弈
  • 习题7-2 求一批整数中出现最多的个位数字
  • Nano Banana 2 实测 – 谷歌 Gemini 3.1 Flash Image 登顶 Arena 生图榜第一
  • 【无标题】从零搭建四大名著NLP分析系统:分词、词频、词性、实体抽取、可视化全攻略
  • 混动汽车建模 [hot]P2运输车混合动力simulink模型[hot] ①(工况可自行添加)...
  • FLASH分区
  • 安卓帝国生存指南:四大组件打工仔与AMS-WMS幕后老板的恩怨情仇
  • 大模型开发从入门到精通:全流程实战+代码解析,一文掌握大模型应用开发全流程指南,值得收藏
  • 解锁论文“数据密码”:书匠策AI的神奇数据分析魔法
  • 小红书全自动AI评论种草服务机构深度评测
  • ISO/SAE 21434是道路车辆网络安全工程的国际标准,旨在为汽车电气电子(E/E)系统的概念、开发、生产、运营、维护和停用提供系统化的网络安全风险管理框架。
  • 骨传导蓝牙耳机哪个牌子好?2026最全骨传导耳机测评整理分享
  • python小考大题
  • 今天,我遇到了一个有趣的编程挑战:编写一个带编螺纹程序,用于控制油槽等设备。这个任务看起来有点复杂,但我决定一步一步来,先从基础知识开始
  • 永磁电机电磁噪声仿真实战:从傅里叶分解到转子建模黑科技
  • 2026年全国海豚吸污机维修平台TOP5正规榜单揭晓
  • 顶空气体分析技术在现代包装工业中的应用研究——以残氧仪为核心的技术解析
  • 贵州本地企业做软件定制开发,怎么选靠谱服务商?
  • 在线绘制带community的蛋白质-蛋白质相互作用(PPI)网络图
  • 2026高职财税大数据应用学数据分析的技术价值与应用前景