DevOps理念大白话总结
一、软件开发是怎么进化的?
以前开发软件像盖房子:
-
瀑布模型:一步步来,需求→设计→编码→测试→上线,中间不能回头。如果后面发现问题,只能等下次大改,像装修完了才发现插座装错位置,得拆墙重来。
-
迭代/增量模型:先搭个毛坯房给人看,再一层层装修、调整,边干边改。
-
敏捷开发:把大项目拆成小模块,一两周就出一个能用的版本,让客户试用提意见,再快速改。有点像"小步快跑、快速试错"。
二、那DevOps又是啥?
说白了,DevOps就是让开发(Dev)和运维(Ops)不再互相甩锅。
以前:开发写完代码丢给运维,"我这边跑得好好的,你部署出问题是你的事!"
运维:环境不一样、配置不同,一上线就崩,怪我们?
测试:你们俩都不靠谱,bug一堆......
DevOps的目标:大家坐一条船,共同为软件稳定、快速上线负责。
核心做法:自动化一切能自动化的 ,从写代码、构建、测试、部署到监控,打通全流程,实现持续集成、持续部署(CI/CD)。
三、为什么需要DevOps?
-
市场变化快:现在做App、网站,要求几天甚至一天发好几个版本,传统模式跟不上。
-
容器技术(如Docker)和微服务让拆分解耦更容易,反过来也催生了DevOps。
-
减少浪费:开发中大量时间浪费在"等测试""等审批""等环境",DevOps用自动化省掉这些无聊等待。
-
避免"技术债":赶工出来的代码后面改不动,DevOps鼓励持续优化。
四、DevOps有啥好处?
-
速度快:以前一周发一次版本,现在一天能发十次。
-
风险低:每次只改一小点,出了问题容易回滚,不像以前攒一个月的大版本,上线崩了全员加班。
-
反馈快:用户用上新功能,第二天就能收集意见,快速调整。
-
人舒服:开发不用半夜爬起来处理部署问题,运维不用手工复制文件、改配置。
五、DevOps具体怎么玩?
一个循环流程:计划 → 编码 → 构建 → 测试 → 发布 → 部署 → 运维 → 监控 → 再回到计划。
常用工具举个栗子:
-
代码管理:Git + GitLab
-
构建:Maven / Gradle
-
容器:Docker
-
集成自动化:Jenkins(写脚本自动跑)
-
代码质量检查:SonarQube
-
容器管理:Kubernetes(K8S)
-
通知:钉钉机器人(部署成功或失败自动发消息)
六、DevOps三大原则
-
流水线原则:让工作像流水一样顺畅,少做无用功,小步快改,可视化进度。
-
反馈原则:尽早发现错误,快速修复,别把问题憋到最后。
-
持续学习:鼓励尝试,不怕失败,把改进当成日常工作。
七、CICD和DevOps啥关系?
-
CICD是一种自动化实践:包括持续集成(代码合并后自动构建、测试)、持续交付(自动打包上传,手动点一下部署)、持续部署(自动直接上线)。
-
DevOps是一种文化/理念 :强调打破部门墙,共同目标。而CICD是实现这个文化的重要技术手段。
可以这样记:DevOps是"指导思想",CICD是"干活工具"。
八、两种流水线模式:Push vs Pull(GitOps)
-
Push模式:CI系统把编译好的镜像"推"到仓库,再触发部署。缺点:密钥可能写在代码里,不安全。
-
Pull模式(GitOps):集群里有个"监视器",发现配置仓库有变化(比如新镜像地址),就主动"拉"过来部署。更安全、声明式,现在流行。
一句话总结:DevOps就是让开发和运维不再打架,通过自动化工具把"写代码 → 上线 → 反馈 → 改进"这个圈转得飞快,从而更快、更稳地做出用户想要的东西。
一、Git 是干啥的?
Git 就是一个记录文件改动历史 的工具,尤其适合多人一起写代码。
比如你写论文,改来改去最后想找回第一版,Git 就能帮你轻松跳回去。它还能防止大家改同一行代码时互相覆盖。
二、Git 的三个"房间"
Git 把你的项目分成三个区域,方便你控制哪些改动要保存:
-
工作区 -- 就是你电脑上看到的文件夹,随便改。
-
暂存区 -- 相当于"购物车",用
git add把想保存的改动放进去。 -
版本库 -- 真正存档的地方,用
git commit把购物车里的内容打包成一个历史版本。
流程:改代码 → git add → git commit
三、常用命令(挑最常用的说)
初始化 & 克隆
-
git init-- 在当前文件夹里建一个 Git 仓库(生成隐藏的 .git 目录)。 -
git clone https://...-- 把远程仓库整个下载下来。
配置
git config --global user.name "你的名字"-- 设置你的名字,提交时会用到。
增删文件
-
git add 文件名-- 把某个文件放进暂存区。 -
git add .-- 把当前所有改动都放进暂存区。 -
git rm 文件名-- 删除文件,并记录这次删除。
提交
git commit -m "说明文字"-- 把暂存区的改动正式存为一条历史记录。
查看状态
-
git status-- 看看哪些文件改了、哪些在暂存区。 -
git log-- 查看历史提交记录。 -
git diff-- 对比当前文件和上次存档的区别。
分支(相当于平行宇宙)
-
git branch-- 列出所有分支。 -
git branch 新分支名-- 创建新分支。 -
git checkout 分支名-- 切换到某个分支。 -
git checkout -b 新分支-- 创建并切换。 -
git merge 分支名-- 把另一个分支的内容合并到当前分支。
远程同步
-
git fetch-- 下载远程仓库的最新内容(但不合并)。 -
git pull-- 下载并自动合并到你的代码里。 -
git push-- 把你的本地提交上传到远程仓库。
撤销
-
git checkout 文件名-- 把工作区的文件恢复到上次提交的状态(撤销未暂存的修改)。 -
git reset 文件名-- 把暂存区的文件撤出来,但工作区不改动。 -
git reset --hard-- 放弃所有未提交的改动,回到上一次提交的状态(危险)。 -
git stash-- 临时藏起当前未完成的修改,以后再恢复。
四、GitLab 是什么?
GitLab 就是一个网页版的 Git 仓库托管平台 ,类似 GitHub。
除了存代码,它还带了很多协作功能:
-
在线看代码、提合并请求(MR/PR)
-
管理团队权限(谁能看、谁能改)
-
自动备份、CI/CD 自动打包部署等。
五、GitLab 常用概念
权限角色(从低到高)
-
Guest -- 只能提 Issue、写评论,不能看代码。
-
Reporter -- 可以克隆代码,但不能上传。
-
Developer -- 可以正常推送代码、创建分支。
-
Maintainer -- 可以合并分支、保护分支、管理成员。
-
Owner -- 拥有全部权限,能删项目、改可见性。
项目可见性
-
Private -- 只有被邀请的人能看到。
-
Internal -- 公司内部所有登录用户都能看到。
-
Public -- 任何人都能看到。
六、团队协作的两种常见方式
1. 普通团队协作(所有人都在同一个仓库)
- 小明克隆仓库 → 创建
feature/小明分支 → 开发 → 推送分支 → 在 GitLab 上发起合并请求(MR) → 组长审核 → 合并到主分支。
2. Fork 协作(外部贡献者)
- 外部人员把主仓库复制一份到自己的名下(Fork)→ 在自己仓库里修改 → 向主仓库发起拉取请求(PR) → 管理员审核合并。
七、安装 GitLab(一句话)
-
用清华镜像源配置 yum 仓库,然后
yum install gitlab-ce就能装上。 -
装完后用
gitlab-ctl reconfigure初始化配置,gitlab-ctl start启动。
八、实用小技巧
-
修改本地分支名:
git branch -m 旧名 新名 -
删除远程分支:
git push origin :旧分支名 -
后悔提交了:
git commit --amend可以修改上一次提交的说明或内容。