AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

在 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:001725
用户头像

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

关注

评论

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

即时通讯的原理和历史

v16629866266

高频量化交易机器人系统开发技术

薇電13242772558

区块链 策略模式

京东T7团队技术4面:线程池+索引+Spring +分布式锁+Mysql+项目等

Java架构之路

Java 程序员 架构 面试 编程语言

大作业(二)

橘子皮嚼着不脆

HDFS SHELL详解(2)

罗小龙

hadoop 28天写作 hdfs shell

惊艳!四份SpringSecurity笔记带你玩转金三银四的面试题集!

996小迁

Java 架构 面试 springsecurity 笔记

架构师训练营 1 期:大作业(二)

piercebn

架构师训练营第 1 期

极客时间架构 1 期:大作业一 根据业务编写指定输出系统概要设计

Null

[0/28]软件质量的那点事(1)———引言

L3C老司机

软件测试 软件质量

同城快递系统架构

Jacky.Chen

价值 - 风险管理(二)

石云升

读书笔记 风险管理 28天写作 价值

最新区块链科普图书《区块链进化史》上市

CECBC

区块链 科普

【JS】函数实参与形参

德育处主任

JavaScript 大前端 js 28天写作

去中心化DAPP系统APP开发|去中心化DAPP软件开发

系统开发

极客时间架构 1 期:大作业二 学习大总结

Null

有技术和落地,区块链才能创造价值

CECBC

区块链

智慧城市发力,区块链助力土木建设数据存储

CECBC

土木建设

太过完美!滴滴全球首发Spring5+SpringMVC5+Mybatis3.X全彩小册

Java架构追梦

Java 源码 架构 滴滴 ssm

强!腾讯老兵亲荐“从零开始学架构”教你如何成为出色的架构师?(整整2000页的笔记)

比伯

Java 编程 架构 面试 程序人生

DeFi去中心化DAPP系统开发的知识科普

W13902449729

去中心化金融 DeFi去中心化系统开发

金三银四将至!我肝了万字的Java垃圾回收,看完你还敢说不会?

编程 面试 JVM

智能合约DAPP软件APP开发|智能合约DAPP系统开发

系统开发

能上能下

张老蔫

28天写作

Java并发编程实战(2)- Java内存模型

技术修行者

Java 并发编程 happens-before 多线程

别小看 Log 日志,它难住了我们组的架构师

Java架构师迁哥

面试大揭秘!从技术面被“虐”到征服CTO,全凭这份强到离谱的pdf

Java架构之路

Java 程序员 架构 面试 编程语言

重学JS | 聊聊闭包

梁龙先森

大前端 编程语言 28天写作

大作业二

fmouse

架构师训练营第 1 期

搭建自己的MinDoc文档库

后台技术汇

28天写作

大作业(一)

橘子皮嚼着不脆

APICloud AVM多端开发 | 企业app开发解析:案例展示、加盟申请功能源码

YonBuilder低代码开发平台

大前端 小程序flutter, 跨平台 APICloud

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