実験一覧に戻る
E011完了P0

DSQLの開発・運用のしやすさと導入負担

DSQLは初期導入・繰り返し運用の作業時間と修正量をどれだけ減らすか、または増やすか?

結果の要約

この実験では、DSQLを導入するとインフラ運用の作業がどれだけ減り、その代わりにアプリケーションと運用手順にどのような負担が加わるかを整理しました。最小範囲(MVP)として、新たなAWS実行なしに、E001からE012までで4つのサービス(DSQL、RDS Multi-AZ、Aurora Provisioned、Aurora Serverless v2)を実際に作成し、データを投入し、負荷をかけ、復旧し、削除する中で経験した作業を集めました。計画にあった作業ごとの時間測定と3回の再実行は行っていないため、作業時間の削減率は計算していません。

インフラ側の作業はDSQLのほうが明確に少なくなりました。DSQLクラスターは作成リクエストから32秒で使用可能になり、削除は約2分でした。Aurora Serverless v2(writer+reader)は作成に約11分、削除に約15分かかりました。DSQLにはインスタンスサイズや最小・最大容量を選ぶ手順、保存するパスワード、vacuumのようなメンテナンス設定、読み取り・書き込みのルーティングがなく、2万4千TPSまで負荷が増えても容量を調整する必要がありませんでした。

一方、アプリケーション側の負担はDSQLで増えました。業務SQL 35個のうち16個を修正する必要があり(E001)、コミット時の競合をリトライするコードが必須でした(E004)。トランザクションは3,000行と300秒を超えられないため、データ投入・削除・バッチのコードを分割する必要があり(E002、E008)、非同期インデックスは完了を別途確認する必要があり、外部キー側のインデックスを手動で作成する必要がありました。接続は1時間ごとに入れ替えてIAMトークンに署名する必要があり(E003)、ポイントインタイム復元がないため、誤操作からの復旧はバックアップ周期に縛られました(E007)。

本番利用の観点

DSQLは「DBサーバーを運用する作業」を大きく減らします。容量計画、インスタンスの入れ替え、パスワードのローテーション、vacuum、readerルーティングを気にする必要がなく、クラスターの作成も30秒余りでした。その代わり、その負担のかなりの部分がアプリケーションに移ります。既存のPostgreSQLコードはSQL修正、リトライ、トランザクション分割、接続入れ替えを設計し直す必要があり、ポイントインタイム復元がない分、バックアップ周期と復旧手順を別途決める必要があります。新しく作るサービスが最初からこの制約に合わせて設計するなら利点は大きく、ストアドプロシージャや大量バッチが多い既存サービスを移行すると負担が大きくなります。作業時間は測定していません。

確認する問い

DSQLは初期導入・繰り返し運用の作業時間と修正量をどれだけ減らすか、または増やすか?

実行条件

  • 追加のAWS実行: なし。E001–E012の実行記録、ツールコードの変更履歴、公開レポートを根拠に整理しました。
  • 対象: D1 Aurora DSQL、R1 RDS PostgreSQL 16 Multi-AZ、A1 Aurora PostgreSQL 16 Provisioned、A2 Aurora PostgreSQL 16 Serverless v2(ソウル)。
  • 計画から変わった点: 作業ごとの実作業時間・待ち時間の測定、最初の実装と独立した3回の再実行、権限エラーの診断試験、基準となるPostgreSQLアプリのサービスごとのdiff管理は行っていません。下表の時間は自動化ツールのログから読み取ったサービスの待ち時間です。

性能結果

インフラ作業(自動化ログ基準)

作業 DSQL Aurora Serverless v2(writer+reader) 根拠
作成リクエスト → 使用可能 32秒 約11分 E005–E009 実行B、2026-09-29
削除リクエスト → 削除完了 約2分 約15分 E002 2回目・実行B
容量の選択 なし ACUの最小・最大、readerの昇格優先順位 E002
認証の準備 IAM権限(dsql:DbConnectAdmin) マネージドパスワード(Secrets Manager) E002
読み取りルーティング なし(単一エンドポイント、即時に最新) readerエンドポイント、書き込み直後の読み取りはwriter E005
負荷増加への対応 なし(24,541 TPSまで) 最大ACUの範囲内で自動、上限32 ACU E002、E009
誤操作からの復旧 バックアップボールト・ロールの準備、フルバックアップ → 新クラスター(129秒) ポイントインタイム復元 → 新クラスター + インスタンス(587秒) E007

アプリケーションと手順に加わった作業(DSQL)

項目 必要な変更 根拠
SQL互換性 35個中16個を修正: sequence・identity、serial、インデックス作成、一時テーブル・パーティション、PL/pgSQL・トリガー、分離レベル、statement_timeout、サーバー側のキャンセル E001
同時実行 コミット時の競合(40001)のリトライと、業務IDによるコミット有無の確認が必須。READ COMMITTEDなし E004
トランザクションのサイズ・時間 3,000行、300秒の上限に合わせてデータ投入・削除・バッチを分割 E002、E008
インデックス CREATE INDEX ASYNC の後に indisvalid を確認。外部キー側のインデックスを手動で作成 E002、E008
接続 1時間の接続寿命に合わせた入れ替え、IAMトークンの署名・キャッシュ、同時に最初の接続をするときの署名の競合防止 E002、E003
一時的なエラー データ投入中の XX000 server unavailable のリトライ E002
大量削除 遅いため、測定ツールの初期化方法を変える必要があった E002
復旧 ポイントインタイム復元なし。バックアップ周期でRPOが決まり、復元後は新しいエンドポイント・権限に切り替え E007
診断 SHOW max_connections が20を返す(実際のクォータは1万) E004

開発・運用のしやすさ

  • インフラ運用の面でDSQLが減らした作業は、作成・削除の待ち時間、容量計画、パスワード管理、メンテナンス設定、読み取りルーティングです。これらは繰り返し運用で毎回発生する作業なので、サービスの数が多いほど効果が大きくなります。
  • アプリケーションの面で増えた作業の大部分は、一度実装すれば再利用できるコード(リトライ、トランザクション分割、トークン署名、接続入れ替え)ですが、既存のコードベースでは全領域にわたる修正が必要です。
  • 今回の研究の負荷ツールも、DSQLに対応するために何度も修正しました: server unavailable のリトライ、チャンク単位でのデータ投入の再開、非同期インデックスの完了待ち、外部キーインデックスの追加、トランザクション分割、トークン署名のロック、初期化方法の変更。

費用

このレポート自体はAWSリソースを作成していません。引用した実行の費用は各レポートと E010 にまとめています。

結論と限界

  • DSQLはインフラ運用の作業を減らし、アプリケーション設計の負担を増やします。新しく設計するサービスは利点が大きく、既存のPostgreSQLの機能に依存するサービスは移行コストが大きくなります。
  • 限界: 作業時間は測定しておらず、人が実際に費やした時間と学習コストを金額で比較していません。対照群側の繰り返し運用作業(パッチ適用、インスタンスの入れ替え、ストレージの増設)は実行していません。観察は今回の研究で経験した事例であり、すべてのワークロードに一般化できるものではありません。

後片付けの記録

  • このレポートは新しいAWSリソースを作成していません。引用した3つの測定実行は、それぞれのレポートで残存リソース0を確認しています(2026-09-28 12:07:44、2026-09-29 11:10:30、10:20:27 UTC)。