再無立錐之地!為什么說共享數(shù)據(jù)庫已成過去式?
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)
共享數(shù)據(jù)庫范式是一種常見的開發(fā)工作流程,即團(tuán)隊中的所有開發(fā)人員都共享某一個數(shù)據(jù)庫的訪問權(quán)限,都使用該數(shù)據(jù)庫來支持應(yīng)用程序開發(fā)。
這一工作流程很簡單,無需為每個工程師配置基礎(chǔ)架構(gòu),使安裝成本降至最低,因而人們愿意選擇它。但由于工程師做出改變的同時不得不承擔(dān)著影響其他人工作的風(fēng)險,它也會給工程師造成痛苦和瓶頸。
Spawn使我們能夠輕松進(jìn)行數(shù)據(jù)庫配置,并使每個工程師都擁有自己專用的數(shù)據(jù)庫環(huán)境,而無需配置任何額外的基礎(chǔ)架構(gòu)。
共享數(shù)據(jù)庫

共享數(shù)據(jù)庫通常包含一個生產(chǎn)數(shù)據(jù)庫的副本(適當(dāng)?shù)乇黄帘我詣h除敏感數(shù)據(jù),并且可能被子集化以縮小其規(guī)模),該副本由團(tuán)隊中的所有開發(fā)人員共享。共享數(shù)據(jù)庫的好處是管理的基礎(chǔ)架構(gòu)更少,開發(fā)人員只需將連接字符串插入共享數(shù)據(jù)庫即可快速啟動并運行。
盡管這種設(shè)置對一個很小的團(tuán)隊或很少進(jìn)行數(shù)據(jù)庫更改的團(tuán)隊頗有作用,但它很快會遇到一些問題:
- 互踩:開發(fā)人員可能會嘗試對共享數(shù)據(jù)庫進(jìn)行矛盾互斥的更改,存在抹去彼此工作的風(fēng)險。
- 不能安全地遷移應(yīng)用:更改一項功能的數(shù)據(jù)庫架構(gòu)可能會破壞其他代碼。
- 未知狀態(tài):如果數(shù)據(jù)庫的狀態(tài)不受單個開發(fā)人員的控制,從一瞬間更改到下一瞬間,錯誤再現(xiàn)和應(yīng)用程序測試將變得更加困難。
共享數(shù)據(jù)庫模式日益落后,因為容器化使得數(shù)據(jù)庫供應(yīng)比以往任何時候都更容易,消除了基礎(chǔ)設(shè)施供應(yīng)的開銷。
每個開發(fā)人員一個數(shù)據(jù)庫
在這種模型下,團(tuán)隊中的每個開發(fā)人員都有自己的(隱藏的)生產(chǎn)數(shù)據(jù)庫副本,可以根據(jù)該副本進(jìn)行工作。這使開發(fā)人員可以單獨更改其數(shù)據(jù)庫副本,從而解決了由于爭用共享數(shù)據(jù)庫而引起的問題。
這在過去比較困難,因為我們必須為每個開發(fā)人員提供類似于生產(chǎn)的應(yīng)用程序數(shù)據(jù)庫的副本。但是,通過使用Spawn,我們可以從命令行配置臨時數(shù)據(jù)庫實例,而無需設(shè)置或托管任何其他基礎(chǔ)架構(gòu):

使用Spawn,我們可以每天從生產(chǎn)環(huán)境中創(chuàng)建一個數(shù)據(jù)映像(作為計劃構(gòu)建管道的一部分),并使此映像對開發(fā)人員和CI系統(tǒng)都可用——所有這些都使用Spawn CLI。可以從備份文件或腳本創(chuàng)建映像。
然后,每個開發(fā)人員都可以基于此映像配置自己的數(shù)據(jù)庫,而不必像運行spawnctl create data-container
Spawn在幕后Kubernetes集群中創(chuàng)建并托管一個容器化的數(shù)據(jù)庫實例,將開發(fā)團(tuán)隊從管理自己的數(shù)據(jù)庫基礎(chǔ)設(shè)施的負(fù)擔(dān)中解脫出來,并獲得專用數(shù)據(jù)庫進(jìn)行開發(fā)的所有好處:
- 快速提供任意規(guī)模的數(shù)據(jù)庫:Spawn使用塊級文件系統(tǒng)快照來恢復(fù)和寫入數(shù)據(jù)庫。這意味著即使是最大的映像也可以在幾秒鐘內(nèi)配置完畢,并且保持高速寫入。
- 快照和還原:可以使用Spawn CLI spawnctl save命令隨時對數(shù)據(jù)庫進(jìn)行快照。使用spawnctlreset可恢復(fù)到以前的任何狀態(tài)。無需擔(dān)心數(shù)據(jù)庫更改,因為它總是很容易還原。
- 無需基礎(chǔ)設(shè)施:Spawn負(fù)責(zé)數(shù)據(jù)庫的供應(yīng)和托管,允許開發(fā)人員專注于代碼。
- 同一映像的多個副本:一個映像可用于根據(jù)需要提供盡可能多的數(shù)據(jù)庫——所有這些數(shù)據(jù)庫都有自己的連接字符串,相互獨立和分離。
- 多數(shù)據(jù)庫支持:Spawn支持SQL Server、Postgres、MySQL、Redis和Mongo。
還等什么呢?是時候上手Spawn啦!