伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

DevOps流水线之数据库篇

来源:本站原创 浏览:96次 时间:2022-07-22

简介

部分企业在实施DevOps过程中,发现数据库的升级成为企业DevOps流水线上的核心瓶颈,应用程序发布频率越来越快,但是数据库依然采用手工更新的方式,导致数据库升级效率低下、风险较大。所以建立一套完整的应用+数据库的DevOps流水线是至关重要的。接下来小编将带大家手把手搭建一套基于Team Foundation Server的数据库CI、CD流水线。



作者:周文洋

LEANSOFTX研发总监,认证 Scrum Master,曾为多家客户提供微软Team Foundation Server实施咨询、二次开发、报表定制等服务,包括:中国农业银行,博时基金,斯伦贝谢,京东商城,国电南自等,现负责公司核心产品的开发工作。


升级方案


基于数据库升级\迁移脚本:采用像编写应用代码一样的方式去编写数据库升级脚本,对脚本文件进行顺序编号并迁入代码库,在持续发布阶段按照编号依次顺序执行数据库升级脚本。完成数据库的升级\变更动作。


升级工具

可以使用Flyway,Evolve, Liquebase等工具完成数据库脚本的升级\迁移。


为了灵活应对各种场景,平台、语言,以及方便大家学习,小编开发了一个简单的跨平台小工具SQLToolkit来完成数据库脚本的顺序执行, 并开源到
Github: https://github.com/leansoftX/SQLToolkit.git


流水线图



流水线概述


  • 开发人员在编写应用逻辑的同时,编写SQL升级脚本,确保将应用代码以及SQL升级脚本一并迁入到配置库。

  • 配置库变更后触发持续集成,自动编译应用,以及发布数据库升级脚本。

  • 发布服务在测试环境数据库按编号依次顺序执行SQL升级脚本完成数据库升级,并完成应用升级部署。

  • 测试环境经过测试后,执行QA以及Staging环境的数据库升级以及应用升级部署。

  • 相关环境测试没有问题,相关人员对应用以及数据库升级脚本进行评审,并完成生产环境的自动化部署。

注意:这里的数据脚本评审需要针对数据库上下文进行评审。而不是仅仅评估脚本,这样才能保证数据的完整性。


方案优点


1. 代码与升级脚本同时迁入到配置库,保证了应用程序与数据库统一版本,避免出现应用程序与数据库无法对应版本的问题。

2. 通过数据库脚本记录可以方便的跟踪数据库变更历史。

3. 通过数据库升级脚本中的事务可以控制回滚。

4. 通过对数据对象以及数据的灵活处理保证数据的完整性。


流水线搭建


项目结构:

首先需要在应用目录下创建一个文件夹,用来存放对应的数据库升级脚本。 并按照顺序编号存储对应的脚本文件,如下图所示::


脚本内容参考:01-****.sql

Use devopslabsCREATE TABLE [dbo].[Configuration]([Id] [int] IDENTITY(1,1) NOT NULL,[Description] [nvarchar](MAX) NULL,[Key] [nvarchar](MAX) NULL,[Value] [nvarchar](MAX) NULL,[DisplayName] [nvarchar](MAX) NULL)ALTER TABLE [dbo].[Configuration] ADD CONSTRAINT PK_Configuration PRIMARY KEY ([Id])


脚本内容参考:02-****.sql

Use devopslabsInsert into Configuration(DisplayName,[Key],Value,[Description])Values(N'站点名称','GeneralSetttings_SiteName','','SiteName')


持续集成:

本编只介绍数据库升级相关步骤,不介绍应用程序相关步骤,如果需要了解应用程序相关步骤请参考小编上一篇文章:

使用TFS玩转Docker自动化部署


在持续集成中,将SQL升级脚本文件夹发布到Build Artifacts,供持续部署使用,如下图所示:



发布结果如下:


持续部署搭建:


在持续部署步骤中,通过SQLToolkit工具完成数据库备份以及升级:


备份脚本命令如下:

SQLToolkit Backup -s  -n  -u  -p  -path /home/sqlbackup/database.bak


升级脚本命令如下:

SQLToolkit RunScripts -s  -n  -u  -p  -path ~/LabsUpgrade/SQLScripts_Up


执行结果如下:


数据库版本


数据库自动生成 “_ST_DatabaseVersion” 表,用来存储当前应用程序的数据库版本。包括数据库脚本名称、执行结果、执行时间等。 这样下次升级时,工具会判断当前数据库版本,并从当前数据库版本的基础上顺序执行“未执行的数据库脚本” 。即便是环境版本不一致依然可以完成数据库的升级动作。

总结


通过搭建数据库的CI、CD可以消除应用流水线的核心瓶颈,让应用程序发布与数据库发布保持一致。减少了DBA手工操作带来的效率低下,人为错误,安全风险等问题。让DBA专注于更有价值的工作。结合基于功能分支的开发方式,可以方便的跟踪数据库变更对应的功能。


由于数据是公司的核心价值,在数据库升级过程中一定要确保数据得到有效的备份,在出现问题时可以顺利回滚,已确保数据的完整性,所以有效的备份以及回滚脚本至关重要。


最后SQLToolkit已经开源到github,有兴趣的小伙伴可以关注下:
https://github.com/leansoftX/SQLToolkit.git




月旦评 之 DevOps招贤令 2018


公元164-182年间,汝南平舆的许氏兄弟于每月初一品评人物,褒贬时政,被称为“月旦评”。所谓 “子治世之能臣,乱世之奸雄也”这 句许邵评价曹操的话也是来自于“月旦评”;时间一下子来到了2018年,LEANSOFT DevOps招贤令再次发出,望纳天下贤士,共襄DevOps大业。


招贤令全文:月旦评 之 DevOps招贤令2018


本次招聘坐标北京,对象为 DevOps实施工程师和.Net开发人员:

  • 熟练掌握以下开发语言之一 C#, HTML/CSS, JavaScript, PowerShell, T-SQL

  • 熟练使用至少一个IDE(多了不限),Visual Studio, Eclipse, IntellJ etc.

  • 熟练使用微软 VSTS/TFS 系统者优先聘用

  • 熟悉敏捷开发,Scrum/Kanban并具备相关认证者优先聘用

  • 善于沟通,勇于探索,能够承受压力


对的,没有工作经验要求,没有学历要求。只要你能通过我们的面试流程,这些都不重要。期待待与你一起工作。

希望申请的小伙伴,请关注DevOps公众号,直接留言即可。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net