写点什么

在 DevOps 中以 API 看待共享数据库

  • 2017-10-15
  • 本文字数:1223 字

    阅读完需:约 4 分钟

WinOps 2017 大会上,Sabin.io 首席顾问 Simon Sabin 做了一个演讲,介绍如何将数据库更改加入到持续部署模型中。从数据库所有者的角度看,要实现在多个服务或应用间共享数据库,关键之一就是将这些共享数据库看成是API。

Sabin 建议考虑使用视图、触发器和存储过程等机制。它们可以更改数据库的内部结构,并同时保持向后兼容的应用数据操作。他举了一个例子,一个存储信用卡号的数据库表已经从纯文本改为被加密的,但要保证应用依然以纯文本方式检索卡号。例子中是通过查询视图实现的,而实际的数据库表通过触发器实现信息的加密和解密。处理结构如下图所示:

数据库向应用提供隐式的合约和接口,其中数据库的内部更改(通常出于性能、安全和其它一些改进的需要)不应该影响到应用。这一原则可以类比为 API,突破性更改同样遵循最小化原则,并应给出大量的通知信息,保证应用在实际数据更改之前采纳和部署前向兼容更改。对数据库应用消费者驱动合约,这样的方法是可延展的。

按Sabin 的说法,需要这一方法去调和对共享数据库的不同视角。应用开发人员总是将数据库看成是“沉默的存储”,而数据库管理员(DBA)则将数据库看成是关键业务数据的仓储之所。理想情况下,每个应用团队会有自己的数据库,团队中也应具有DBA 角色,但这通常难以达到。

当应用本身就需要模式或其它更改时,Sabin 建议降低批处理的规模(因为在数据库中实现可靠性和一致性是一个复杂的任务),一次应用一个小更改,并更改相应的应用代码。选取何种迁移机制,是金模式(Gold Schema)还是迁移脚本方式,依赖于更改的具体类型。在Sabin 看来,相比于对抗式的,这一机制更多是补充式的。对于模式更改,适用于金模式机制。金模式定义了目标模式(期望状态),并使用类似于 SQLCompare 这类的工具做了当前状态和期望状态间的“差异比较”。迁移脚本包括 DBDeploy Flyway ReadyRoll 等,该机制可能更适用于更复杂的修改。

Sabin 还推荐了其它一些方法,包括:指定数据库去适合自身工具而非其它方法,将部署信息添加到数据库自身中以便于追踪和诊断问题,将数据库更改作为交付流水线一部分看待以提升可审校性和合规性。演讲的最后,Sabin 建议使用区分在“私有”和“公开”的方法极大地改进数据安全(在持续发生关键数据泄漏时)。例如,让一个可访问(“公开”)的小型数据库中提供对较大规模的安全(“私有”)数据库的视图,而“私有”数据库是不应被应用本身直接访问的。

正如 DevSecOps 运动是经过一段时间后才得以确立,将数据库更改加入到集成持续部署过程中的理念业已存在一段时间了,并被冠以各种称法。Sabin 将其称为“Data DevOps”,也有人将其称为“数据库生命周期管理”(DLM,Database Lifecycle Management)。另一位WinOps 2017 大会演讲者 Eduardo Piairo ,指出:

DevOps 并非是要定义一个处理数据库更改的新过程,而是将数据库更改和应用及架构代码一并集成到服务生命周期中。

查看英文原文: Treating Shared Databases Like APIs in a DevOps World

2017-10-15 19:001570
用户头像

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

关注

评论

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

云原生 + AI 时代已至,大数据底座何去何从?

Kyligence

hadoop 云原生

打造合规数据闭环,加速自动驾驶技术研发

百度开发者中心

自动驾驶 人工智能’

使用element-ui 的上传组件upload完成自定义上传到天翼云oss云服务器

天翼云开发者社区

DevData Talks | 对谈谷歌云 DORA 布道师,像谷歌一样度量 DevOps 表现

思码逸研发效能

研发效能

深入理解跳表及其在Redis中的应用

京东科技开发者

redis 数据结构 算法 跳表 链接

chatGPT接入微信公众号方法总结(纯聊技术)

特立独行的猫

微信 ChatGPT 公众号接入

2023“Java基础-中级-高级”面试集结,已奉上我的膝盖

程序知音

Java java面试 金三银四 后端技术 Java面试八股文

HTML性能优化-Prerender2.0机制解读

百度Geek说

html API 企业号 2 月 PK 榜

跨越声音障碍,虚拟数字人「手语翻译官」开发落地实践

阿里技术

人工智能 数字人 虚拟人 技术温度

长沙等保测评公司有哪些?现在有新增吗?

行云管家

等保 等级保护 等保测评 长沙

JS语法让人困惑的点 “==与===”

葡萄城技术团队

领跑政务云市场!天翼云持续深耕政务云建设

天翼云开发者社区

更轻量的百度百舸,CCE Stack 智算版发布

百度开发者中心

云计算平台 百度百舸

A/B测试成为企业“新窗口”:增长盈利告别经验主义,数据科学才是未来

字节跳动数据平台

大数据 AB testing实战 企业号 2 月 PK 榜

模块7作业

程序员小张

「架构实战营」

火热报名 | DockQuery 1.2 beta版本体验官开启招募!

BinTools图尔兹

数据库 协作 研发 体验官

有奖调研!第五期(2022-2023)传统行业云原生技术落地调研——金融篇

York

容器 微服务 云原生 问卷调研

职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!

葡萄城技术团队

10 分钟搭建自己的专属 ChatGPT

FinClip

共铸国云智领未来| 装上“数智”引擎,助力汽车生产跑出“加速度”

天翼云开发者社区

免费领取丨精算与金融建模行业解决方案白皮书,不要错过!

葡萄城技术团队

基于鲲鹏DevKit原生开发光伏智能巡检平台,性能提升44%

Geek_2d6073

天翼云iBox边缘盒子四大优势,让人工智能在边缘侧“狂飙”

天翼云开发者社区

PostgreSQL:进程结构

天翼云开发者社区

全球首个云渗透测试认证专家课程发布!腾讯安全领衔编制

腾讯安全云鼎实验室

云安全

微服务架构中的多级缓存设计还有人不懂?

小小怪下士

Java 程序员 架构 微服务

云管理行业标杆产品有哪些品牌?大家重点推荐哪家?

行云管家

云计算 云服务 云管理 云管

MQTT协议Keep Alive详解

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 半连接

MQTT遗嘱消息(Will Message)的使用

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 遗嘱消息

移动应用程序开发新趋势

没有用户名丶

Zebec生态持续深度布局,ZBC通证月内翻倍或只是开始

鳄鱼视界

在DevOps中以API看待共享数据库_数据库_Manuel Pais_InfoQ精选文章