写点什么

DevOps 在数据库开发中的实践

  • 2014-01-16
  • 本文字数:2126 字

    阅读完需:约 7 分钟

Michael Huttermann 是一位经验丰富的软件工程师,在 DevOps 和数据库开发方面有着独到的见解,他通过自己的实践描述了DevOps 在数据库管理方面的应用,值得借鉴。

DevOps 一词描述了开发团队和运维团队之间改进的协作。它描述了简化软件交付流程的实践,强调从产品到开发的流动反馈中学习,并缩短循环时间(也就是从启动到交付的时间)。 Michael 指出,DevOps 不仅能让你交付软件过程更加快捷,还能帮助生产更高质量的软件,这些软件能够更好的满足个体需求、也更符合基本情况。

DevOps 寻求开发团队和运维团队之间共同的目标、概念和工具,致力于通过共同目标、概念、工具来提高开发团队和运维团队间的协作。 DevOps 降低了组织障碍。通过“一个团队方法”,敏捷实践可以扩展到运维部门。来自开发团队和运维团队的专家现在都是“开发者”了,这意味着他们可以一起工作来“开发”解决方案。

DevOps 包含许多活动和方面,包括:

  • 文化。强调人超过过程和工具。软件是人开发的,也是为了人开发的。
  • 自动化。自动化是 DevOps 迅速获得反馈的关键。
  • 测量。DevOps 为测量制订了特殊的方法。质量和共享(至少是一致的)激励是必要的。
  • 共享。共享构建了一个合作的平台,通过这个平台可以交换想法、知识和经验。

开发团队和运维团队间常常存在一些纷争,引起这些纷争的主要原因如下:

  • 不同的目标:开发团队追求短时间内做出更多改变;运维团队希望产品少一些改变,多一些稳定性。
  • 不同的流程和概念:开发团队采用重实效的方法;运维团队更注重方法的可重用性。
  • 不同的工具:开发团队使用开发工具;运维团队采用类似产品的方法。

Michael 指出,在传统的设置中,开发一词描述的主要是开发团队的程序员。测试人员也是团队中的一部分,但他们通常有专门的项目角色,而且他们常常是在程序员完成编程工作后才开始自己的工作的。运维一词指包括数据库管理员、系统管理员、网络管理员和其它各种管理员在内的团队。这些专家将软件投放到生成并且管理产品的基础设施(例如,设置和维护服务器和系统)。运维团队实际上会跟随到交付流程直到“最后一步”。在障碍重重的环境下, 两个开发团队形成了两个孤岛, 他们有自己的优化的目标和过程、工具。

软件开发人员可以应用包括连续提交和自动测试在内的持续集成,此外,他们也应用面向目标环境的商业应用程序持续部署。但是数据库开发者往往缺乏对真实数据库版本控制和持续部署的基础。应用程序开发 / 部署和数据库开发 / 部署间的主要差异导致了这些隔阂。传统上讲,应用程序开发基于本地文件,只有在提交时才会发布本地变化。开发人员可以在本地修改、调试代码,同时不影响团队其它成员的工作。而部署工作则是通过自动复制从构建服务器到各自环境的交付结果进行的。

另一方面,数据开发常常是基于核心资源的。尽管在许多情况中,核心数据库可以通过本地开发数据库或个人模式提供孤立的、高效的工作环境。除此之外,数据库部署不是简单的复制和替换过程。例如,一个数据库表不能被简单的删除,然后再由新结构重新创建。数据库部署往往不存在两个完全相同的部署,因为源文件或者目标文件往往被旧的或者新的部署修改或者更新。

在软件工程中,数据库常常是关键路径。Michael 认为,在定义和推出数据库 DevOps 时,区分四个区域将对我们十分有帮助。图 1 展示了 DevOps 区域矩阵方法。

  • 区域 1 是将开发扩展到运维。在数据库内容中的一个常见用例是将脚本转换放到版本管理系统,并在开发工作和运维工作中使用相同的数据库移植工具——如 Flyway。
  • 区域 2 是将运维拓展到开发。对于数据库 DevOps,这意味着为产品系统中的交互提供能见度,包括行级锁、阻塞查询和资源竞争。
  • 区域 3 将开发嵌入到运维中。这种例子包括为非功能性需求设置限制和共同目标。共同目标:如 80% 的数据库查询操作会在 2 秒内将查询结果返回到屏幕上(一个共同的性能目标);系统不应当使用任何将导致此系统难以移植到另一个 Linux 版本上的技术(一个共同的可移植性目标);数据库在指定的硬件上可以存储两千万成员,同时仍能满足性能目标(一个共同的容量目标);或者自动测试必须存在于包括基础设施代码在内的所有部门(一个共同的可维护性目标)。
  • 区域 4 将运维嵌入到开发中。这一区域提供了获得数据库管理员们(DBAs)未参与的开发的信息的权限,防止 DBAs 成为看门人,通过完成这一区域可以加强合作。

