はじめに
本記事では、主にAmazon RDSとAmazon Auroraの特徴、設定方法、活用法について解説します。
Amazon RDS基礎
Amazon RDS(Relational Database Service)は、クラウドでリレーショナルデータベースを簡単に設定、運用、スケーリングできるマネージドサービス。
マルチAZ構成
デフォルトの構成では、マルチAZに分散化されるDBクラスターを構成できる。マルチAZ配置にするとコストが高くなるが、可用性が向上する。
マイグレーション方法
オンプレミスからのマイグレーションには様々な方法がある。
- Mysqldumpユーティリティ
バックアップ/復旧プロセスを実装する方法
Amazon Aurora
Amazon AuroraはAWSが開発したリレーショナルデータベースで、MySQL/PostgreSQLと互換性がありながら、パフォーマンスと可用性が向上している。
Auroraの特徴
- データがプライマリDBインスタンスに書き込まれると、複数AZに展開されている6つのノードにデータが同期的に複製される
- リードレプリカ
読み取り処理の負荷分散に活用できる
Aurora グローバルデータベース
複数地域に跨ったデータベースのプライマリ/セカンダリ構成の運用を自動化する。
- エクスポート/インポートを利用したマニュアルでのスタンバイ構成を廃止可能
- リージョン障害時のフェイルオーバーを自動化
フェイルオーバー = プライマリーのサーバ/システム/ネットワークにおいて異常事態が発生したとき、自動的に待機系のセカンダリー構成に切り換える機能
Aurora Serverless
DBインスタンスクラスのサイズを指定せずにデータベースエンドポイントを作成できる柔軟性の高いAuroraデータベースである。
サーバーを常時起動しない構成が可能で、不規則なピークが発生するワークロードに適している。
RDS Proxy
アプリケーションとRDSデータベース間の仲介役としてコネクションを管理するプロキシ機能である。
Lambda関数とRDS Proxyの連携
Lambda関数からRDS Proxyに接続してデータ処理を実施することで、Lambda関数による効率的な非同期並列実行を可能にするデータ処理アプリケーションを構築できる。
コネクションプーリング
RDS Proxyは、Lambda関数の同時実行によって大量の同時接続をスケーリングするために必要なコネクションをプーリングする。
データベースへの接続を効率的に管理し、大量のLambda関数からのリクエストを少ない接続数で処理できるようにする。
サーバレスアプリケーションとRDSの連携
Lambda + API Gateway + RDSの構成
サーバレスアプリケーションでは、API Gateway経由でLambda関数を呼び出し、RDSデータベースとやり取りするアーキテクチャが一般的である。
データベース接続の中断対策
Amazon Aurora MySQLデータベースのアップグレード時など、Lambdaがデータベースと接続できなくなる期間がある。この問題には以下の対処を行う。
- Lambda関数が取得した顧客データをAmazon SQSキューに保存
後続処理のために一時的にデータを退避させる - 別のLambda関数がこのキューにポーリングして、顧客データをAuroraデータベースに保存
接続が復旧した後にデータを永続化する
コスト最適化
リザーブドインスタンス
長期間の利用が見込まれる場合は、RDSリザーブドインスタンスを購入することで、オンデマンド料金に比べて大幅なコスト削減が可能である。
1年間または3年間の契約で、最大75%の割引が適用される。