发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

精益机器:将敏捷思维引入数据库开发

  • 2015-10-08
  • 本文字数:3779 字

    阅读完需:约 12 分钟

多年来,敏捷实践携短迭代、快发布、更快推出软件的承诺一直吸引着应用程序开发人员。现在,同样的做法已经进入数据库领域,但是,数据库开发团队该如何采用那些做法,他们应该从哪里开始?在本系列文章的第 1 部分(共 2 部分)中,Matt Hilbert 阐述了如何从版本控制入手将敏捷思维引入数据库开发。

敏捷号称无所不在。开发人员喜欢它,因为它简化了流程,改进了软件质量,实现了重复工作的自动化,并支持持续交付,使他们可以将精力集中在他们擅长的事情上:编码。

许多公司喜欢它,因为就像 Puppet Labs 发布的《 2014 年 DevOps 现状报告》所显示的那样,那些使用类似敏捷方法的企业,其利润、市场份额和生产率目标都超出了两倍。

Gartner 甚至将将敏捷软件开发列入了 2015 年十大高科技趋势,将其视为数字经济的驱动力之一。

但这对数据库开发人员和管理人员意味着什么?他们无法承受匆忙随意地数据库变更。默认情况下,他们需要事先做大量设计。

由于整个的数据库开发过程都比较谨慎、缺少敏捷性,所以将敏捷实践(如持续交付和自动化费力的任务)应用于数据库开发过程是一个真正的技术挑战。敏捷意味着向现有的做法中引入新技术、陌生的流程和没有使用经验的工具,同时也意味着,在现有的部署方式已经够用的情况下,冒着风险更快、更频繁地部署。

是那样吗?将敏捷思维应用于数据库开发,开发过程会更简洁、更迅速,浪费更少,质量由开发过程保证,可以避免后续许多部署问题。

游戏规则已经变了

事实是,敏捷和持续交付已经像野火一样席卷了应用程序开发领域,数据库开发领域也出现了许多敏捷活动。这是一种很自然的扩展,因为业务快速变化,功能发布速度需要加快,而数据库不能成为瓶颈。

在数据库开发、测试和部署方面,有一些工具和流程可供采用,而且可以同应用程序开发所使用的工具和流程一起使用。将数据库视为另外一部分源代码,并采用敏捷实践,数据库生命周期管理(DLM)会变得更简单。

使用方法正确的话,DLM 可以减轻数据库管理员(DBA)的负担,简化和加速测试过程,将偶尔的、让人满怀担忧的大规模部署转化成简单安全的频繁部署。

同时,它将 DBA 的角色由看门人转变成推动者,前者有时候会被认为阻碍了部署,而后者却让部署更简洁。

那是个很大的变化,或许有些出人意料,开始实施敏捷还是比较简单的。

统一所有人的思想

第一步是考虑协作,而不是竞争。在关于 DevOps 的著名小说 _ The Phoenix Project _ 中,对于应用程序开发人员和 DBA 之间的分化,主角 Bill Palmer 有一段精彩的评论:

你不能仅仅把猪从墙头扔给我们,然后就在停车场互相击掌庆祝你们如何在最后期限到来前完成了任务。Wes 告诉我们,猪可能摔断了腿,而为了让它活下来,我的人就需要没日没夜没周末地工作。

这种分化是不必要的——在数据库开发中采用敏捷思维,这种分化将不复存在。目标是实现更小更频繁的发布,开发和运营团队互相交流,并且总是在较大的问题上进行协作:提供高质量的软件。例如,运营团队会事先强调,建议的变更会对数据库产生什么影响以及为开发人员带来什么后果。

Moneysupermarket.com 数据架构师 David Poole 赞同这种观点。在文章《 DBA 和开发人员比较:无谓的冲突导致了悲伤的故事》,他在结论部分写道:“经验告诉我,当开发人员和 DBA 一起很好地合作时,他们不只是增加了彼此的效率;他们的效率翻倍了。”

选择恰当的工具

第二步是要记住,敏捷意味着改进工作方式。这不是说引入工具强制执行变革,将严苛、陌生的规则、工具和流程强加给每个人。相反,它要求以更好的方式使用现有的工具,就像 Alex Kuznetsov 在《六年敏捷数据库开发的教训与经验》中所写的那样:

敏捷是一种群众运动,不能只是简单地将特定的工具、技术或方法强加给不情愿的团队。

例如,你可以使用应用程序开发人员所使用的版本控制、持续集成和发布管理工具,实现数据库变更的版本控制、测试和部署。

