いつも記事を読んでいただきありがとうございます!
モブエンジニア(@mob-engineer)です!
AWS reinvent:2024のアップデートで注目を浴びたAmazon Aurora DSQLをまだ触っていなかったため、何ができるのかをキャッチアップするために触ってみました。
データベース初学者でもすっと読めるように、平易な表現で執筆しておりますので、お気軽に読んでいただければ幸いです。
Amazon Aurora DSQLは現在プレビューサービスとなります
目次
- 想定読者層
- Amazon Aurora DSQLとは
- 概要
- 楽観的同時実行制御
- 利用可能リージョン
- ユーザ向けドキュメント
- コンソールでの設定画面
- 所感
- 良いところ
- 改善したほうがいいところ
- ビジネス視点での活用案
想定読者層
次のような興味関心を抱いている読者の方のお役に立てていただければ幸いです。
- Amazon Aurora DSQLについてザクっと知りたい方
- Amazon Aurora DSQLをコンソールで操作する方法を知りたい方
- ビジネス視点で何ができるのか知りたい方
Amazon Aurora DSQLとは
概要
Amazonサービスをキャッチアップするポイントとして公式ブログを読むことがありますので、公式から発表されているブログを読んでみましょう。
公式ブログ
本日、私たちは常時利用可能なアプリケーションに最適な、最速のサーバーレス分散 SQL データベース「Amazon Aurora DSQL」をご紹介します。Aurora DSQL は、事実上無限のスケーラビリティ、最高の可用性、そしてインフラストラクチャ管理ゼロを提供します。ワークロードの需要に合わせて、データベースのシャーディングやインスタンスのアップグレードなしにスケーリングできます。革新的なアクティブ・アクティブの分散アーキテクチャにより、シングルリージョン構成で 99.99%、マルチリージョン構成で 99.999% の可用性を実現し、高可用性アプリケーションの構築に最適です。サーバーレスの設計により、パッチ適用、アップグレード、メンテナンスダウンタイムなどの運用負荷が不要になります。Aurora DSQL は PostgreSQL 互換であり、開発者は既知のリレーショナルデータベースの概念、ドライバー、ツール、フレームワークを使ってアプリケーションを迅速に構築・デプロイできます。
すごくざっくりいうと、高可用性とスケーラビリティを最大まで追求したPostgreSQL対応のSQLデータベースサービスかと思います。
Aurora DSQL は、3 つの AZ にまたがるアクティブ/アクティブの単一リージョン クラスターを提供し、レプリケーション ラグと従来のデータベース フェイルオーバー操作を最小限に抑えます。ハードウェアまたはインフラストラクチャに障害が発生した場合、手動介入なしでリクエストを正常なインフラストラクチャに自動的にルーティングします。
アーキテクチャ構成を見る限り、3つのアベイラビリティゾーンに所属しているストレージ間でデータを分散管理しているような構成のように見えますね。
マルチリージョン対応の場合の構成として以下のようなアーキテクチャ構成になるようです。
楽観的同時実行制御
そのうえで、Amazon Aurora DSQLを利用するうえで注意が必要な要素として楽観的同時実行制御があります。
楽観的同時実行制御に関して、公式ブログでも説明がなされていました。
公式ブログ
Aurora DSQL は楽観的同時実行制御を採用しています。これは、リレーショナルデータベースよりも非リレーショナルデータベースでよく使われる手法です。楽観的同時実行制御では、同じ行を更新しようとする他のトランザクションについてあまり考慮せずにトランザクションロジックを実行します。トランザクション完了時に、データベースへの変更をコミットしようとします。その際、Aurora DSQL は他の同時実行トランザクションからの書き込みが干渉していないかを確認します。干渉がなければトランザクションは正常にコミットされますが、干渉があった場合はデータベースがエラーを返します。このような場合、ユーザーは悲観的同時実行制御を使うデータベースと同様に、どのように処理を進めるかを決める必要があります。ほとんどのユースケースでは、トランザクションをリトライするのが最善のアプローチです。
すごくざっくりいえば、データベースの変更確定(=コミット)時に競合が発生したら、エラーを返す仕様にしているといったニュアンスかと思います。
開発業務でGitを利用している方であれば、コミット時のコンフリクトをイメージすればわかりやすいかと思います。
そのうえで、注意が必要なところとして、競合が発生したらエラーが返されるため、エラー時の挙動を定義する必要があるといったことがあります。
今までのデータベースであれば、Aさん・Bさんが同じ行への更新を行おうとしたときに、ロック機能を利用することで、処理の待機時間がかかるが処理競合を防ぐことができるといった考え方でデータ更新を行えます。
Amazon Aurora DSQLの場合は、処理競合が発生したら、即座にエラーを返してしまい、ユーザ側でアクションを行わないといつまでたってもデータが反映されないといった状況が発生します。
そのため、Amazon Aurora DSQLを導入する場合、処理競合が発生した場合の処理方針(リトライ実行など)を考える必要があるといったことを重視する必要があります。
利用可能リージョン
本サービスは、現在プレビュー期間のため以下リージョンでしか利用できません。
- 米国東部 (バージニア北部)
- 米国東部 (オハイオ)
ユーザ向けドキュメント
ユーザ向けドキュメントに関してもある程度そろっているので、何から始めればいいのかよくわからないといった状況にはなりにくいかと思います。
スタートガイド
開発者向けガイド
APIリファレンス
APIリファレンスがそろっているのでCDKでの構築も可能な印象を持ちました。
コンソールでの設定画面
実際にコンソール上で触ってみないとわからないので触ってみたいと思います。
- 検索ボックスにDSQLと入力し、検索結果内のAmazon Aurora DSQLを押下
- クリック後、Amazon Aurora DSQLトップ画面が表示されるためcreate Clusterボタンを押下
- クリック後、Amazon Aurora DSQL設定画面が表示されます
- マルチリージョン構成で設定する場合は、Multi-Regionのチェックボックスを押下(今回はマルチリージョンを試してみるのでチェックを入れておく)
- Tagに関してはデフォルトで値が入っているため、Create Clusterボタンを押下
設定できるタグに関しては50個までのようですね。
- 作成したDSQL用のクラスターが表示されています
- StatusがCreateなのでしばらく待機します
補足ですが、クラスターに設定されたエンドポイント宛にpingを実行したら、ipv6アドレスが紐づいているようですね
C:\>ping taabtygyqp4nfpj5r63ieo4z54.dsql.us-east-1.on.aws
taabtygyqp4nfpj5r63ieo4z54.dsql.us-east-1.on.aws [2600:1f18:692c:303:31c4:3b43:ed6d:d04d]に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
2600:1f18:692c:303:31c4:3b43:ed6d:d04d の ping 統計:
パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、
C:\>
- 3分ほどでStatusがActiveになったのでCluster IDのリンクを押下
- クリック後、作成したクラスターの設定画面が表示されます
- Connectボタンを押下すれば、Amazon Aurora DSQL接続用のコマンドが表示されます
- Amazon Aurora DSQLが立ち上がったのは確認できたので削除します
- 上部のDeleteボタンを押下します
- 削除ポップアップが表示されるため、入力ボックスにconfirmを入力
- 入力後、Deleteボタンを押下
- 押下後、Cluster画面へ遷移します
- StatusがDeletingになっているためしばらく待機します
- 削除完了後、以下のような画面が表示されます
- ポップアップ内のus-east-2 (Ohio)を押下します
- 画面が遷移しResource was not foundが表示されています
- Linked Region Clusterに関しても消えていることが確認できました。
上記作業でAmazon Aurora DSQLの作成から削除までを一通り実行しました。
所感
所感として良いところ、改善したほうがいいところとビジネス視点での活用案について簡単にまとめたいと思います。
良いところ
- 設定箇所が少ないため初学者でも操作しやすい
- 設定画面に関しても表示内容が少ないためすっきりしている
- 複数クラスタのデータベースを数分で展開可能
改善したほうがいいところ
- 設定項目が少ないがゆえにカスタマイズした設定ができない
- マルチリージョン構成の場合の削除がややめんどくさい
- 削除時のメッセージがイケていない(confirm=削除と認識しづらい)
ビジネス視点での活用案
あくまで一個人として思った意見となります。
- アメリカ本土に拠点を置いている企業内のデータベース環境(情シス向け)
- データ管理条件がそこまで厳しくない中小企業のデータ保管先
- アメリカ本土に拠点を置いているメディア系企業のユーザデータ環境
参考サイト
簡単ではございますが、Amazon Aurora DSQLで遊んでみた感想について記事にしてみました。触ってみることで本サービスの奥深さを少し知ることができるかと思いますので、ぜひぜひ、触ってみてください。
最後まで、記事を読んでいただきありがとうございました。