CALMS是框架的首字母缩写,它允许企业评估他们在DevOps之旅中的准备程度,以及他们可以改进的地方。CAMS(没有L)是由Damon Edwards和John Willis在2010年首次美国DevOps Days之后首次推出的.Jez Humble后来添加了L,代表Lean,现在这个缩写词的全部含义是:
有趣的是,数据库开发软件的进步现在意味着可以使用相同的框架来评估企业是否也为数据库DevOps做好了准备。
文化
在谈论DevOps时,文化是它可以激发的转型的核心。DevOps文化改变了企业的工作方式,使团队能够产生令用户满意的出色结果。
文化的一个重要部分是打破组织内部存在的孤岛,以便Dev和Ops能够更好地共同努力实现同一目标 - 那些快乐的用户。它不再是我的机器上工作或它不是我的问题气氛。现在,让我们共同努力,为用户提供最佳体验。这是为了让团队能够为用户做最好的事情,并确保他们可以根据需要发布。
这对于数据库来说非常重要。传统上,DBA在自己的部门中非常孤立,并且经常被视为更快地发布更改的瓶颈。他们对生产数据库的性能及其数据的安全性负全部责任。现在整个团队 - 开发人员和DBA--应该考虑如何尽可能顺利地发布,如何在生产中运行,以及在何处构建安全性。
自动化
自动化是DevOps的关键。如果您想更频繁地发布,那么发布管道是自动化的理想选择。它完全重复,自动化将有助于消除任何手动错误。
自动化的另一个好处是它提供的可追溯性。您将能够确切地看到哪些环境以及何时应用了哪些更改。你甚至可以看到谁做出了改变以及为什么; 也许它们与用户故事有关,或者可能是错误修复所需要的。如果您的管道中有任何手动批准步骤,您还可以查看谁审核了更改并签署了发布。
持续集成一系列自动化测试对于自动化版本非常重要。CI的输出是包含发布所需的所有文件的包,将用于部署到其他环境,因此您只需构建一次并且部署是一致的。自动化测试(单元,烟雾,集成,性能,GUI)对于提供发布信心并在问题到达生产并影响用户之前发现任何问题也很重要。
自动化并不意味着持续部署。在持续部署中,每次提交更改时,它都会一直流经发布管道,直至部署。为此,您需要对自动化测试有很大的信任。
相反,我所说的是持续交付,其中使用自动化来进行更改,以便在审核后根据需要将更改发布。这在应用程序开发中越来越常见,过程看起来像这样:
典型的部署管道,将数据库开发作为孤立的进程
当他们听到自动化数据库更改发布到生产时,很多DBA都会感到害怕。但同样,我说的是自动化和持续交付,而不是持续部署。将审核步骤作为自动化管道的一部分包含在内也非常容易,这样DBA就可以确切地了解在生产中发生任何变化之前会发生什么。
将数据库包含在持续交付中,而不是使过程复杂化,实际上看起来要简单得多。如果用于数据库开发的工具与已经用于应用程序开发的工具集成并插入,那么引入它也会容易得多:
具有数据库开发的部署管道,作为持续交付过程的一部分
自动化和数据库的另一个好处是能够在尽可能接近生产的临时/预生产环境中自动进行测试部署。通过在生产中运行部署脚本之前最后一次测试部署脚本,这提供了最佳成功机会。
靠
精简是在最初的谈话之后添加的,并且是DevOps的重要价值。精益专注于渐进式改进,并将工作分成小批量。小批量允许您在开发时经常发布。这一点非常重要,这样您就可以获得真实的用户反馈,并从中学习,以便根据您的学习需要进行调整和调整。
将精益应用于数据库很难。你真的应该关心整个系统。该数据库是该系统的一部分。这进一步强调了将数据库作为文化的一部分(打破孤岛)和自动化的重要性,以便您可以对这些频繁的增量版本进行改进。
测量
测量对于获得快速反馈和持续改进非常重要,因为只有在您有基准来衡量时,您才能知道自己是否有所作为并且需要改进。开始测量的第一个领域是您的内部流程,例如承诺代码在生产中运行所需的时间,发布频率,故障率以及从故障中恢复的平均时间。
您还可以包括遥测 - 用户如何使用您的系统,是否发现了新功能以及如何改进。
要测量的第二个方面是系统的运行状况,要了解这一点,需要进行监控。这样,如果出现问题,您可以迅速做出反应,甚至更好,主动修复可能成为问题的内容,这样您就可以让用户满意。
对于数据库,测量内部过程和遥测是作为系统的一部分完成的,因为您的数据库应该包含在您的发布过程中。监视数据库允许您确保它们正确执行,并且可以将其配置为在出现问题之前提供有关性能问题或磁盘空间不足的警报。
分享
分享让我们回到第一个价值观,即文化。如果您想对文化产生巨大影响,那么与您公司的其他成员分享您所学到的经验和最佳实践非常重要。这有助于打破这些孤岛,以便人们共同努力,不断改进并为用户做最好的事情。
对于DBA来说,与整个组织中的其他DBA和团队共享调查结果也很重要,这样他们也可以利用将数据库包含在DevOps流程中的所有好处。这样,障碍就会降低,DBA将看到在开发过程早期与开发团队一起处理复杂变更的价值,而不是在变更达到生产时发现问题。
结论
CALMS是重要的DevOps值,它使您能够打破孤岛,更好地协同工作,并为可持续改进的用户提供频繁的价值。这些值也与数据库有关,因此打破这个孤岛也很重要,这样你才能真正飞行。