DevOps架构实践

1. 场景

持续部署:业界没有统一明确地定义,简单理解为将集成结果部署到不同的环境供用户使用,并且立即反馈部署结果的实践,其中不同的环境包括:开发环境、测试环境、预发布环境、生产环境
持续部署两个核心要素:持续、自动化,自动化是持续的基础
持续部署的需求场景:
  • 需要频繁的发布更新
  • 部署规模较大,人工操作费时费力易出错
  • 规范化上线部署流程和配置规范
注:此处只讨论应用部署,不包括系统部署
 

2. 实践

  • 开发提交代码到Git仓库
  • 自动或手动触发持续集成,执行编译、打包、单元测试、代码扫描等过程,并构建出可部署的程序文件,上传测试的SVN库
  • 测试人员手动触发Jenkins调用Rundeck从测试的SVN库中获取部署文件并部署到测试环境
  • 测试人员进行产品验证
  • 测试人员在验证通过后,申请发布到生产环境,并手动触发Jenkins,将测试的SVN库中的部署文件上传到运维的SVN库
  • 运维人员触发Rundeck,从运维的SVN库中获取部署文件并更新到生产环境
注:
  • 集群的部署采用分步更新,先发布到线上集群里的某一个节点进行更新测试,测试通过后把这个节点加入集群,再更新其他节点
  • 发布成果的版本采用时间戳的形式

3. 工具

3.1 工具箱
  • Jenkins:用作发布任务的触发,实现发布的持续化
  • SVN:发布成果的版本管理工具,实现发布内容的可追踪、易回滚
  • Rundeck:用Java/Grails实现的开源自动化部署工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行远程操作,大大降低了对服务器自动化的门槛。

4. 效果

  • 提升应用变更效率,包括速率和成功率
  • 实现部署自助化,开发、测试均可完成相应环境的发布

原文出自:

http://udn.yyuap.com/forum.php?mod=viewthread&tid=30567&typeid=343

原文地址:https://www.cnblogs.com/lingyejun/p/7285953.html