Michael 认为,一个稳健的数据库变更管理解决方案是克服日常挑战的最有效的方式。通过使用诸如版本控制、持续集成、自动操作的特性,数据变更管理使 DBA 和开发者之间可以更好地交流、合作,这避免了潜在的问题——意外冲突、覆盖等等——当他们分开工作时这些问题都可能出现。而这个稳健的数据库变更管理解决方案也将从 DevOps 策略中得到更多回报。Michael 认为,下面的模式可能帮助促进 DevOps,特别是数据库 DevOps。包括:

  • 使用数据库更新脚本。通过 DevOps,数据库元素可以伴随更新脚本自动发布。
  • 自动发布数据库。自动发布数据库面临的一个更难的挑战是链接当前版本的数据库(也就是当前的结构元素,如表和列,和数据),换句话说,在它的当前状态——和其它构成完整版本的东西的当前版本。通过保证数据库元素在版本控制下,你可以创建标签并把你的所有配置项添加到定义好的库中。
2014-01-16 06:081989
用户头像

发布了 501 篇内容, 共 278.3 次阅读, 收获喜欢 63 次。

关注

评论

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

别让算力掉队:AI架构里被忽视的关键一环

ScaleFlux

企业级存储 定制化芯片 AI基础架构

AI 代码生成工具的未来:飞算 JavaAI 如何定义新标准?

飞算JavaAI开发助手

无需云服务器、无需公网IP,轻松实现门禁系统远程接入与数据同步

贝锐

内网穿透 智能门禁

AI电视里的达摩

脑极体

AI

后知后觉!要是大学就有这些 AI 工具,我能多拿多少奖学金

飞算JavaAI开发助手

分布式高性能Java架构设计:高可用+低延迟+弹性扩展的架构范式与生产级方案及Java架构:核心原理与案例实战!

程序员高级码农

Java Java 面试 高性能

“陆海空”立体组网!福建移动助力鹭岛打造5G-A全面示范之城

极客天地

最火向量数据库Milvus安装使用一条龙!

王磊

API 即 MCP|Higress 发布 MCP Marketplace,加速存量 API 跨入 MCP 时代

阿里巴巴云原生

阿里云 云原生 MCP

4.29 时序分析与模型直播详解,从功能到应用的全面科普!

Apache IoTDB

运维实战来了|手把手教你构建 YashanDB 的 Prometheus Exporter

数据库砖家

数据库·

【重磅】敲敲云桌面版正式发布!

JEECG低代码

零代码 桌面应用 敲敲云

甲方急要「商品查询 + 订单接口」!飞算 JavaAI 一键生成标准 Controller 代码

飞算JavaAI开发助手

为什么 80% Java 新手卡在业务逻辑?AI 代码生成工具实测解忧

飞算JavaAI开发助手

BeeWorks Meet:私有化部署视频会议的高效选择

BeeWorks

即时通讯 IM 私有化部署

聚力共赢:超聚变联合枫清科技,构建“算力底座+知识中台”企业智能化新引擎

Fabarta

人工智能 #大模型

基于华为开发者空间定制C/C++开发环境镜像

华为云开发者联盟

,华为云 华为开发者空间

抖音集团电商流量实时数仓建设实践

Apache Flink

大数据 flink 实时计算 实时数仓

YashanDB 知识库|数据库明明在线,yasboot 却显示“off”?其实是启动方式不对

数据库砖家

数据库·

为什么说BeeWorks即时通讯(IM)系统适合金融行业使用?

BeeWorks

即时通讯 IM 私有化部署 企业级应用

深入解析淘宝商品详情 API 接口:功能、使用与实践指南

tbapi

淘宝API 淘宝商品详情API接口 淘宝商品数据采集 天猫商品详情API接口

视频丨Google 最新 AI 眼镜原型曝光:轻量 XR+情境感知 AI 打造下一代计算平台

声网

Rime 最新 TTS 模型 Arcana:能听到呼吸声和轻微口腔音;Bubba AI:专为卡车司机打造的语音交互智能体丨日报

声网

YashanDB 知识库|如何回收表空间?高水位线是关键!

数据库砖家

数据库·

2025 Java 开发避坑指南:如何避免踩依赖管理的坑?

飞算JavaAI开发助手

怎么在线制作数据看板?3个看板软件大盘点!

职场工具箱

项目管理 职场 数据看板 看板软件 在线看板工具软件

全网首测!三大 AI 编程工具生成 SpringCloud 代码对比

飞算JavaAI开发助手

英特尔2025年Q1营收127亿美元,数据中心与AI业务可圈可点

E科讯

观测云数据在Grafana展示的最佳实践

观测云

Grafana

如何成功防护T级超大流量的DDoS攻击

网络安全服务

CDN 服务器 DDoS 高防服务器 高防IP

YashanDB 知识库|数据误删别慌!一文教你搞定“表闪回”

数据库砖家

数据库·

DevOps在数据库开发中的实践_DevOps & 平台工程_崔康_InfoQ精选文章