本文转载自公众号《读芯》(ID:AI_Discovery)共享数据库范式是一种通用的开发工作流,即团队中的所有开发人员共享对某个数据库的访问权限,并使用该数据库来支持应用程序开发。这种工作流程的简单性、为每个工程师配置基础设施的需求最少以及安装成本最低是人们选择它的原因。但它也会给工程师带来痛苦和瓶颈,因为他们在进行更改时必须承担影响其他人工作的风险。Spawn让我们可以轻松地进行数据库配置,让每个工程师都拥有自己专用的数据库环境,而无需配置任何额外的基础设施。共享数据库共享数据库通常由团队中所有开发人员共享的生产数据库副本(适当屏蔽以删除敏感数据,并可能子集化以减小其大小)组成。共享数据库的好处是需要管理的基础设施更少,开发人员只需将连接字符串插入共享数据库即可快速启动和运行。虽然此设置适用于小型团队或对数据库进行少量更改的团队,但它很快就会遇到问题:串扰:开发人员可能会尝试对共享数据库进行冲突和相互排斥的更改,存在擦除彼此的风险工作。应用程序无法安全迁移:更改一个功能的数据库模式可能会破坏其他代码。未知状态:如果数据库的状态不在单个开发人员的控制之下,并且时时刻刻都在变化,则错误再现和应用程序测试将变得更加困难。共享数据库模型正在落后,因为容器化使数据库供应比以往任何时候都更容易,消除了基础设施供应的开销。每个开发人员一个数据库在这种模型下,团队中的每个开发人员都有自己的(隐藏的)生产数据库副本,他们可以从中工作。这允许开发人员独立地更改他们的数据库副本,解决由共享数据库争用引起的问题。这在过去很难,因为我们必须为每个开发人员提供一份类生产应用程序数据库。但是,通过使用Spawn,我们可以从命令行提供临时数据库实例,而无需设置或托管任何额外的基础设施:使用Spawn,我们可以每天从生产中创建数据映像(作为计划构建管道的一部分),并Make该图像可供开发人员和CI系统使用——全部使用SpawnCLI。可以从备份文件或脚本创建图像。然后,每个开发人员都可以根据这个图像配置自己的数据库,而无需离开命令行,就像运行spawnctlcreatedata-container一样容易。Spawn在幕后的Kubernetes集群中创建和托管一个容器化数据库实例,使开发团队从管理自己的数据库基础设施的负担中解放出来,并获得专用数据库的所有好处进行开发:快速提供任何规模的数据库:Spawn使用块级文件系统快照来恢复和写入数据库。这意味着即使是最大的图像也可以在几秒钟内完成配置并保持高速写入。快照和恢复:可以随时使用SpawnCLIspawnctlsave命令对数据库进行快照。使用spawnctlreset恢复到任何以前的状态。无需担心数据库更改,因为它总是很容易恢复。无需基础设施:Spawn负责数据库的配置和托管,让开发人员可以专注于代码。同一图像的多个副本:一个图像可用于根据需要提供尽可能多的数据库——所有数据库都有自己的连接字符串,彼此独立且解耦。多数据库支持:Spawn支持SQLServer、Postgres、MySQL、Redis和Mongo。你还在等什么?是时候开始使用Spawn了!
