写点什么

在数据库中引入 DevOps 方法

  • 2017-11-12
  • 本文字数:984 字

    阅读完需:约 3 分钟

今天(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

2017-11-12 18:002247
用户头像

发布了 391 篇内容, 共 151.0 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试 | 测试开发 | Python 自动化测试(四):数据驱动

测吧(北京)科技有限公司

测试

Python 测试开发实战进阶,技能对标阿里 P6+,挑战年薪 50W+!

测吧(北京)科技有限公司

测试

Java进阶(三十七)java 自动装箱与拆箱

No Silver Bullet

Java 9月月更 自动装箱 拆箱

国庆节,零代码帮你搞定假期美食菜单,体验赢定制好礼

华为云开发者联盟

人工智能 企业号九月金秋榜

vue项目性能优化-前端加分项

bb_xiaxia1998

Vue

面向对象设计原则,历久弥新

有态度的马甲

小程序化:系统集成行业降本增效的破局思考

FinClip

互联网进入存量博弈时代,小程序技术创造移动应用新机遇

FinClip

finclip

透视星环科技上市:基础工具、技术融合、场景应用三维击穿

易观分析

数据

软件测试 | 测试开发 | Junit5 架构、新特性及基本使用(常用注解与套件执行)

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Pb协议的接口测试

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | PageObject(PO)设计模式在 UI 自动化中的实践总结(以 QQ 邮箱登陆为例)

测吧(北京)科技有限公司

测试

一道React面试题把我整懵了

beifeng1996

React

禅道项目管理软件App使用

禅道项目管理

项目管理 App 禅道

sentinel-dashboard-apollo 1.8.5 发布,支持 apollo 持久化的定制版

铁匠

UI 自动化测试应不应该投入?有没有前途?怎样做最明智?

测吧(北京)科技有限公司

测试

Java中Interface天天都在写,你知道其背后的原理是什么吗?

wljslmz

Java 接口 9月月更

仅需30行代码,轻松集成HMS Core视频编辑服务屏幕录制能力

HarmonyOS SDK

编辑 视频

面试官让你说说react状态管理?

beifeng1996

React

P5~P9应该具备的核心能力是什么

博文视点Broadview

一键实现设备高稳定高安全管理——设备管理运维类

阿里云AIoT

分布式数据库 安全 监控 物联网 存储

软件测试 | 测试开发 | Python 自动化测试(三): pytest 参数化测试用例构建

测吧(北京)科技有限公司

测试

【web开发基础】PHP快速入门(5)-PHP运算符之算术运算符和字符串运算符详解

迷彩

运算符 php开源 9月月更 web开发基础 算术运算符

大数据ELK(八):Elasticsearch安装IK分词器插件

Lansonli

ES 9月月更

源码学习之MyBatis的底层查询原理

京东科技开发者

Java sql 源码 mybatis mybatis源码

orbeon form 通过 url 的方式同第三方应用集成的开发明细

汪子熙

Java SAP commerce form 9月月更

Ohos-MPChart——支持多种图表绘制的组件

OpenHarmony开发者

OpenHarmony

new Vue的时候到底做了什么

bb_xiaxia1998

Vue

软件测试 | 测试开发 | UI 自动化测试实战(二)| 测试数据的数据驱动

测吧(北京)科技有限公司

测试

从URL输入到页面展现到底发生什么?

loveX001

JavaScript

keep move!滑动窗口中位数与滑动魔方

掘金安东尼

算法 9月月更

在数据库中引入DevOps方法_DevOps & 平台工程_Jeff Martin_InfoQ精选文章