写点什么

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

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

关注

评论

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

ZEGO 最后一公里网络传输的容灾及优化方案

ZEGO即构

后台开发 容灾 最后一公里

1.8图数据库是什么?我为什么要关注它?

Geek_古藤模根

图数据库 Gremlin

【直播回顾】OpenHarmony 3.1 Release版本南北向关键能力解读

OpenHarmony开发者

OpenHarmony 直播回放

java培训:java流中的异常处理方法分享

@零度

JAVA开发 java流

最受欢迎的5种编程语言各有什么特点或优点?

源字节1号

软件开发 后端开发 编程语言、

源码级别的广播与监听实现

阿Q说代码

spring源码 实战 监听 4月月更 广播

GPU底层技术、全球市场格局分析

Finovy Cloud

人工智能 云计算 云服务器 GPU服务器 GPU算力

视频画质增强最优解:微帧科技视频超高清引擎

微帧Visionular

计算机视觉 视频增强 电影修复

低代码实现探索(四十)前端全局配置

零道云-混合式低代码平台

Android C++系列:C++最佳实践3继承与访问控制

轻口味

c++ android ndk 4月月更

助力 60+ 市区管理建设,TDengine 联手数字政通打造智慧城市平台

TDengine

数据库 tdengine 时序数据库

如何撰写出有效的帮助文档内容?

小炮

帮助文档

大型IM系统有多难?万字长文,搞懂异地多活!

BeeWorks

自己动手写Docker系列 -- 6.1 ip分配管理

Go Docker 4月月更

Linux驱动开发-编写按键驱动

DS小龙哥

4月月更 Linux驱动

TiUP:TiDBAer 必备利器

PingCAP

TiDB

OpenHarmony 3.1 Release正式发布,标准系统全方位升级!

叶落便知秋

Apache ShardingSphere 5.1.1 正式发布

SphereEx

Apache 数据库 开源 ShardingSphere SphereEx

找工作,你被“卷”到了吗?

InfoQ写作社区官方

招聘 就业 热门活动 拉勾招聘

CentOS 停止维护,一文看懂升级迁移路径

亚马逊云科技 (Amazon Web Services)

Tech 专栏

[Day15]-[动态规划]鸡蛋掉落

方勇(gopher)

LeetCode 动态规划 数据结构与算法、

深入解析JVM-类加载机制

janyxe

Java JVM 类加载器 双亲委派 类加载机制

web前端培训如何使用CSS连接数据库

@零度

CSS 前端开发

大数据培训经典SQL面试题解析

@零度

sql 大数据开发

我,机器学习工程师,决定跑路了

OneFlow

机器学习 深度学习 AI 程序人生 MLOps

Pipy 性能基准测试的思考与实践

Flomesh

代理 benchmark Pipy

大咖实战|Kubernetes自动伸缩实现指南分享

云智慧AIOps社区

Docker 云计算 Kubernetes 容器 云原生

API 分页探讨:offset 来分页真的有效率吗?

爱好编程进阶

Java 面试 后端开发

client-go实战之五:DiscoveryClient

爱好编程进阶

Java 面试 后端开发

1.6 TinkerPop 3.4简述

Geek_古藤模根

图数据库 Gremlin

1.9 术语简介

Geek_古藤模根

图数据库 Gremlin

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