NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

推动GameFi走向新叙事的Smart Finance,成为火必投票竞选项目

股市老人

Portraiture4人像智能磨皮插件下载亲测可用

茶色酒

Portraiture2023 Portraiture

如何让你的架构设计应用做到高内聚、低耦合?

风铃架构日知录

Java 程序人生 后端 架构设计 后端开发

推动GameFi向2.0时代演进的Smart Finance,正在成为火必投票上币竞选项目

EOSdreamer111

如何告别丑陋判空?一个Optional类就能搞定!

风铃架构日知录

Java 程序员 程序人生 后端 码农

如何使用Gradle构建一个多模块项目?

风铃架构日知录

Java 程序员 后端 码农 架构师

分享 7 个VUE项目用得上的JavaScript库

devpoint

JavaScript Vue 前端开发 前端开发框架

Python专属搜索引擎!又一款Python库学习神器?

Jackpop

Git遇到冲突?解决也太简单了!

Jackpop

8.3K Star!这才是我们苦苦寻找的PDF阅读器。。。

Jackpop

2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由0、1组成的数组arr,长度为N, arr[i] == 0表示str中i位置的字符不许修改, arr[i] ==

福大大架构师每日一题

算法 rust Solidity 福大大

EditText(输入框)详解

智趣匠

android edittext 输入框设计 文本框(TextView)

干掉 “重复代码”,这三种方式绝了!

风铃架构日知录

Java 程序员 码农 工程师 代码

你知道微服务架构中的“发件箱模式”吗

JAVA旭阳

Java 架构

Flutter Hero 动画组件的飞行过程显示控制

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

一加11:新的赛场,“不温和”的答卷

脑极体

高并发系统设计的15个锦囊

小小怪下士

Java 程序员 系统设计 高并发

8 个很酷的 GitHub 技巧

devpoint

GitHub vscode 开发技巧

Github上有什么好的unity开源项目?

Jackpop

分享 7 个不错的 AI 工具

devpoint

人工智能 AI openai

Apipost接口自动化测试功能详解

测试人生路

Postman 自动化测试 接口自动化测试

创作技术博客以来的一些成就

嵌入式视觉

知乎 博客 CSDN 博客园

CMD有哪些有趣的命令?

Jackpop

Java学习者看过来!这些优质项目千万别错过

Jackpop

好家伙!阿里最新SpringBoot进阶笔记涵盖了SpringBoot所有骚操作

程序员小毕

程序员 后端 ssm springboot java面试

连续四年发布科技趋势预测,他们在探索中国科技的“主干道”

脑极体

Smart Finance成为火必投票竞选项目,参与投票获海量奖励

鳄鱼视界

性能测试技术笔记(三):如何设计一个压测平台

老张

性能测试 压测平台

使用 OpenAI ChatGPT 进行了编码尝试

devpoint

人工智能 openai ChatGPT

数字人民币创新浪潮来袭,支付机构如何“乘风破浪”?

易观分析

金融 数字人民币 数字支付

用 SwiftUI 实现 AI 聊天对话 app - iChatGPT

37手游iOS技术运营团队

ios SwiftUI openai ChatGPT

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