DEVOPS的基本体系与流程

6 篇文章 1 订阅

大体上,我们可以将devops的体系划分为三块:代码、配置与部署环境

代码

良好的代码管理准则是:开发用分支,部署用TAG

理想情况下,我们的永久分支只有一个master,除非有LTS(对某个版本长期支持)的要求。

功能开发使用feature-*,测试通过,合并到master分支后应立即删除

BUG修复使用hotfix-*,测试通过,合并到master分支后应立即删除

多余的分支都是在增加代码管理与部署的复杂度

 

配置


需要强调的是:配置不应该成为代码的一部分

首先为配置定义以下几个维度:

日志级别:DEBUG|INFO|ERORR
数据持久化(即是否为生产数据库):真|伪
性能要求(比如线程池、连接池):低|高
网络敏感度(即调用外部服务的延时容忍度):低|高
密钥可见性(需要进行认证的各种服务): 公开|透明

若将各个环境的配置都放在源码中,那么密钥必然会暴露给所有开发人员,就无法满足密钥保密的要求;
若服务器计算与存储能力不尽相同,那么也无法进行性能优化;
同时,若设置了较高的网络延时,那么对于RTT较小的网络,当发生部分服务不可用时,无法及时检测,仍然会造成较多的请求失败。

因此,代码里面应该只保留开发人员所需要的本地开发配置,并且和本地环境无关。这一点可以通过Docker做到。

 

部署环境


除了开发人员需要的本地开发环境外,至少还需要测试环境和生产环境。

如果有资源,测试环境可以进一步划分为联调环境,伪生产环境和准生产环境。

对应的配置如下:


其中,伪生产可以用于验收性测试(alpha测试),准生产可用于灰度测试(beta测试);

准生产的配置基本与生产环境一致,联调环境的配置基本与伪生产环境一致;
若资源不足,可以减去联调环境与准生产环境。

事件与应对流程

开发新功能:

  1. 基于master创建新的本地分支feature-[新功能]
  2. 本地开发、测试
  3. 开发完毕,使用git rebase master避免冲突, 然后推到远程分支,请求合并到master并删除该远程分支
  4. 合并master并删除完毕,发布到测试环境
  5. 测试不通过,则回到第1步;测试通过则结束
  6. 最后,待本次迭代内的所有特性均完成了测试,那么在master上面打TAG,准备发布新版本。

修复线上BUG:

  1. 基于线上版本的TAG创建新的分支hotfix-[BUG]
  2. 本地开发、测试
  3. 修复完毕,推到远程分支
  4. 将该远程分支发布到测试环境
  5. 测试不通过,则回到第2步;测试通过,则合到master并删除该分支,打TAG,准备发布补丁版本

版本发布/回滚:

  1. 迭代开发完毕,基于新版本的TAG,发布到生产环境
  2. 回滚时,基于上个版本的TAG发布到生产环境
  3. 热修复时,基于热修复版本的TAG发布到生产环境

代码与部署环境的对应发布方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值