Neonは、Gitのブランチ処理と同様のコピーオンライト方式のストレージモデルを採用しています。ブランチを作成する際、Neonは新しいデータベースを新たに作成するのではなく、同じ基盤ストレージを指す新しいコンピューティングレイヤーを作成します。ブランチ上で変更したデータのみが個別に保存されます。ブランチの作成は瞬時に完了し、本番環境のデータとスキーマがあらかじめ設定された状態でブランチが作成されます。
Vercel を使用したことがある方なら、さらに便利だと感じるでしょう。Neon の Vercel 統合機能では、プレビュー展開ごとに独立したデータベースブランチが作成されます。プルリクエストを開くと、Vercel がプレビューを構築し、Neon が自動的に本番データの完全なコピーを含むデータベースブランチをプロビジョニングします。シードスクリプトも、モックデータも、手動設定も不要です。
プルリクエストがマージまたはクローズされると、Neonは自動的にブランチを削除します。
以前は、複数のブランチが同時にアクセスする共有ステージングデータベースに対してスキーマ変更のテストを行っていました。経験者ならお分かりでしょうが、あるブランチの移行によって別のブランチのクエリが壊れてしまい、どの変更が原因かを突き止めるのに20分もかかってしまうのです。プレビューブランチを使えば、こうした問題を完全に解消できます。すべてのプルリクエストに専用のデータベースが割り当てられ、すべてのテストは分離されたデータに対して実行されます。作業が終われば、自動的にクリーンアップされます。
木曜日に、以前の設定では1時間かかっていたであろう移行の競合を発見しました。プレビューブランチでは、それを削除して1分以内にクリーンな状態でやり直すことができました。
一人で、あるいは小規模チームで開発を行う場合、以前はDevOpsエンジニアとCIパイプラインの構築が必要だったようなインフラストラクチャが、今ではVercelダッシュボードの切り替えスイッチで簡単に設定できます。