本节书摘来自异步社区出版社《Oracle性能优化与诊断案例精选》一书中的第1章,第1.6节,作者:盖国强 , 李轶楠 ,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.6 理想实践,开发运维一体化
在数据行业那么久,我们总希望能够通过自己的努力,将好的想法落地,渐渐地改变行业中的不合理之处,让这个技术世界变得美丽一点点。
那么这个行业里有什么迫切需要改变的?
作为资深的DBA你可能会发现,我们10年前处理的问题和今天没有什么不同。针对数据库的运维巡检日复一日,SQL优化应对全表扫描或是隐式转换,转眼就耗费了经年的时光。所以我们有一个理想,不要让DBA重复在这些无休止的工作上,或者至少能够做得更有价值,也力争能够改变用户在使用数据库的过程中,屡见不鲜的事后救火。
所以我们第一个在国内提出了“SQL审核”“智能巡检”等理念,希望真正能够通过自动化运维、工具化约束,去改善SQL开发质量、发现和凸显问题,从而防患于未然,提升系统稳定性,改善数据库运维的现状。我们相信通过规范化、标准化、智能化,才能够不断推动业界向前。
早在2011年,我们基于对于业界的思考,就开始开发了一款SQL审核产品,称为z3,如图1-10所示。它可以审核开发测试阶段的SQL,发现问题,提出建议,希望由此将运维DBA和开发结合起来。我们从未想过,这居然就是今天最热门的DevOps所讨论的范畴。
通过不断地呼吁和倡导,今天我们非常欣喜地看到国内很多企业都开始去开发这方面的工具,去推行SQL审核的理念。
那么什么是DevOps呢?维基百科的定义如下所示。
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
从这个定义可以看出DevOps实际上是一种文化上的改变。开发和运维通过更多的沟通达成更可靠的系统输出,从而为企业的共同目标而加注动力。在2015年Gartner的技术成熟度曲线上,DevOps正处于巅峰。
而根据多年的行业经验,我们认为DevOps在Oracle数据库的最佳实践应该就是SQL审核。江苏移动技术专家戴建东的一段感触之言为我们提供了来自实践的依据,他明确提到:
“其实在生产中,绝大多数Oracle的业务系统出现问题都是SQL导致的。但是大多DBA,尤其是偏运维的DBA对SQL并不擅长,这些DBA承担着数据库运维和维护稳定性的职责,而他们对这些问题可能又无能为力。原本SQL的质量应该是开发层负责的问题,但目前的现状是,开发人员管不了,运维人员不擅长。所以当系统出现问题的时候,就需要专业人员“救火”,而事发或事后救火往往是业务已经遭受了损失。”
SQL审核的理念就是,将这些“开发人员管不了,运维人员不擅长”的核心SQL问题抽取出来,作为DevOps的范畴。通过来自运维的经验,指导和辅助开发完成高性能的SQL改写,并且不断通过自动的SQL审核工具和专家的修改建议相结合,推进开发质量的提升,改善系统的稳定性,将性能事故消弭于无形。这也正是DevOps的理想所在。
对于开发团队来说,持续的进行SQL培训我认为非常重要,开发的SQL能力提升了,对于DBA只有好处,数据库的稳定性自然会得到提升。DBA也有职责去和开发沟通,对他们进行面向运维高性能培训。在Oracle DevOps时代,DBA要勇于承担责任,去推进变化。而且在DBA的学习过程中,就是要不断深入去了解各个层面的知识,才能不断进步、融会贯通,找到如鱼得水、游刃有余的感觉。也才能从工作中找到自信和乐趣,进而培养和巩固兴趣,在完善自我的同时帮助他人,提升团队。
在今天的云时代,各个领域都在发生变化,DBA的领域同样面临挑战,表达一下我的观点。
(1)DBA从后端走向前端才能更充分的体现其技术价值。
(2)应用向着预防问题方向演进永远比事后救火更重要。
所以慢慢很多企业开始在开发环节,以开发DBA来进行把关,以SQL审核优化来控制质量。我建议DBA们关注一下这个方向和变化。在现实中,解决单个问题往往是简单的,但是我们应该思考如何去防范一类问题,让更多的人免于重复落入类似的故障。
从经验到规范,从规范到规则,这是DBA工作更高价值的体现。当我们能够将经验固化成SQL、算法或者程序之后,才能帮助到更多的人。我想,只要我们每个人在自己熟悉的领域都能够努力一点点,就能够一起将我们所从事的行业变得美好一点点,从而也会使得我们的世界变得美好一点点。
云和恩墨在云的时代,正在致力于以团队智慧和经验,衍生产品,以产品服务更多的客户和DBA们,进而推进行业的进步