341 Views
March 13, 26
スライド概要
本セッションでは、2025年5月にGAとなったAmazon Aurora DSQLを導入・運用した経験を基に、選定理由、設計・開発時の工夫、運用で直面した制約やトラブル、そしてコスト面でのインパクトについて具体的に紹介します。
PostgreSQL互換を謳うDSQLですが、実際には多くの制約や“ハマりどころ”が存在します。
バッチ処理や大量データの扱い、マイグレーション時の注意点など、現場で得た知見や工夫したポイントを共有します。
DSQL導入を検討している方は、是非お聞きいただければと思います。
JAWS DAYS 2026 Mashup for the Future DSQL導入のリアル ~実プロジェクトで見えたメリットと落とし穴~ 佐藤 慎 Japan Digital Design株式会社
はじめに
#jawsug #jawsdays2026 #jawsdays2026_b 自己紹介 佐藤 慎 (@godsugar) 年齢:38歳 住居:千葉県印西市 所属:Japan Digital Design株式会社 役割:Technical Project Manager 好き:情報処理技術者試験/ボードゲーム/燻製 # IPA情報処理技術者試験の全13区分制覇を達成しました。 # 普段は JAWS-UG茨城 や Fin-JAWS に参加しています。
はじめに 会社紹介 #jawsug #jawsdays2026 #jawsdays2026_b
はじめに 去年の弊社のランチセッション JAWS Days 2025 登壇資料 https://jawsdays2025.jaws-ug.jp/sessions/A-4 #jawsug #jawsdays2026 #jawsdays2026_b
はじめに 弊社Slackに再び現れた嘆きの絵文字スタンプ #jawsug #jawsdays2026 #jawsdays2026_b
#jawsug #jawsdays2026 #jawsdays2026_b はじめに 本セッションの概要 弊社ではこの度、DBにDSQLを採用したシステムを構築しました。 ・なぜDSQLを採用したのか ・なぜ の絵文字スタンプが登場することになったのか について、実プロジェクトの経験を含めてお伝えします。
アジェンダ #jawsug #jawsdays2026 #jawsdays2026_b ・Amazon Aurora DSQLについて ・Amazon Aurora DSQLを導入したアプリケーションの概要 ・Amazon Aurora DSQL導入時のツラミ ・Amazon Aurora DSQL導入のメリット ・まとめ
Amazon Aurora DSQLについて
Amazon Aurora DSQLについて #jawsug #jawsdays2026 #jawsdays2026_b ※ Amazon Aurora SQL とは https://docs.aws.amazon.com/ja_jp/aurora-dsql/latest/userguide/what-is-aurora-dsql.html
Amazon Aurora DSQLについて #jawsug #jawsdays2026 #jawsdays2026_b 大規模システムから小規模システムまで Aurora DSQL の提供開始にあたり、 私たちは「マルチリージョンのアクティブ・アクティブ構成」について多く語っていますが、 それだけが目的ではありません。 DSQL は、単一リージョンのアプリケーションにとっても優れた選択肢となるように 設計されています。 1日に数件のリクエストしかない小規模なものから、 1秒あたり数千件以上のリクエストを処理する大規模なものまで、 あらゆる規模に対応できるように作られています。 Marc Brooker AWS VP/Distinguished Engineer (原文)As we launch Aurora DSQL, we’re talking a lot about multi-region active-active, but that’s not the only thing its for. We built DSQL to be a great choice for single-region applications of all sizes - from a few requests per day to thousands a second and beyond. ※ Mark Brooker blogより転載 https://brooker.co.za/blog/2024/12/03/aurora-dsql.html
Amazon Aurora DSQLについて #jawsug #jawsdays2026 #jawsdays2026_b DSQLを小規模システムで利用する理由 利用システムの規模 享受できるメリット 大規模システム利用時の主なメリット マルチリージョン Active-Active 構成が容易 リージョン間での同時書き込み・自動レプリケーションにより、 グローバル分散システムでも高可用・低RTOを実現できる。 自動シャーディングと水平スケール トラフィック増加時もアプリ改修なしでスループットを拡張でき、 大量同時書き込みにも耐えやすい。 小規模システム利用時の主なメリット 最小利用時のコストメリット コストが従量課金のため、月に数回しか使わないユースケースにおいて 安価にSQLベースのDBを用いてアプリケーションの構築ができる。 ※ 毎月最初の100,000DPUと1GBのストレージまで無料 今回の導入事例は「小規模システム」に該当する事例
Amazon Aurora DSQLについて #jawsug #jawsdays2026 #jawsdays2026_b PostgreSQL互換だが、制約は多い トランザクションあたりのメモリ利用(128MiB) 最大接続時間の制約 楽観的ロックの制約 Amazon Aurora DSQL のクラスタークォータとデータベース制限 https://docs.aws.amazon.com/ja_jp/aurora-dsql/latest/userguide/CHAP_quotas.html Amazon Aurora DSQL の同時実行制御 https://aws.amazon.com/jp/blogs/news/concurrency-control-in-amazon-aurora-dsql/
Amazon Aurora DSQLを導入した アプリケーションの概要
DSQLを導入したアプリケーションの概要 #jawsug #jawsdays2026 #jawsdays2026_b 業務要件 データの 取込履歴 (CSV) 取り込み データ一覧 (CSV) アプリケーション PDF Users Webサイト 週次で与えられたPDFやWebサイトの 加工結果をアプリケーションに保存 月数回、データの取込履歴や 取込データ一覧をCSVとしてダウンロード
#jawsug #jawsdays2026 #jawsdays2026_b DSQLを導入したアプリケーションの概要 アプリケーションの概念図 AWS account Amazon ECS Cluster Webアプリケーション Write AWS Step Functions Task 1 Read Amazon Aurora DSQL Amazon ECS ALB Amazon CloudFront DSQLに格納されている データをCSV化して ダウンロード 週次で連携されるデータを 加工してDSQLに格納 Task 2 ・ ・ ・ Task N 週次で与えられたPDFやWebサイトの 加工結果をアプリケーションに保存 Users 月数回、データの取込履歴や 取込データ一覧をCSVとしてダウンロード
#jawsug #jawsdays2026 #jawsdays2026_b DSQLを導入したアプリケーションの概要 データベースに求めるWrite要件 ・週次夜間に1800個程度の並列起動しているECS タスクから書込みがある。 全体のDSQLのレコード数は数十万程度。 AWS account Amazon ECS Cluster Webアプリケーション Write AWS Step Functions Task 1 週次で連携されるデータを 加工してDSQLに格納 Task 2 Read Amazon Aurora DSQL ・夜間のみ集中した書き込み処理となるため、スケ ーラブルなアーキテクチャが望ましい。 ALB Amazon CloudFront Users ・書込の要件は各タスクについて独立した処理対象 を扱うため、そもそも同一レコードに対して同時に更 DSQLに格納されている データをCSV化して 新は起こらない。 ダウンロード Amazon ECS ・ ・ ・ Task N DSQL Task1 Task2 Data1 Data2 Data3 DSQLを利用する上で最も考慮の必要な 楽観的ロックの採用も問題なさそう。
#jawsug #jawsdays2026 #jawsdays2026_b DSQLを導入したアプリケーションの概要 データベースに求めるRead要件 AWS account ・月数回程度、日中のみWebアプリケーションか ら読込がある。 Amazon ECS Cluster ・業務用システムであるため閉局時間が存在し、 書込と読込が同時に発生することはない。 Task 1 AWS Step Functions ・公式ドキュメントで非推奨とされている分析や 週次で連携されるデータを 集計クエリのユースケースは想定しない。 Webアプリケーション Write Read Amazon Aurora DSQL 加工してDSQLに格納 Task 2 ・読込時にはDSQLに格納されている十数万レ ・ コードをCSVに出力する必要がある。 ・・ Task N DSQLの苦手なOLAP系の要件もない。 十数万件のレコード抽出が気になるが、分割フ ェッチでなんとかなるか、、? Amazon ECS ALB Amazon CloudFront Users DSQLに格納されている データをCSV化して ダウンロード
DSQLを導入したアプリケーションの概要 #jawsug #jawsdays2026 #jawsdays2026_b DSQLの採用理由(アプリケーションの分析結果) • DSQLでも十分に機能する業務要件であり、 特性を活かしたアーキテクチャを構築できると判断した。 • 同時に同一レコードに変更がかかることもないため、 楽観的ロックであっても問題ない。 • 非推奨とされている分析や集計クエリのユースケースは存在しない。 • 夜間に集中して書き込み処理が発生するので、 スケーラブルな構成だとよりメリットを生かしやすい。
DSQLを導入したアプリケーションの概要 #jawsug #jawsdays2026 #jawsdays2026_b DSQLの採用理由(他のDBサービスと比較して) • • コスト面で他のRDBMSと比較して 安価にSQLベースのシステムを構築できそうだった。 DynamoDBの利用も検討したが、テーブル設計の複雑性、 レコードサイズの拡張性・柔軟性を考慮し、 DSQLの採用に至った。
Amazon Aurora DSQL導入時のツラミ
Amazon Aurora DSQL導入時のツラミ #jawsug #jawsdays2026 #jawsdays2026_b 十分に事前の制約確認を重ねても、なお残ったツラミ • • • • 大量データのフェッチ バックアップリストア 列の変更要求への対応 ローカル開発環境やCI環境の整備
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ 大量データのフェッチ AWS account Amazon ECS Cluster Webアプリケーション Write AWS Step Functions Task 1 週次で連携されるデータを 加工してDSQLに格納 Task 2 Read Amazon Aurora DSQL Amazon ECS ALB Amazon CloudFront Users DSQLに格納されている データをCSV化して ダウンロード ・ ・ ・ Task N 十数万のDSQL上のデータをCSV化する要件の中で、開発途 中で「並び順をレコード作成日時順としたい」という追加仕様 要求が入った。 一般のRDBMSであればインデックスを設定すれば あっさり対応できてしまうが、、
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ 大量データのフェッチ 発行したSQL (簡易化したクエリ) テーブル構造(batch_table) 列名 キー id Primary Key ・・・ updated_at Index SELECT id, … , updated_at FROM batch_table ORDER BY updated_at LIMIT 100 OFFSET 20000 累計データ量は128MiB(=131072KB)をオーバしているが、 LIMIT OFFSETで順番にフェッチすれば何とかなりそう。。?
Amazon Aurora DSQL導入時のツラミ 大量データのフェッチ 128MiBのメモリ容量制限に 引っかかってしまう #jawsug #jawsdays2026 #jawsdays2026_b
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ LIMIT OFFSET構文の仕組み DSQL ストレージ メモリ Data1~100 Data1~100 Data101~200 Data101~200 Data201~300 … 0~OFFSET+LIMIT のデータを取得 Data201~300 … Data19901~20000 Data19901~20000 Data20001~20100 Data20001~20100 Data20101~20200 Data20201~20300 … LIMIT OFFSETの仕組みとして、 不要なOFFSET分のデータも全て取得して 最終的な結果を返す。 OFFSET~OFFSET+LIMIT のデータを取得 Data20001~20100
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ LIMIT OFFSET構文の仕組み DSQL ストレージ メモリ Data1~100 Data1~100 Data101~200 Data101~200 Data201~300 … 0~OFFSET+LIMIT のデータを取得 Data201~300 … Data19901~20000 Data19901~20000 Data20001~20100 Data20001~20100 Data20101~20200 Data20201~20300 … 0~Offset+Limitのデータを インメモリで処理しようとし てエラ― LIMIT OFFSETの仕組みとして、 不要なOFFSET分のデータも全て取得して 最終的な結果を返す。 OFFSET~OFFSET+LIMIT のデータを取得 Data20001~20100
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ Primary KeyをUUIDv7としてKeyset Pagenationを行うことで解決 発行したSQL (簡易化したクエリ) テーブル構造(batch_table) 列名 キー id (UUIDv7) Primary Key ・・・ updated_at SELECT id, … , updated_at FROM batch_table Index WHERE id > ‘前回最後に取得したid ORDER BY id LIMIT 100 Primary KeyをUUIDv7として時系列のソートを実現 前回取得したidより、大きなIDのみ抽出して取得する用にする。 (KeySet Pagenation)
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ バックアップリストア AWS account Amazon ECS Cluster Webアプリケーション Write AWS Step Functions Task 1 Read Amazon Aurora DSQL バックアップ 週次で連携されるデータを 加工してDSQLに格納 Task 2 ・ ・ ・ Amazon ECS ALB Amazon CloudFront Users DSQLに格納されている データをCSV化して ダウンロード AWS Backup リストア AWS Backupを利用してバックアップリストアを実現。 リストア先は同一名称だが異なるクラスターIDとなる。 Task N Amazon Aurora DSQL
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ バックアップリストア AWS account Amazon ECS Cluster Webアプリケーション Write AWS Step Functions Task 1 Read Amazon Aurora DSQL Amazon ECS バックアップ 週次で連携されるデータを 加工してDSQLに格納 元のクラスタに Migrationを実施 Task 2 ・ ・ ・ AWS Backup リストア Task N Amazon Aurora DSQL ALB Amazon CloudFront Users DSQLに格納されている データをCSV化して ダウンロード
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ バックアップリストア AWS account Amazon ECS Cluster Webアプリケーション Write AWS Step Functions Task 1 Read Amazon Aurora DSQL Amazon ECS バックアップ 週次で連携されるデータを 加工してDSQLに格納 元のクラスタに Migrationを実施 Task 2 ・ ・ ・ ALB Amazon CloudFront Users DSQLに格納されている データをCSV化して ダウンロード AWS Backup リストア Task N Amazon Aurora DSQL 元のDSQLクラスタにMigrationでデータを入れ込む際に ・DSQLはTRUNCATEで一度に削除ができない。 ・巨大トランザクションで大量データの投入が難しい 制約により、小規模トランザクションに分割してリストア処理を行った 結果、リストアにかかる時間が目標復旧時間を超えてしまった。 迅速性が求められる障害復旧の手段としては不適と判断。
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ バックアップリストア AWS account Amazon ECS Cluster Webアプリケーション Write AWS Step Functions Task 1 Read Amazon Aurora DSQL Amazon ECS バックアップ 週次で連携されるデータを 加工してDSQLに格納 AWS Backup リストア Task N Amazon Aurora DSQL Amazon CloudFront Users DSQLに格納されている データをCSV化して ダウンロード Task 2 ・ ・ ・ ALB 新しいクラスタに 向き先変更
#jawsug #jawsdays2026 #jawsdays2026_b Amazon Aurora DSQL導入時のツラミ バックアップリストア AWS account Amazon ECS Cluster Webアプリケーション Write AWS Step Functions Task 1 Read Amazon Aurora DSQL ALB Amazon ECS バックアップ 週次で連携されるデータを 加工してDSQLに格納 Users DSQLに格納されている データをCSV化して ダウンロード Task 2 ・ ・ ・ Amazon CloudFront AWS Backup リストア Task N Amazon Aurora DSQL 新しいクラスタに 向き先変更 迅速性は担保されるようになったが、 リストア時にTerraformやECSのタスク定義などの インフラ変更が必要となってしまった。
Amazon Aurora DSQL導入時のツラミ #jawsug #jawsdays2026 #jawsdays2026_b 列の変更要求への対応 • DSQLでは以下の様な列定義の変更ができない。 • • • • • • DROP COLUMN RENAME COLUMN ALTER COLUMN DROP UNIQUE CONSTRAINT NOT NULLカラムの追加 実施する場合は 「別のテーブルを用意して元のデータを移行する」 等の対応が必要となる。 • そもそもDSQLは大量データのMigrationが大変なのだが、列定義を変更する際に も同じようなツラミが発生する。
Amazon Aurora DSQL導入時のツラミ #jawsug #jawsdays2026 #jawsdays2026_b ローカル開発環境やCI環境の整備 • • • 現時点でAmazon Aurora DSQLの制約まで再現したエミュレータ は存在しない。 ローカル環境を構築する場合はPostgreSQLのコンテナで代替して いたが、DSQL固有の制約には気づけない。 開発内容次第で、ローカル開発環境からも直接DSQLに繋げて開発 する手法も取り入れた。
Amazon Aurora DSQL導入の メリット
Amazon Aurora DSQL導入のメリット #jawsug #jawsdays2026 #jawsdays2026_b とにかく安い! • • • • ピークの月で$12程度。 夜間の集中書き込み負荷のタイミングだけ課金が大きくなるため、 サーバレスの恩恵を十分に受けている。 当初書込負荷を考慮して Aurora db.r6g.largeでRead/Writer 構成をとっていたとすると、 インスタンス代金だけで $456 (7万円超) Aurora Serverless v2においてMulti AZ、最小ACU0.5の最小構成 (コールドスタートは未許容)とした場合のコストでも$144 (2万円超) エンタープライズ案件になると環境も増える (開発・ステージング・準本番等)ため、 小規模システムにおけるDBインスタンスの料金削減はデカい。
Amazon Aurora DSQL導入のメリット #jawsug #jawsdays2026 #jawsdays2026_b とにかく楽! 開発や保守運用時の手間を考えると、一概に全て楽になったとは言 いにくい部分もあるが、、 よしなにオートスケーリングをしてくれるため、負荷試験でも特に 問題はなく、いままでキャパシティの計算をせずに運用できている。 パッチ適用・OSアップデート等の対応も不要!
まとめ
#jawsug #jawsdays2026 #jawsdays2026_b まとめ …けど… • 通常のRDBMSの感覚でDSQLを使うと落とし穴にはまる • • 今日扱ったもの以外も制約やツラミがそれなりにある、、 特にバックアップリストアやデータエクスポート等 大規模データの取り扱いには要注意 • 一方で、設計や運用の工夫でおおよそ仕様上の制約は回避可能。 • 小規模システムでも、DSQLのメリットは十分に享受できている。
ご清聴ありがとうございました。
Appendix
Appendix #jawsug #jawsdays2026 #jawsdays2026_b Aurora Serverless v2よりもDSQLの方が安いのは何故か。 毎月最初の100,000DPUと1GBのストレージまで無料であるため、 Aurora Serverless v2より小規模システムだと価格メリットが出やすい。 小規模アプリケーションには十分な無料枠があると、 公式にも記載がされている! Amazon Aurora DSQL の料金 https://aws.amazon.com/jp/rds/aurora/dsql/pricing/
Appendix #jawsug #jawsdays2026 #jawsdays2026_b DSQLはコールドスタートしないの? DSQLもコールドスタートはありそうだが、 「数週間アクセスがない場合起きるかも」とre:Postで記載あり。 https://repost.aws/questions/QUZ7c2-aTiQaOKfImfxaMFfQ/doesaurora-dsql-scale-to-0