写点什么

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

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

关注

评论

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

兆骑科创高层次人才引进服务平台,创业大赛,云路演

兆骑科创凤阁

代码diff服务改进方案

转转技术团队

测试平台开发 codediff工具

解析 RocketMQ 业务消息--“顺序消息”

阿里巴巴中间件

阿里云 RocketMQ 云原生 消息队列

推荐这几款好用的IDEA插件,一定不要错过

(-0 , +0)

IDEA 插件 8月月更

零基础参加web前端培训薪资怎么样

小谷哥

DPDK性能影响因素分析

C++后台开发

后台开发 虚拟化 DPDK VPP C++开发

CSDN 报告:阿里云容器服务成为中国开发者首选

阿里巴巴中间件

阿里云 云原生 云原生容器

MQTT协议详解及v5.0实践——实践类

阿里云AIoT

物联网 调度 网路协议 网络性能优化 网路架构

尹博学:OceanBase Cloud正式开服,助力全球中小企业数智化升级

OceanBase 数据库

IoT设备消息洪峰怎么扛? 阿里云AIoT消息队列深度解读——实践类

阿里云AIoT

nosql 算法 物联网 存储 消息中间件

北京前端培训学习怎么选择

小谷哥

java程序员培训学习靠谱吗

小谷哥

web前端程序员学习靠谱吗?

小谷哥

袋鼠云思枢:数栈DTinsight,创新升级,全新出发,驶入数智转型新赛道

袋鼠云数栈

OceanBase&ChunJun联合Meetup丨邀您齐聚杭州,共享开源盛会

袋鼠云数栈

案例 | 拯救Larrakia

澳鹏Appen

人工智能 数据库 nlp 语音识别 数据标注

Python自学教程4-数据类型学什么

和牛

Python 测试 8月月更

直播预告|FeatureStore Meetup V4携手第四范式 & 腾讯 & 微软大咖讲师,共探特征平台实践

星策开源社区

微软 腾讯 Feature Store 特征平台 MLOps

开源交流丨批流一体数据集成框架ChunJun数据传输模块详解分享

袋鼠云数栈

EPPlus - 用于 .NET 的 Excel 电子表格

辣么大

Excel net 8月月更

大数据学习好还是自学的效果好?

小谷哥

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路

融云 RongCloud

即时通讯 协议

IoT亿级设备接入层建设实践——实践类

阿里云AIoT

安全 网络协议 物联网 存储 网络架构

A tour of gRPC:08 - gRPC 反射 与 Evans 客户端

BUG侦探

gRPC RPC protocolBuffer

在线医疗 | 眩晕智能语音问诊技术解决方案

擎声科技

RTC 实时音视频 语音通话 在线医疗 擎声Qtt

数字化时代CRM新的发展方向

力软低代码开发平台

兆骑科创双创服务平台,留学生海外创新创业大赛,人才引进

兆骑科创凤阁

Python自学教程3-英语不好,变量怎么命名

和牛

Python 测试 8月月更

运营小能手看过来,龙蜥社区招募 5 名校园大使!(另兑换功能上线啦)

OpenAnolis小助手

龙蜥社区 礼品 开发者激励 校园大使 贡献兑换

社区疫情防控小程序源码

清风

源码 计算机毕业设计

有个大神把牛客网的Java面试笔记在GitHub开源了

收到请回复

大数据 架构 语言 & 开发 开发技术

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