AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる LambdaとRDS Proxy
目的
AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる LambdaとRDS Proxy - connpass の復習
ハンズオン資料
https://github.com/harunobukameda/RDS-Proxy-AWS-Lambda/
ハンズオンの前に
イベント宣伝
LT
ハンズオンの復習
作ったAWSリソース
- Cloud9
- RDS (MySQL) に接続するため
- Secrets Manager
- RDS ProxyがRDSに接続するための情報を管理するため
- RDS
- RDS Proxy
- Lambda関数
- MySQLに接続するコードはNode.jsを利用
- 接続処理を実装するのは意外に手間なので、事前に用意されたzipをアップロードした
- VPC
- デフォルトVPCを利用
作ったものの構成
Cloud9は省略
- Lambda関数 -> RDS Proxy -> RDS
- Lambda関数 -> RDS
2通りの接続を試し、レスポンスタイムを比較した
RDS Proxyのメリット
- コネクションプールが使える
- Lambdaは常時起動するわけではないため、データベース接続でコネクションプールが効かない
- RDS Proxyを使うとコネクションプールとコネクションプールの共有ができるようになる
- failoverの時間が短縮できる
Amazon RDS プロキシの料金 | 高可用性データベースプロキシ | アマゾン ウェブ サービス
Amazon RDS プロキシでは、アプリケーションがデータベースと確立した接続をプールおよび共有でき、データベースの効率とアプリケーションのスケーラビリティが向上します。 RDS プロキシを使用すると、Aurora と RDS データベースのフェイルオーバー時間が最大 66% 短縮し、 AWS Secrets Manager および AWS Identity and Access Management (IAM) との統合によりデータベースの認証情報、認証、アクセスの管理が可能となります。
RDS Proxyのデメリット
- 課金注意
- ピン留めといって、コネクションプールが特定のDBクライアントに固定されてしまう現象がある
設定上の注意
- RDS作成時に『拡張されたログ記録』の注意を入れる。デバッグに使うため
- 本番運用時はセキュリティグループで必要な制限を入れること
- Cloud9からRDS Proxyに接続する際、
ERROR 2013 (HY000): Lost connection to MySQL server at 'handshake: reading initial communication packet', system error: 11
が発生することがある。RDS Proxyの構成に時間がかかることがあるので、数回接続を試すこと - ハンズオンはパスワードがハードコーディングされているが、LambdaでRDS Proxyに接続するコードを書く時、接続情報はSecurity Manager経由で取得するようにした方が良い
レスポンスタイムの比較
手元の環境だと、LambdaからRDS Proxyに接続した場合
初回 1,565ms, 2回目 232.26ms, 3回目 224.27ms, 4回目 50.76ms
初回はファーストタッチペナルティがあるのがわかった
ハンズオンで得た知識
- Cloud9のデータベースの実態はMariaDB
- パスワードを人力で設定するなら、ローテーションしないのが近年のトレンド
- RDS Proxyを使うとピン留めという現象がある
ハンズオンの感想
- ハンズオン2回目の参加で前回より手を動かしやすくなった。ずっとZoomを見ているのではなく、声を聞きながら自分で手を動かしたり工夫が必要
ハンズオンの件名を見てもっと初心者向けのLambdaの話かと思っていたが、RDS Proxyの説明が多くてためになった
AWSでのサーバレスでハマりやすいところがわかった。とにかくコネクションプールが関門かもしれない
- Lambdaを実運用するときは、アーキテクチャや開発運用に注意しないと大変
- バッチのように単発で起動する関数でない限り、Lambda関数からRDSを使うならRDS Proxyはあった方がいいかもしれない
- ピン留め注意!
- JavaアプリケーションはコネクションプールやPrepared Statementを大前提にしたりするので、気をつけないとピン留めの原因になりそう
- 監視も大事
- AWSは公式ドキュメントや発表スライド、Developers.IOをしっかり読む
- ハンズオンは雑談やQAが勉強になる
来週のGrafanaも参加します。ありがとうございました。