写点什么

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

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

关注

评论

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

助力企业数智化上云跃级提升,云耀X实例柔性算力一直加速一直快

YG科技

助力中小企业一键上云部署,新一代柔性算力云耀X实例展实力

YG科技

Koupleless 单进程多应用如何解决兼容问题

SOFAStack

开源 应用架构 蚂蚁集团 兼容

加速企业云上降本增效,提升性能首选云耀X实例

轶天下事

参与征文赢面试绿通!InfoQ作者享特别福利!

阿里技术

OPPO举办OTalk 开发者交流专场,提供Android 15多元化适配服务

科技热闻

如何让企业上云更省心?云耀X实例一键柔性算力随心配!

轶天下事

引领柔性算力新风潮,加速企业数智转型首选服务器就是它

YG科技

华为云新一代柔性算力服务器,加速企业轻松上云数智化转型

平平无奇爱好科技

什么是网络钓鱼攻击

德迅云安全杨德俊

🐬记一次MySQL执行修改语句超时问题

不在线第一只蜗牛

MySQL 数据库

一文了解龙蜥社区&芯片厂商研发合作模式

OpenAnolis小助手

操作系统 龙蜥社区 合作模式

华为云这款产品性能超越独享实例,企业数字化升级首选!

平平无奇爱好科技

加速中小企业上云更便捷,新一代柔性算力新物种云耀X实例有妙招

轶天下事

一键智能加速跃级体验,云耀X实例带你进入全新智能时代

YG科技

云耀X实例:下一代柔性算力新物种,双倍性能加速跃级体验

YG科技

中小企业上云如何选?华为云这款帮你一键完成性能飞跃提升

YG科技

2024IT市场权威榜单发布!腾讯云TBDS斩获两大奖项!

腾讯云大数据

TBDS

加速企业上云新体验,云耀X实例助力数字化转型开启新风向

平平无奇爱好科技

未来云计算标杆:华为云耀云服务器X实例打造智能安全的数字化解决方案

轶天下事

下一代柔性算力云耀X实例,加速企业上云一键部署新趋势

轶天下事

MeetUp 议题征集!龙蜥邀您共同探索智能可观测运维技术

OpenAnolis小助手

操作系统 系统运维 Meetup 龙蜥社区

业界首款柔性算力新物种,当属华为云新上市的云耀X实例

轶天下事

云手机和模拟器的区别:云手机优势大更防封

Ogcloud

本地手机模拟器 云手机 海外云手机 云手机群控

加速一键智能上云,云耀X实例显真功夫

平平无奇爱好科技

MySQL进阶必须掌握的知识点有这些,我没说错吧。

王中阳Go

golang 数据库 算法 面试题 大厂面经

云耀X实例:柔性算力新物种,性能超越独享型实例

YG科技

京东商家智能助手:Multi-Agents 在电商垂域的探索与创新

京东零售技术

人工智能 agent LLM 企业号 5 月 PK 榜

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