09.结构化数据库如何持续交付笔记

 

--------------------------------------------------------------------------------------------------

应用程序VS数据库

 

 

 

数据可以理解为一个应用代码。

 

解决思路:

架构解耦:在应用程序和数据库对象之间形成单一可控的依赖路径

团队解耦:应用程序微服务化带来2 pizza team,团队/应用/数据库成为独立单元

自动化:形成所有环境上的数据库自动化持续部署能力;形成应用于数据统一的版本控制能力

 

------------------------------------------------------------------------

团队协作模式和架构演进

 

 

 团队解耦(微服务)

 

 

 DBA的职能和团队演化

 

 

 

应用DBA :

l  负责特定应用程序的数据结构,数据库应用代码,初始数据应用代码,初始数据,业务数据的维护

l  协作开发,测试团队完成所需要的环境持续部署

l  敏捷/微服务演进过程逐步加入应用开发团队,成为职能团队的一部分

系统DBA:

l  负责数据服务器级别的系统稳定运行

l  需要具备各类数据库的高可用,宅被,备份恢复,打补丁,系统升级的能力

l  维护生产坏境数据的持续部署

l  云计算和PaaS平台演进过程中主键被平台能力替代

 

----------------------------------------------------------------------------------------------------------------

数据库持续交付流水线设计

*数据库制品分层

*数据库即——数据库配置管理

 

01.数据库的制品分层

 

 

 

02.示例:

 

 

 

示例:

 

 

 

 

数据库持续交付流水线

 

 

 

代码->持续集成->开发环境->测试环境->UAT/预生产->生产环境

代码:

l  数据库脚本入库

l  与应用采用同样的版本管理机制

l  通过分支策略,拉去请求控制数据库版本的统一和对其

l  为开发人员提供本地数据库独立部署能力

l  为开发人员提供Daily Build生成共享数据库

持续集成

l  持续集成(CI):

n  数据库脚本与应用代码一同打包

n  自动完成持续集成环境临时数据库的部署:数据结构、应用代码、初始数据,测试数据

n  自动完成数据库集成测试,使用持续集成环境临时数据库(数据会被污染)

n  理应Docher对数据库状态进行快照

 

l  持续集成(Daily build)

n  使用单日最终版代码

n  数据库脚本与应用代码一同打包

n  自动完成开发环境数据库部署:数据结构,应用代码,基础数据,测试数据

开发环境:提供Daily Build所部署的数据库提供开发团队作为数据库基线版本

测试环境:使用开发测试团队认可的制品版本进行部署

UAT/预生产:

l  在当前数据库版本基础上使用迁移脚本完成数据库升级

l  利用工具自动完成差异脚本的生成

l  必要时人工介入手工编写迁移脚本,比如:拆表,拆行

l  数据验证脚本编写和入库

l  回滚脚本并验证回滚过程

l  数据迁移脚本入库

生产环境:

l  在当前数据库版本基础上使用经过验证的迁移脚本完成数据库升级

l  数据验证

 

 

 

 

 

外部资源--->开发级--->测试级--->生产级--->制品库

PR触发的预构建->获取代码->编译->静态代码扫描->L1单元测试->发布包准备->Docker Build&Push

 

-----------------------------------------------------------------------------------

持续交付实施框架:

 

 

posted @ 2020-03-29 00:36  艾小小雨  阅读(466)  评论(0编辑  收藏  举报