这样,就不需要引入没有使用经验的工具,那虽然可以完成工作,但会增加对人们的制约,而通过充分发挥数据库工具的作用,并结合现有的应用程序开发工具,你同样丰富了工作方式。

通常,这还会带来额外的好处,应用程序和数据库开发团队齐心协力向着共同的目标努力,真正实现开发过程的整合。

小处着手

持续交付、持续集成、数据库管理生命周期——其中每个短语都足以使有关数据库敏捷思维的讨论听上去比实际复杂。

关键是从小处着手,首先对数据库进行源码控制或版本控制。源码控制本身并不是一种敏捷实践;但它可以促成类似持续集成这样的敏捷实践。没有源码控制,你就无法实现敏捷。实行源码控制,就为实施敏捷创建了条件。

对数据库及应用程序实行源码控制的更大好处是,两者的版本可以同时同步和测试。数据库代码的所有变更都同应用程序代码的变更联系在一起,任何可行的构建都可以任何时候重新生成。SQL Server 最有价值专家 Grant Fritchey 在“为什么要将数据库纳入源码控制?”一文中写道:

将数据库直接同应用程序一起纳入源码控制可以实现数据库变更和应用程序代码变更的整合,那样,你就总是可以知道,正在部署的数据库代码版本直接对应于正在部署的应用程序代码版本。

部落记忆不是源码控制

部分公司和组织仍然依赖手动的、脚本驱动的流程,他们常常将其称为源码控制。通常,其构建是围绕一个人或一个小团队对数据库的深入理解和以前什么可行(现在可能仍然可行)这样一份记忆。开发人员和 DBA 直接操作脚本,而不是数据库,数据库变更历史很难维护。

这不是源码控制,而是对源码控制的畏惧。已有的数据和结构必须总是处于保护之下,那样数据才会得到维护,才不会有任何东西丢失。对源码控制的畏惧正是源于这样一个事实。

尽管如此,借助源码控制,多个人或团队能够在同一时间访问代码段或数据库。每个代码段都有版本,这有助于形成分支以及确保不会有任何东西丢失。或者,可以将整个代码集版本化,使开发人员具备部署到已知状态或恢复到先前状态的能力。

同样重要的是, 配备一个恰当的源码控制系统,源码控制实践会成为每个人日常工作生活的一个正常部分,而不限于一个人数有限的领域。因此,如果真出现了问题,它们也可以得到快速解决,而不会变成一个潜在的危机。

简洁为美

正如所见,对数据库代码实行源码控制有极大的好处。但如果开发人员和 DBA 的工作变得越来越复杂而不是越来越简单,那么实行源码控制的好处就不复存在了。

引入一种源码控制工具,迫使开发人员改变工作方式,或者采用不同于现有做法的策略,显然会惹恼别人。同样地,选择一种不同于应用程序源码控制系统的工具会加深而不是减轻 DBA 和应用程序开发人员之间的分化。

关键是将数据库源码控制集成到现有的开发流程,那样就可以同开发人员已经熟悉的工具和做法保持一致。在 SQL Server 领域,这不可避免地意味着要使用——最好是在内部——SQL Server Management Studio。

借助一个插件源码控制工具,开发人员可以继续使用交互式开发模型,操作一个“在线”数据库。它将对象创建脚本的源码控制自动化,提醒用户数据库与源码控制版本之间的差异,并且让向源码控制系统提交变更更容易。

随着源码控制成为正常数据库开发流程的一部分,生产力也会得到提升。它节省了时间,使开发人员更不容易忘记向源码控制系统提交代码,减少了任务切换,提高了效率。由于可能有多个团队参与应用程序和数据库开发流程,所以一个库也会让查看已完工任务变得更简单。

可见,随应用程序一起实现数据库源码控制不仅可行,而且带来了许多好处。它在开发、测试和生产环境之间同步数据库结构,减少了有关的工作和错误。此外,它能确保数据库开发团队同其他人就变更进行沟通,并在需要时提供一个可以用于回滚的版本。

当然,它打开了通向真正的敏捷实践(如持续集成)的大门。

仅仅实现所需要的敏捷

关于迁移到敏捷工作方式,最重要的信息可能是你所决定的变革步伐。

一旦配备了源码控制系统,你就可以选择引入持续集成,将数据库变更和应用程序代码一起构建、测试和打包,加速发布,降低部署风险。它不仅可以验证你的数据库结构,而且还可以在真实的测试数据上运行单元测试,并检查数据库变更实际上是否是按照你的意愿部署的。

然后,你可以升级发布管理流程,包括所有可以让生产环境数据库安全高效地变更所需要的更新脚本、变更报告和审核步骤。

