Data+AI时代,如何打造下一代数智平台? 了解详情
写点什么

在数据库中引入 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:002153
用户头像

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

关注

评论

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

前端动效讲解与实战

vivo互联网技术

前端 SVG 动效

牛客网扫地僧开源出来的《Java面试无敌流笔记》,Github上线两天就爆火

Geek_0c76c3

Java 数据库 开源 程序员 架构

Flowable 流程部署与删除

江南一点雨

Java springboot flowable

react hook 源码完全解读

flyzz177

React

N1盒子openwrt+dogcom实现大学校园网的自动登录开启路由

知识浅谈

9月月更

这些js手写题你能回答上来几道

helloworld1024fd

JavaScript 前端

监控平台SkyWalking9入门实践

Java 架构 Skywalking

Chrome操作指南——入门篇(十四)drawer

Augus

Chrome开发者工具 9月月更

故障转移和恢复

源字节1号

软件开发 后端开发

React Context源码是怎么实现的呢

flyzz177

React

【荣耀帐号服务】手把手教你快速Android应用接入

荣耀开发者服务平台

开发者 服务 安卓 应用 honor

从0到1带你搭建一个vue3.0项目(vue-cli脚手架版)

言程序

前端 vue3.0 9月月更

开发者有话说|我的前端开发感悟

言程序

个人成长

MFC|实现自定义复选框效果

中国好公民st

c++ 控件 9月月更

Chrome操作指南——入门篇(十五)monitor

Augus

Chrome开发者工具 9月月更

《DevOps工具链的国产化之道》直播报名开始啦!

嘉为蓝鲸

DevOps IT 工具链 研发

基于 Apache Hudi 极致查询优化的探索实践

华为云开发者联盟

大数据 后端 华为云 企业号九月金秋榜

谷歌也开始裁员!谷歌CEO说出理由让人惊叹

雨果

裁员 谷歌 互联网裁员

20道常被问到的JavaScript题目

helloworld1024fd

JavaScript 前端

详解JS中 call 方法的实现

华为云开发者联盟

Java 前端 企业号九月金秋榜

Java面试题大全(整理版)1000+面试题附答案详解最全面看完稳了

钟奕礼

Java 面试 java; Java 面试题

Vue入门指北——modifier

Augus

Chrome开发者工具 9月月更

前端线下培训学习适合哪些人群

小谷哥

docker的/var/run/docker.sock参数

程序员欣宸

Docker Docker 镜像 9月月更

开发者有话说|我的前端开发感悟

言程序

个人成长 程序人生

一文带你全面了解什么是颠覆时代的Web3.0未来互联网

echeverra

Web3.0

隐私计算唯一代表厂商!洞见科技入选《爱分析·数据智能厂商全景报告》

洞见科技

java培训学习应该注意什么?

小谷哥

太强了!阿里p8大佬干了半个月总结的《Alibaba分布式系统速成笔记》正式开源

Geek_0c76c3

Java 数据库 开源 程序员 架构

Python基础(五) | 函数及面向过程编程详解

timerring

Python Monad 9月月更

深圳大数据培训哪家教的好

小谷哥

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