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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值