你好,游客 登录 注册 搜索
背景:
阅读新闻

在数据库中引入DevOps方法

[日期:2017-11-13] 来源:infoq.com  作者:Jeff Martin ,译者 盖磊 [字体: ]

今天(11月2日)是PASS 2017峰会的首日,Redgate布道师Steve Jones介绍了他在数据库管理中引入DevOps的一些技巧。他所介绍方法中包括了一些可适用于各种规模应用部署的技巧。Jones在演讲一开始就提及Amazon在2016年部署实现每12秒做一次生产层面变更。他分享此案例的一个原因在于,阐明使用有效的变更管理方法做高效交付时可达到的变更频率。

考虑到存储在数据库中的数据量以及数据库所担任的关键角色,对这些生产环境中的数据库成功地执行变更无疑十分关键。为了展示数据库中存储的数据量,Jones举例Microsoft每日将从Azure用户采集700TB的遥测数据(没错,是TB)。

Jones引用了Gene Kim给出的支撑DevOps的三个原则:

  1. 系统化考虑;
  2. 放大反馈循环;
  3. 实验和学习的文化。

Jones就此原则给出了他在将DevOps引入数据库中所使用的技术。最初的也是基础的一步,是实现并依赖于版本控制系统的使用,例如Git、SVN等。下一步是实现在应用代码中无差别地对待数据库代码。第三步是在版本控制系统中设置并维护一个组织有序的系统,这在某些情况可以是存储应用代码的同一个代码库,但是在某些情况下使用独立的代码库会更好。最后一步是对更改进行代码审查并认真对待。

由于在非开发环境中会有部分的测试更改先于部署执行,Jones推荐所使用的数据集是特别构造,而非从生产数据中抽取。开发(DEV)、用户接收测试(UAT)和预发布测试(STG)等从清空的数据库开始,进而添加表示生产环境用例的10到40行数据。

所有要在生产环境中部署的代码应该以一致的方式完成。如果需要执行一项手工步骤,那么应对这些步骤做完备的文档。一致性是十分重要的,它保证了每个部署总是以同样的方式完成,并且考虑到了一些重要过程,例如单元测试、定义了主键的适用表等。

Jones观察到不成功的变更是很难回滚的,尤其是变更中涉及了数据库。Jones推荐手工编写回滚代码,并且这些代码已在部署到DEV、STG等阶段之前进行了测试,使得工作脚本已准备好加入到所需的事件中。另一个可考虑的技术是使用黑箱部署,其中变更被部署到生产系统,但是使用它们则是通过一个特征标志触发的。这样一个特性在确定可用于一般通用版(GA)之前,它都是非激活的。据Jones介绍,Facebook在推出Facebook Messenger中就采用了这个方法,确保它们的系统可处理预期的用户负载。

查看英文原文: Bringing a DevOps Approach to Databases

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-11/148565.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款