当前位置: 首页 > news >正文

什么是数据库 DevOps?

在深入研究数据库 DevOps 之前,先回顾一下什么是 DevOps。它没有统一的定义,但我们知道它起源于软件开发方法与部署和运维的结合。

大约 2007 年和 2008 年,软件开发和 IT 界人士提出了这样的担忧:两个行业的分离,即编写和创建软件与部署和支持软件的人员完全分离,正在给行业带来致命的功能障碍。

DevOps 的目的是,通过共享所有权、工作流自动化和整个软件开发生命周期(SDLC)的持续反馈回路,打破开发者和运维人员的隔阂。而数据库 DevOps 是更广泛的 DevOps 框架中的一个专门子集,侧重于与数据库相关的活动。

数据库 DevOps 中的角色

开发者和 DBA 是数据库 DevOps 中的两个主要角色。他们的工作重点不同,甚至有些冲突:

  • 开发者:尽快构建并交付。
  • DBA:防止数据库中断。

一种典型的数据库 Schema 变更工作流

  1. 开发者在本地集成开发环境上开发功能,将 Schema 变更应用到本地数据库,并在本地进行测试。
  2. 开发者通过 Jira 等工单系统提交 SQL 更改请求。
  3. DBA 审查工单,并与开发者交换意见。
  4. DBA 使用 SQL 客户端离线发布变更。
  5. 多次重复步骤 2 ~ 5,在 UAT、Staging 和 Prod 环境中逐一执行变更。

缺乏统一的工作空间

开发者和 DBA 在进行数据库变更时会在不同的工具间跳转。开发者从本地集成开发环境中复制 SQL 语句,粘贴到 Jira 中审核。审核通过后,DBA 将 SQL 语句从 Jira 复制到本地 SQL 客户端以应用更改,然后,DBA 更新 Jira 工单并通知开发者。

缺乏自动化

  • 手动复制 SQL 语句 -> 粘贴错误的 SQL 语句。
  • 手动审核 SQL 语句 -> 审核延迟和忽略缺陷。
  • 手动部署 SQL 语句 -> 应用到错误的数据库(臭名昭著的 DROP PROD 意外)。

这些并不罕见。DBA 的人数总是少于开发者,许多工程组织甚至没有专门的 DBA 角色,而只是指派某人担任 DBA。

通往数据库 DevOps 之路

统一的工作空间

由于 GitLab、GitHub、PagerDuty 和 Datadog 等平台等工具的显著进步,DevOps 已成为现实。这些平台允许开发者、发布工程师、运维工程师和 SRE 在一个地方进行协作。数据库 DevOps 也需要一个整合的平台。

最起码的是覆盖变更流程。这可以通过采用 GitOps 这一典型工作流来实现:

  1. 开发者在 GitHub 等 VCS 中提交 SQL 变更脚本供审核。
  2. 审核通过后,合并脚本。
  3. 脚本合并后,会触发 CI 管道来安排部署。

这利用了 VCS 来请求、审核和版本化 SQL 语句。不过,即使有 GitHub Actions、GitLab CI 这样的内置 CI,VCS 仍然依赖外部 CD 系统来部署数据库变更。此外,除了变更任务,另一个常见的数据库任务是查询数据库。VCS 没有交互式界面允许用户发布 SQL 语句并获取结果。

真正的综合数据库工作空间(如 Bytebase)应涵盖「写入」(更改数据库)和「读取」(查询数据库)路径。它必须提供请求、审核和部署数据库变更的工作流,以及查询数据库的交互式 SQL 接口。

自动化

自动化有多种应用:

  • 采用 GitOps 来简化从合并到部署的数据库变更过程。
  • 连接 SQL,自动检测 anti-SQL 模式。
  • 记录变更历史并自动准备回滚。
  • 在操作事件发生时发送通知。
  • 通过 API 自定义自动化。

Bytebase 可通过 GitOps、SQL 审核、内置回滚、Webhook 集成和 API 自动执行数据库任务。

总结

数据库 DevOps 强调将数据库整合到 DevOps 生命周期中,促进开发、运维和数据库团队之间的协作。通过利用自动化工具和实践,团队可以简化数据库部署和查询流程,减少人工错误并提高一致性。这种方法不仅能加快交付周期,还能确保数据库开发生命周期与应用开发生命周期无缝集成,促进形成责任共担、持续改进的文化。

作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

JNPF可以实现应用从创建、配置、开发、测试到发布、运维、升级等完整生命周期的管理。减少了传统应用程序的代码编写量,通过图形化、可视化的界面,以拖放组件的方式,即可快速生成应用程序的产品,大幅降低了开发企业管理类软件的难度。

感谢阅读本文,如果有什么建议,请在评论中让我知道。我很乐意改进。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言:strtok的注意事项及模拟实现
  • 集成电路学习:什么是Bootloader启动加载程序
  • 数据结构:树
  • selenium使用指南
  • 在centos系统中kill掉指定进程
  • Vue3 ref 和 reactive 的区别
  • Linux操作文件和文件夹的常用基础命令
  • RTC相关
  • vmware解决虚拟机空间占用不断增大问题
  • Eclipse 自定义字体大小
  • Android 模拟器的简单操作
  • 【算法】演员~评论家方法
  • 集成电路学习:什么是DAC数模转换器
  • 巧用 HTML 列表:<ul>、<ol>、<dl>的实用指南
  • 使用Python写贪吃蛇游戏
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • CSS魔法堂:Absolute Positioning就这个样
  • Invalidate和postInvalidate的区别
  • JavaScript 一些 DOM 的知识点
  • JavaScript中的对象个人分享
  • Spring Boot MyBatis配置多种数据库
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • ubuntu 下nginx安装 并支持https协议
  • Vue.js源码(2):初探List Rendering
  • vue数据传递--我有特殊的实现技巧
  • 记录一下第一次使用npm
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 微信小程序开发问题汇总
  • 微信小程序--------语音识别(前端自己也能玩)
  • 在weex里面使用chart图表
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #DBA杂记1
  • (Charles)如何抓取手机http的报文
  • (PADS学习)第二章:原理图绘制 第一部分
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计大学生兼职系统
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)VirtualBox安装增强功能
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)德国人的记事本
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .Net各种迷惑命名解释
  • .stream().map与.stream().flatMap的使用
  • @Autowired 与@Resource的区别
  • @KafkaListener注解详解(一)| 常用参数详解
  • @SuppressWarnings(unchecked)代码的作用
  • []error LNK2001: unresolved external symbol _m
  • [04] Android逐帧动画(一)
  • [100天算法】-x 的平方根(day 61)