リレーショナルデータベースをサーバーレス化 !
Amazon Aurora Serverless をグラレコで解説
Author : 米倉 裕基 (監修 : 内山 義夫、杉山 真也)
builders.flash 読者のみなさん、こんにちは ! テクニカルライターの米倉裕基と申します。
本記事では、AWS が提供するリレーショナルデータベースサービス Amazon Aurora の、サーバーレス版である Amazon Aurora Serverless を紹介します。
近年、クラウドを活用したアプリケーション開発が進み、アクセスパターンの変動への迅速な対応が求められています。Amazon Aurora Serverless (以下 Aurora Serverless) は、Amazon Aurora (以下 Aurora) の高速性と信頼性を保ちつつ、トラフィックの増減に合わせて DB インスタンスを自動でスケールすることができます。Aurora Serverless のオートスケール機能は、変動負荷やスパイクアクセスに柔軟に対応でき、利用するリソースを必要な分だけに調整することでコストを最適化できます。
本記事では、Aurora Serverless の主な機能と特徴を以下の項目に分けてご説明します。
それでは、項目ごとに詳しく見ていきましょう。
Aurora Serverless とは
Aurora Serverless は、Aurora のオンデマンド型オートスケール機能であり、Aurora データベースのサーバーレス版とも言えます。
Aurora のサーバーレス化
Aurora は、AWS が提供する高速で信頼性の高いリレーショナルデータベースサービスです。MySQL や PostgreSQL 互換の DB エンジンを選択でき、商用データベース並みの性能と信頼性を実現しています。一方、Aurora Serverless は、その Aurora をサーバーレス化したマネージドサービスです。Aurora Serverless ではトラフィック量に合わせて DB インスタンスが自動スケールするため、変動の大きなワークロードに対応できます。
以下は、Aurora と Aurora Serverless の比較表です。アプリケーションの要件に合わせて、最適なデータベースサービスを選択できます。
項目 | Aurora | Aurora Serverless |
インスタンスタイプ | 定義されたインスタンスタイプから選択 | 自動でスケール可能なインスタンス |
スケールの方法 | 手動 | 自動 |
ユースケース | 安定的なワークロード | 可変のワークロード |
料金体系 | インスタンス数とインスタンスタイプに応じた従量課金 |
使用時間とリソース量に応じた従量課金 |
1 インスタンスあたりの時間単価 (メモリ 32GB の場合 : 2024 年 2 月時点) |
0.7 USD (db.r5.xlarge) | v1: 1.6 USD (16 ACU) v2: 3.2 USD (16 ACU) |
Aurora Serverless のメリット
Aurora Serverless では、オートスケール機能により DB インスタンスが自動的にスケールするため、急なアクセス増加に動的に対応できます。
- オートスケールによる柔軟なリソース調整
- DB 管理作業の自動化による運用負荷の低減
- 高速スケーリングによる処理能力の迅速な拡張
- 信頼性の高いストレージインフラ
その他 Aurora Serverless の特徴や利点について詳しくは、製品ページの「利点」セクションをご覧ください。
主なユースケース
Aurora Serverless のオートスケール機能は、アクセスパターンの変動や予測困難な負荷変化に対応するのに適しています。具体的には、アクセス数の時間帯変動が大きい Web アプリケーション、不定期なキャンペーンサイト、新製品のテスト運用段階、突発的なアクセス増加への対応など、さまざまなシーンで効果を発揮します。
Aurora Serverless のオートスケール機能を活かした、以下のような用途での利用が適しています。
- アクセス数が時間帯によって大きく変動する Web アプリケーション
E コマースやニュースサイトなど、特定の時間帯にアクセスが集中する Web アプリケーションに適しています。アクセスピーク時だけ DB インスタンスの処理容量 (ACU) が自動的に増加するため、最小設定で始めておきながらコスト効率良く運用できます。
- 不定期にアクセスが集中するキャンペーンサイト
期間限定のキャンペーンサイトでは、開始時にアクセスが急増します。Aurora Serverless ならイベント開始前は最小設定で運用し、イベント時のみ DB インスタンスを自動で拡大できます。
- 新製品/サービスのテスト運用段階
新規サービスの場合、当初のアクセス数は少ないものの、次第に増えていくことが予想されます。Aurora Serverless であれば最初は小規模な DB から開始し、実際のトラフィックに合わせて拡張していけます。
- 突発的なアクセス増に対応する必要があるサービス
予期せぬバースト的なアクセス増加が発生した場合でも、Aurora Serverless のオートスケール機能であれば容量不足を回避できます。重要なデータを失うリスクを軽減できます。
クリックすると拡大します
その他のユースケースについて詳しくは、「Aurora Serverless v2 のユースケース」をご覧ください。
オートスケールの仕組み
Aurora Serverless のオートスケールは、データベースの負荷に応じて処理能力 (ACU) を自動でスケールする機能です。トラフィック量の変動に合わせて、データベースの処理容量を最適なレベルに調整し続けます。
Aurora Capacity Unit の設定
Aurora Serverless で利用する DB インスタンスには、Aurora Capacity Unit (ACU) という処理容量の単位が設定されています。1 ACU 当たり、約 2 GiB のメモリとそれに対応する CPU とネットワークが割り当てられており、ACU の数に応じてデータベースの処理容量が決定されます。
ユーザーは ACU の最小値と最大値を任意の値に指定できます。Aurora Serverless はこの範囲内で ACU 数を動的に増減させていきます。例えば、最小 ACU を 2、最大 ACU を 8 と設定した場合、Aurora Serverless は 2 〜 8 の ACU 数で DB インスタンスを自動的にスケールします。ACU は 0.5 単位で増減でき、最大 128 まで設定可能です。
ACU について詳しくは、「Aurora Serverless v2 クラスターの容量設定」をご覧ください。
スケーリングルール
Aurora Serverless は、CPU、メモリなどのリソース使用率をモニタリングします。リソース使用量が、ACU の容量に近づくと、自動的にリソースが追加され、逆に、長時間リソース使用量が ACU の容量から離れると、リソースが削減されます。この仕組みにより、データベース負荷に合わせて柔軟にリソースを活用できます。
Aurora Serverless v1 では、DB クラスターがしきい値に達するたびに最大 ACU 数まで 2 倍ずつ増加し、またしきい値を下回るたびに最小 ACU 数まで半分ずつ削減します。また、一定時間アクティビティがない状態が続くと、DB クラスターは一時停止し、データベース接続のリクエストがあると再開します。
対して、Aurora Serverless v2 では、0.5 ACU という細かい単位で段階的にスケールできるため、必要な分だけのリソースを追加し、最適なパフォーマンスを実現できます。また、スケーリング中も DB インスタンスを停止することなく、継続的に利用できます。
クリックすると拡大します
Aurora Serverless のオートスケールについて詳しくは、「Aurora Serverless v2 でのスケーリング」をご覧ください。
スケーリングプロセス
Aurora Serverless はトラフィック量の変動に応じて、DB インスタンスの容量を自動的にスケールしますが、Aurora Serverless v1 と v2 では、スケーリングのプロセスが以下の通り異なります。
スケーリングのワークフロー
Aurora Serverless v1 のスケーリング時には、以下のような内部プロセスが順を追って実行されます。
- 新しいインスタンスの起動:
接続セッションとCPU の利用率がしきい値を超えると、ウォームプールに待機しているインスタンスから、新しいインスタンスが起動します。 - キャッシュのウォームアップ:
インスタンスメモリにアクティブなデータを読み込み、クエリを実行するための準備を整えます。 - インスタンスの切り替え:
切り替えに伴う影響を最小限にするために、トラフィックが落ち着くセーフスケールポイントを見計らって、全てのリクエストを新しいインスタンスへのルーティングに切り替えます。 - 古いインスタンスの解放:
新しいインスタンスが安定して稼働し始めたことを確認したら、古いインスタンスはシステムから削除され、リソースが解放されます。
クリックすると拡大します
対して、Aurora Serverless v2 では、v1 のような複雑なワークフローは行われません。CPU やメモリ、ネットワークの利用率が ACU のしきい値に近づくと、0.5 ACU 単位でリソースが自動で追加されます。必要な分だけリソースがシームレスにスケールされるため、スケーリングに伴うオーバーヘッドを最小化できます。
関連コンポーネント
Aurora Serverless では、以下のようなコンポーネントと連携することでより安定的なオートスケールを提供します。
コンポーネント | 役割 |
Amazon CloudWatch | Aurora Serverless の各種メトリクスを監視し、スケーリング判断のための指標を提供します。 |
Performance Insights (Aurora Serverless v2 のみ) |
スケーリング前後の DB ロードやクエリパフォーマンスをモニタリングし、スケーリングの影響を評価するために使用できます。 |
RDS Proxy (Aurora Serverless v2 のみ) |
接続管理を簡素化し、データベースの障害に対するアプリケーションの耐障害性を高めます。 |
Network Load Balancer (Aurora Serverless v1 のみ) |
VPC からのトラフィックをロードバランサーが受け取り、マルチテナントルーターフリートに振り分けます。 |
マルチテナントルーターフリート (Aurora Serverless v1 のみ) |
ネットワークロードバランサーから受け取った各テナントに対するトラフィックを、適切な DB インスタンスにルーティングします。 |
Aurora Serverless のパフォーマンスの維持やモニタリングを実施するためのパラメータや連携サービスについて詳しくは、「Aurora Serverless v2 でのパフォーマンスとスケーリング」をご覧ください。
バージョン比較
Aurora Serverless には v1 と v2 の2つのメジャーバージョンが存在します。Aurora Serverless v1 は 2018 年にリリースされた初期バージョンです。Aurora Serverless v2 は 2022 年にリリースされた新しいバージョンで、起動時間の短縮などパフォーマンスや機能が強化されています。
Aurora Serverless v2 の改善点
v2 の主な改善点は以下の通りです。
- スケーリング時間の短縮
- より細かい ACU 単位での調整
- マルチ AZ への対応
その他、Aurora Serverless v1 と v2 の違いについて詳しくは、「Aurora Serverless v2 と Aurora Serverless v1 の比較」をご覧ください。
スケーリングイベント時の比較
Aurora Serverless v1 と v2 では、スケーリングの安定的な実行を実現するための処理が異なります。
項目 | Aurora Serverless v1 | Aurora Serverless v2 |
スケーリング単位 | 整数単位 (1) の ACU | 少数単位 (0.5) の ACU |
インスタンススケーリング | なし | あり (スケーリングイベントが即座に反映される) |
スケーリングポイントのトリガー | ACU が最小または最大設定に達した場合または負荷変動時 | 少数単位での負荷変動に即座に反応し、リアルタイムにスケーリング |
Aurora Serverless v1 の場合、スケーリングイベントが発生した際に、一定のクールダウン期間を設け、スケーリングを実行します。スケーリングアクティビティ間のクールダウン期間は、スケールアップが 5 分、スケールダウンが 15 分です。クールダウン期間により、頻繁なスケーリングに伴うオーバーヘッドを軽減し、スケーリング前後のシステムの安定稼働時間を確保しています。
対して、Aurora Serverless v2 では、明示的なクールダウン期間はなく、ワークロードの負荷に応じて、0.5 ACU ごとにミリ秒単位でシームレスにスケーリングされるため、より柔軟でリアルタイムなオートスケールが可能になりました。
クリックすると拡大します
スケーリングイベント処理のメリット
これらの Aurora Serverless のスケーリングイベント処理には、以下のようなメリットがあります。
- 頻繁なスケーリングに伴うオーバーヘッドを軽減
- スケーリング前後のシステムの安定稼働時間を確保
- 不要なリソースを解放することによるコストの抑制
2024 年現在では、データベースエンジンの対応バージョンの指定など、Aurora Serverless v1 を利用する特別な要件がない限り、Aurora Serverless v2 の利用が推奨されています。なお、2024 年 12 月 31 日をもって、Aurora Serverless v1 のサポートが終了するため、すでに Aurora Serverless v1 を使用している場合、Aurora Serverless v2 への移行を検討することをお勧めします。
プロビジョニング済みの Aurora データベースから Aurora Serverless への移行や、Aurora Serverless v1 から v2 への移行について詳しくは、「Aurora Serverless v2 の開始方法」をご覧ください。
まとめ
最後に、本記事で紹介した機能の全体図を見てみましょう。
本記事では、トラフィックの変動に合わせてデータベースリソースを自動でスケーリングする、オンデマンド型のサーバーレスデータベースサービス Aurora Serverless の機能とメリットを中心に解説しました。Aurora Serverless は、アクセスパターンの予測が困難な可変的なワークロードに対応でき、オートスケールによりリソースを最適化するため、コストを抑えつつ高パフォーマンスを実現できるのが大きなメリットです。
本記事を読んで Aurora Serverless に興味を持たれた方、実際に使ってみたいと思われた方は、ぜひ製品ページの「Amazon Aurora Serverless」や、「Aurora Serverless v2 Dive Deep」などのコンテンツも合わせてご覧ください。
AWS グラレコ解説のその他の記事はこちら
- 選択
- 今話題のブロックチェーンをAWSで実現する仕組みをグラレコで解説 »
- サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 »
- 機械学習のワークフローってどうなっているの ? AWS の機械学習サービスをグラレコで解説 »
- 外部から AWS のバックエンドサービス利用を実現する仕組みをグラレコで解説 »
- AWS でデプロイの自動化を実現するベストプラクティスをグラレコで解説 »
- コンテナを使ってモノリスを分割する方法をグラレコで解説 »
- クラウドへ移行する理由とそのステップをグラレコで解説 »
- Windows ワークロードをクラウドへ移行するためのベストプラクティスをグラレコで解説 »
- サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説 »
- サーバーレスで SaaS を構築する方法をグラレコで解説 »
- 「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説 »
- クラウド設計・運用のベストプラクティス集「AWS Well-Architectedフレームワーク」をグラレコで解説 »
- 特定の顧客セグメントにメッセージ送信。「Amazon Pinpoint」の仕組みをグラレコで解説 »
- アプリにユーザー認証機能を簡単に追加できる「Amazon Cognito」をグラレコで解説 »
- わずか数分で WordPress サイトを構築できる「Amazon Lightsail」をグラレコで解説 »
- 異なるアプリケーション同士の疎結合を実現。「Amazon SQS」をグラレコで解説 »
- Web アプリを高速に開発できる「AWS Amplify」をグラレコで解説 »
- 機械学習の知識ゼロでもテキストデータを分析。Amazon Comprehend をグラレコで解説 »
- ビジネスデータをまとめて可視化 & 分析。Amazon QuickSight をグラレコで解説
- 人工衛星の地上局を 1 分単位で利用。AWS Ground Station をグラレコで解説
- カオスエンジニアリングで本当にカオスにならないための進め方をグラレコで解説
- GraphQL API を簡単に作成 & 運用。AWS AppSync をグラレコで解説
- IoT 環境を必要な機能を選択するだけで構築。AWS IoT をグラレコで解説
- 高い可用性と耐久性のオブジェクトストレージ。Amazon S3 をグラレコで解説
- サーバーレスでイベント駆動型アプリケーションを実現。AWS Lambda をグラレコで解説
- データサイエンス教育の強い味方。Amazon SageMaker Studio Lab をグラレコで解説
- 高速で柔軟な NoSQL データベースサービス。Amazon DynamoDB をグラレコで解説
- リレーショナルデータベースを簡単・迅速に実現。Amazon RDS をグラレコで解説
- アプリのワークフローを視覚的に構成。 AWS Step Functions をグラレコで解説
- データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説
- アプリケーションへのトラフィックを効率的に負荷分散。Application Load Balancer をグラレコで解説
- AWS で簡単にコンテナアプリケーションを構築 ! Amazon ECS をグラレコで解説
- 大規模データセットも簡単クエリ! Amazon Athena をグラレコで解説
- キャッシュ機能でアプリの高速化を実現 ! Amazon ElastiCache をグラレコで解説
- 使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説
- ストリーミングデータを簡単にキャプチャ、処理、保存 ! Amazon Kinesis Data Streams をグラレコで解説
- AWS で始める機械学習はじめの一歩 ! AWS の主要な AI/ML サービスをグラレコで解説
- リレーショナルデータベースをサーバーレス化 ! Amazon Aurora Serverless をグラレコで解説
- ML 駆動の検索エンジンで企業の情報管理を革新! Amazon Kendra をグラレコで解説
- オンプレミス、エッジ、どこでも楽々コンテナ管理 ! Amazon EKS Anywhere をグラレコで解説
- 生成 AI アプリケーション開発をもっと身近に、簡単に ! Amazon Bedrock をグラレコで解説
- わずか数クリックで多様な脅威を監視しクラウドを保護 ! 脅威検出サービス Amazon GuardDuty をグラレコで解説
- データの改ざん耐性と変更履歴の検証可能性を実現 ! 台帳データベース Amazon QLDB をグラレコで解説
- 生成 AI x クラウドがもたらす次世代のイノベーション ! AWS Summit Japan Day 1 基調講演をグラレコで解説
- ビジネス向け生成 AI アシスタント Amazon Q Business をグラレコで解説
- 生成 AI コーディングアシスタント Amazon Q Developer をグラレコで解説
- フロントエンドとバックエンドを統合開発 ! フルスタック TypeScript 開発環境 AWS Amplify Gen 2 をグラレコで解説
筆者プロフィール
米倉 裕基
アマゾン ウェブ サービス ジャパン合同会社
テクニカルライター・イラストレーター
日英テクニカルライター・イラストレーター・ドキュメントエンジニアとして、各種エンジニア向け技術文書の制作を行ってきました。
趣味は娘に隠れてホラーゲームをプレイすることと、暗号通貨自動取引ボットの開発です。
現在、AWS や機械学習、ブロックチェーン関連の資格取得に向け勉強中です。
監修者プロフィール
内山 義夫
アマゾン ウェブ サービス ジャパン合同会社
データ事業本部 サービススペシャリストソリューション本部
シニア RDBMS スペシャリストソリューションアーキテクト
前職では、データベースのコンサルタントとしてデータベースの設計構築やチューニングなどに従事。AWS では、データベーススペシャリストとして、データベースのクラウド化における技術的な課題解決を支援しています。
杉山 真也
アマゾン ウェブ サービス ジャパン合同会社
データ事業本部 サービススペシャリストソリューション本部
シニア RDBMS スペシャリストソリューションアーキテクト
外資系ハードウエア・データベースソフトウエアベンダーにてデータベースのプリセールスコンサルタントとして 10 年従事。ネット企業にても、サイト構築・運用・プロデュース・ディレクション・マネージメント等様々な業務を 10 年以上行ってきました。現在は、AWS にて RDS、Aurora を中心に、MySQL を活用されているお客様の課題解決をサポートする為に日々対応しています。
AWS を無料でお試しいただけます