这里的关键是自动化,让工具负责处理每个数据库开发人员和管理人员工作列表最底下那些重复、费力且占用大量时间的任务。

所有这一切的自动化可以将 DBA 解放出来,将更多的时间花在重要的工作上——降低数据库部署失败的风险。这也许并不奇怪,SQL Server Central 最近的调查显示,在已经使用像持续交付这样的敏捷实践的公司中,大约有 60% 的公司变更发布时间降低了;有超过 40% 的公司变更部署时间降低了;有 30% 的公司表示,由糟糕的部署所导致的时间浪费减少了。

开始的时候,将数据库与应用程序一起实现源码控制,但最终的好处将远不止于此。

“精益机器”的第二部分将详细介绍数据库开发人员如何从像持续交付和自动部署这样的敏捷实践中受益。

关于作者

Matt Hilbert是 Redgate 的一名技术作者,有 20 年的工作经验。他为许多世界上最大的技术公司工作过,也为其中许多最小的公司工作过。他特别热衷于研究新兴技术,孜孜不倦地向广大读者解译、解析、解释技术观点,让人们为技术带来的无限可能性而兴奋。

查看英文原文: The Lean Machine: Bringing Agile Thinking to the Database

2015-10-08 05:521821
用户头像

发布了 1008 篇内容, 共 372.3 次阅读, 收获喜欢 340 次。

关注

评论

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

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

EOSdreamer111

5G-A,一根蓄满能量的弹簧

脑极体

5G

【Redis技术专区】「原理分析」探讨Redis6.0为何需要启用多线程

洛神灬殇

redis 多线程 原理分析 并发机制 2024年第一篇文章

【Redis深度专题】「核心技术提升」从源码角度探究Redis服务的内存使用、清理以及逐出等底层实现原理

洛神灬殇

redis 底层原理 清理缓存 原理机制 功能实现 2024年第二篇文章

一款便捷操作移动设备的PC工具

iofomo

android 开发工具 测试工具 PC ios 开发

通过聚道云软件连接器实现金蝶软件与客如云软件的无缝对接

聚道云软件连接器

案例分享

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

石头财经

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

西柚子

如何提高3D渲染速度

3D建模设计

3D渲染 3D加载 3D模型加载速度 3D模型渲染效率

避免重复扣款:分布式支付系统的幂等性原理与实践

隐墨星辰

幂等性 支付系统设计与实现 全局幂等 防止重复扣款

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

股市老人

纹理贴图如何为游戏角色增添质感

3D建模设计

3D渲染 3D材质纹理贴图 3D材质编辑器

【Linux】工具介绍vim及gcc详解。

百度搜索:蓝易云

vim Linux 运维 云服务器 GCC

解读 $mash 通证 “Fair Launch” 规则(Staking 玩法解读篇)

BlockChain先知

好用的软件卸载工具:TrashMe激活最新版

mac大玩家j

Mac软件 卸载工具 软件卸载

3D 建模中的 GLTF、USDZ 和 GLB 3D 文件格式

3D建模设计

3D模型 GLTF glb USDZ

聚道云软件连接器助力某动漫行业公司实现财务自动化

聚道云软件连接器

案例分享

C 语言指针完全指南:创建、解除引用、指针与数组关系解析

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

【Mac/win】Topaz Gigapixel AI v6.3.3 绿色便携版 自带激活补丁

Rose

图片放大工具 Topaz Gigapixel AI便携版 Topaz Gigapixel AI教程

文字处理软件推荐 Mellel 6 激活中文版

胖墩儿不胖y

Mac软件 文字处理软件

恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」

Databend

One Switch 让你的 Mac 也能拥有控制中心

Rose

One Switch下载 苹果Mac 必备 系统功能快速开关工具

etcd-workbench一款免费好用的ETCD客户端,支持SSH Tunnel、版本对比

北风

Docker etcd tools etcd-client

【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)

洛神灬殇

tomcat 分布式 分布式技术 架构原理 2024年第三篇文章

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

西柚子

3D模型轻量化

3D建模设计

3D轻量化 三维模型轻量化

GLTF编辑器设置3D纺织纹理贴图

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(幸运池玩法)

石头财经

IBM SPSS Statistics 默认工具栏缺失怎么办?

Rose

macOS 14 Sonoma(最新MacOS系统) pkg完整安装包 14.2正式版

Rose

支持M1/M2,Axure RP 9授权密钥激活可用 附 Axure RP 9激活教程

Rose

Axure RP 9汉化 原型设计软件 Axure RP 9破解版 Axure RP 9授权

精益机器:将敏捷思维引入数据库开发_研发效能_Matt Hilbert_InfoQ精选文章