写点什么

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

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

关注

评论

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

架构师的成长之路

华章IT

CTO 架构师 架构师之道

计算机网络基础知识总结

苹果看辽宁体育

计算机网络 计算机

技术实践丨GaussDB(DWS)运维管理功能“升级”的原理和使用

华为云开发者联盟

运维 数据 集群

十七、深入Python异常处理

刘润森

Python

分布式系统设计理念这么难学?

架构师修行之路

分布式 微服务

诸多老牌数据仓库厂商当前,Snowflake如何创近12年最大IPO金额

华为云开发者联盟

数据仓库 数据 存储

架构训练营 - 第4周课后作业 - 学习总结

Pudding

有了容器为什么kubernetes还需要Pod?

架构师修行之路

分布式 微服务 pod kubernete

让AI人才在产业界闪闪发光:百度之星的“神奇滤镜”是怎样炼成的?

脑极体

第12周学习总结

Vincent

极客时间 极客大学

据说99.99%的人都会答错的类加载的问题

AI乔治

Java 架构 JVM 类加载 性能调优

微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

AI乔治

Java 架构 微服务 ,docker

关注你自己,如同篮球巨星一样,让身体最佳化,持续投入最爱的事情。

叶小鍵

健康 科普 王立铭 肥胖

GO 类型接口及反射间的转换

superman

Go 语言

“一个APP竟然可以适配这么多设备?!”《优酷响应式布局技术全解析》开放下载

破绽

阿里巴巴 阿里云 开发者 优酷 电子书

架构师训练营 - 第 4周课后作业(1 期)

Pudding

CloudQuery v1.1.1 修复版本发布

BinTools图尔兹

数据库 sql 安全 工具软件

Java Reference核心原理分析

AI乔治

Java 架构 JVM 性能调优

NET-Core中的配置文件操作

为体验更多

C# .net .net core ASP.NET Core

第12周作业

Vincent

极客时间 极客大学

从分布式到微服务成长手册,助我面试跳槽斩获字节Offer

Java架构追梦

Java 学习 架构 面试 微服务

甲方日常 33

句子

工作 随笔杂谈 日常

“区块链技术创新要植根市场”

CECBC

金融科技 信息安全

LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(四)

陈泽云

人工智能 大数据 数据结构 操作系统 数据存储

云计算简史(上)- 15分钟读完15年

明道云

京东智联云MySQL数据库如何保障数据的可靠性?

京东科技开发者

MySQL 数据库

考研须知

时间是一个人最好的证明

考研

第19届亚运会门票采用区块链技术防伪

CECBC

区块链技术 防伪 溯源

websocket 是怎么连接的

程序员与厨子

nginx 网络 HTTP websocket

5G时代音视频开发王器:WebRTC

华章IT

flutter 音视频 WebRTC React Native

“区块链×多方计算”解决众多难题 将成区块链应用新场景

CECBC

区块链 数据融合

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