皆さんこんにちは、最近VR空間構築にハマってる西浦です。
APNアドバンストコンサルティングパートナーへ昇格したばかりですが、AWSソリューションプロバイダーやAPNプレミアティアを目指して邁進していきます!
APNアドバンストコンサルティングパートナー昇格記念「AWSサービスしりとりリレー」の11日目は、頭文字が"R"から始まるサービスということで、【RDS】に関連することについて記事にしたいと思います。
厳密にはRDSのプロキシサービスである、RDS Proxyについてご紹介します。
目次
概要
RDS Proxyとは
RDS向けの高可用性フルマネージド型データベースプロキシです。
名前の通りRDSの前に置いて使い、アプリケーションのスケーラビリティやデータベース障害に対する回復力と安全性の向上を実現します。
RDS Proxyをどう使うのか
通常、LambdaからRDSへのアクセスはアンチパターンと言われており、その理由は同時接続数の上限にあります。RDSはインスタンスタイプによって同時接続数が決まっていますが、Lambdaはリクエストごとに起動するため、RDS側の同時接続数の上限を気にせずコネクションを張ろうとして上限を超えたアクセスはエラーとなります。
ここでRDS Proxyを使うことにより、プーリングレイヤでDBへの流量を制御(既存コネクション再利用)することができ、コネクション数を抑えることができます。
上記の通り、一般的にはLambdaとの組み合わせてサーバーレス構成で取り上げられることが多いですが、EC2やECS上で動作するDBを使うようなアプリから利用することも可能です。
以下のようなユースケースに対応しています。
- 予測できないワークロードを持つアプリケーション
- データベース接続を頻繁に開いたり閉じたりするアプリケーション
- 接続を開いたままアイドル状態に保つアプリケーション
- 一時的な障害による可用性を必要とするアプリケーション
- 改善されたセキュリティと一元化された資格情報管理
RDS Proxyの料金体系
基となっているデータベースインスタンスのvCPUの数に応じて課金で、2021年7月時点での東京リージョンでは $0.018/時間 かかります。
※最低料金で2つのvCPU分からの料金となるので、1vCPUのデータベースインスタンスタイプの場合は$0.018 × 2(vCPU) = $0.036/時間かかります。
db.m6g.8xlargeの場合はvCPUが32個。$0.018 × 32(vCPU) = $0.576/時間
これを30日間利用した場合 $0.576 × 24(時間) × 30(days) = $414.72
注意点!
AWS公式のFAQにも記述がありますが、RDS Proxyはクエリまたはトランザクションの応答時間に平均5msのレイテンシが増加する点に注意。
また、特定の条件下において【ピン留め】と呼ばれる現象が発生してしまい、コネクションプール内のDB接続を特定のDBクライアントに対して固定されるので、RDS Proxyの恩恵を受けることができなくなります。
そのため場合によっては、アプリケーションの可用性は改善されず、レイテンシと費用も増加するなんてことになってしまうため、RDS Proxy導入前に以下をよく読んでおくことをオススメします。
参考(ピン留めを回避する)
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html#rds-proxy-pinning
RDS Proxy作成
RDS Proxy作成開始
※予めRDSを作成しておく必要がありますがここでは割愛。
RDSサービス画面を開き、「Proxies」から「プロキシを作成」へ進む
一意の「プロキシ識別子」を入力し、利用するRDSに合わせてエンジンの互換性を選択。
「Secrets Manager シークレット」から「新しいシークレットを作成する」を開く。
シークレット作成
AWS Secrets Managerの画面が開くので「新しいシークレットを保存する」をクリック。
「RDSデータベースの認証情報」にチェックが入っていることを確認し、シークレットに保存する「ユーザー名」と「パスワード」を入力。
RDS Proxy作成画面へ戻って続き
セキュリティグループを選択し、「プロキシを作成」をクリック。
以上でRDS Proxyの作成は完了です。
RDS Proxy自身がエンドポイントを持っているため、そこに対してリクエストすることでプロキシを介してRDSに接続できます。
まとめ
RDS Proxyを使う上で注意点として挙げられる、「5msレイテンシ増加」と「ピン留め」を考慮して使う必要がありますが、LambdaからRDSを心置きなく使えるので、これでまたアーキテクチャの選択肢が広がりました。
認証周りをRDS Proxy(Secrets Managerのシークレット)に任せられるのも嬉しいポイントです。
RDS Proxyメインで記載しましたが、ブログリレー的にはRDSに関連する内容の記述だったので、続いての頭文字は"S"から始まるサービスとなります。お楽しみに!
岡山のとある田舎村から大阪にやってきて早14年。24365のチームでサーバの運用を経て、自社のデータセンターや基幹系システム、共有系サービスの維持管理をメインでやっております。
最近スプラトゥーン3を購入したのでバンカラマッチ漬けの日々を送っています。
クラウドベリージャム:プロフィールページ