Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RDSプロキシは未来を変えるか
Search
TomoyaIwata
June 26, 2020
Technology
29k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RDSプロキシは未来を変えるか
Developers.IO 2020 CONNECTの発表資料です
TomoyaIwata
June 26, 2020
Transcript
100 slides
RDS Proxyは世界を変えるか︖ 2020年6⽉26⽇ CX事業本部 岩⽥ 智哉
⾃⼰紹介 CX事業本部 ⻄⽇本チーム サーバーサイドエンジニア 2020 Japan APN Ambassadors 2020 APN
ALL AWS Certifications Engineer 岩⽥ 智哉 2
⼤事なこと 資料作成時点でRDS Proxyは まだGAされていません なのでRDS Proxy⾃体の話はあまりしません…
2020年は サーバーレス元年︖
直近1年間でのLambda関連アップデート •VPC Lambdaのアーキテクチャ改善 •Lambda Destinations •並列化係数のサポート •Provisioned Concurrency •RDS Proxy(まだプレビュー)
•EFS統合(NEW!!) 5
Lambda×RDBはアンチパターン︖︖ •コールドスタートの問題 •IPアドレスやENIの枯渇問題 •スケールアップとスケールアウト の相性問題 6
Lambda×RDBはアンチパターン︖︖ •コールドスタートの問題 •IPアドレスやENIの枯渇問題 •スケールアップとスケールアウトの 相性問題 7
LambdaとRDSの ミスマッチを緩和する技術として RDS Proxyに期待
そもそもコネクションプーリングとは︖ プログラムがデータベース管理システム(DBMS) へアクセスする際、アクセス要求のたびに接続や 切断を繰り返すのではなく、⼀度形成した 接続窓⼝(コネクション)を維持し続けて 使い回す⼿法。[1] [1]:IT⽤語辞典 e-Words より引⽤ http://e-words.jp/w/コネクションプーリング
9
• 各プログラミング⾔語のライブラリ アプリでプーリング • アプリとDBの間にプロキシを挟む • Ex)Pgpool-II,PgBouncer… ミドルウェアでプーリング コネクションプーリングざっくり分類 10
アプリでプーリングするパターン コネクションプール connection worker worker connection connection worker connection Users
Application Database 11
ミドルウェアでプーリングするパターン コネクションプール connection worker worker worker connection connection Users Application
Database Middle ware 12
コネクションプーリングのメリット •接続のオーバーヘッド削減 •論理的接続と物理的接続の分離 13
接続の オーバーヘッド削減
コネクションプーリング 無い時
コネクションプーリングが無い時 16
コネクションプーリングが無い時 リクエスト 17
コネクションプーリングが無い時 接続要求 • TCPの3WAYハンドシェイク • DBユーザーの認証/認可 • …etc 18
コネクションプーリングが無い時 接続確⽴ 19
コネクションプーリングが無い時 SQL 20
コネクションプーリングが無い時 切断 21
コネクションプーリングが無い時 レスポンス 22
コネクションプーリングが無い時 最初に戻る 23
コネクションプーリング ある時
コネクションプーリングがある時 未使⽤ 使⽤中 25
コネクションプーリングがある時 未使⽤ 使⽤中 接続 26
コネクションプーリングがある時 未使⽤ 使⽤中 connection プーリング 27
コネクションプーリングがある時 未使⽤ 使⽤中 connection リクエスト 28
コネクションプーリングがある時 未使⽤ 使⽤中 connection プール済のコネクションを チェックアウトして利⽤ SQL 29
コネクションプーリングがある時 未使⽤ 使⽤中 connection 使⽤済みのコネクションは プールの未使⽤領域に戻る レスポンス 30
論理的接続と 物理的接続の分断
コネクションプーリング ある時
コネクションプーリングがある時 物理 論理 connection リクエスト 33
コネクションプーリングがある時 物理 論理 connection connection 接続 34
コネクションプーリングがある時 物理 論理 SQL connection connection 35
コネクションプーリングがある時 物理 論理 connection connection DBアクセスを 伴わない処理 36
コネクションプーリングがある時 物理 論理 connection connection リクエスト 37
コネクションプーリングがある時 物理 論理 connection connection connection 接続 38
コネクションプーリングがある時 物理 論理 connection SQL connection connection 39
コネクションプーリングがある時 物理 論理 connection connection connection DBアクセスを 伴わない処理 40
コネクションプーリングがある時 物理 論理 connection connection レスポンス 41
コネクションプーリングがある時 物理 論理 connection レスポンス 42
スパイク耐性の向上
コネクションプーリング 無い時
コネクションプーリングのメリット 25 30 35 40 45 50 55 60 リクエスト数
接続エラー コネクションプーリングを使わない場合 最⼤同時接続数を超過した接続要求はエラー 45
コネクションプーリングが無い時 46
コネクションプーリングが無い時 リクエスト 47
コネクションプーリングが無い時 接続要求 48
コネクションプーリングが無い時 接続確⽴ connection 49
コネクションプーリングが無い時 リクエスト connection 50
コネクションプーリングが無い時 接続要求 connection 51
コネクションプーリングが無い時 最⼤同時接続数超過エラー connection 52
コネクションプーリングが無い時 DB接続エラー connection 53
コネクションプーリング ある時 コネクションプーリング ある時
コネクションプーリングのメリット プーリングレイヤがDBへの流量を制御 25 30 35 40 45 50 55 60
プールへのリクエスト数 DBへのリクエスト数 55
コネクションプーリングがある時 物理 論理 connection リクエスト 56
コネクションプーリングがある時 物理 論理 connection connection 接続 57
コネクションプーリングがある時 物理 論理 SQL connection connection 58
コネクションプーリングがある時 物理 論理 リクエスト SQL connection connection 59
コネクションプーリングがある時 物理 論理 connection 接続 SQL connection connection 60
コネクションプーリングがある時 物理 論理 connection SQL SQL connection connection 61
コネクションプーリングがある時 物理 論理 connection 利⽤可能な物理接続が無い場合はWAIT SQL SQL connection connection 62
コネクションプーリングがある時 物理 論理 connection SQL 物理接続が利⽤可能になったら処理続⾏ connection connection 63
コネクションプーリング 良い事づくめ︖︕
よく⽿にする話… Lambdaは コネクションプーリングが 使えない︖︖
Lambdaのアーキテクチャ • Lambda実⾏環境はコンテナ内に構築される • リクエストに応じてLambda実⾏環境を⽣成 • アイドル状態のLambda実⾏環境は破棄される • 1つのLambda実⾏環境に対して同時に ルーティングされるリクエストは1つだけ
66
アプリ側でプーリングしても有効活⽤されない Lambda 実⾏環境 Database Users connection worker connection Lambda 実⾏環境
connection worker connection 無駄 無駄 67
Lambdaの プログラミングモデル
Lambdaのプログラミングモデル 関数・メソッド 実⾏ ランタイム 起動・初期化 コールドスタート時、 ウォームスタート時共に毎回実⾏ コールドスタート時のみ実⾏ 69
Lambdaのプログラミングモデル 初期化処理の中でDBに接 続することで、ウォーム スタート時は接続処理を スキップ可能 ただし、接続クローズは Lambda 実⾏環境破棄の タイミングになる 70
アイドル状態の実⾏環境がコネクションを消費する Lambda Function 2 Lambda 実⾏環境 connection Lambda Function 1
Lambda 実⾏環境 connection Lambda 実⾏環境 connection Users Database 71
アイドル状態の実⾏環境がコネクションを消費する Lambda 実⾏環境 connection Lambda Function 2 Lambda 実⾏環境 connection
Lambda Function 1 Lambda 実⾏環境 connection Lambda 実⾏環境 connection Users Database 72
Lambdaにおけるコネクションプーリング • 物理的接続と論理的接続を分割するメリットが薄い • 接続を永続化することに懸念事項が多い アプリでプーリング • ⾃前でEC2を⽴てるほどのメリットがあるのか︖ • サーバーレスとは︖
ミドルウェアでプーリング 73
Lambdaはコネクショ ンプーリングを活⽤ しづらい
と思いきや… re:invent2019にて RDS Proxy発表
RDSプロキシとは • RDS向けのフルマネージドなDBプロキシ • MySQLとPostgreSQLに対応(Aurora含む) • IAM認証にも対応 76
77 RDSプロキシのメリット •⼀般的なコネクションプーリングと 同様のメリット •フルマネージド •負荷に応じて⾃動的にスケール •フェイルオーバー時間の短縮
78 RDSプロキシのデメリット •料⾦が増える •5ms程度のレイテンシ増加 •障害点が増える
RDSプロキシの料⾦体系 •基となるデータベースインスタンス のvCPU数に応じて課⾦ •0.018USD/時間 ※2020/6時点の東京リージョンにおける料⾦体系 79
RDSプロキシが向いている ワークロード
RDSプロキシが向いているワークロード • DBアクセスを伴わない処理が 多くの割合を占める場合 • トランザクションを使⽤しない 場合 81
RDSプロキシが不向きな ワークロード
RDSプロキシが不向きなワークロード • DBアクセスを伴う処理が 多くの割合を占める場合 • ロングトランザクション • リクエストが多すぎる場合 • 「ピン留め」を誘発するよう
なワークロード 83
RDSプロキシが無意味なパターン 25 30 35 40 45 50 55 60 リクエスト数
接続エラー DBスペックに対してリクエスト数が 多すぎる場合はどうしようもない 84
ロングトランザクション 物理 論理 BEGIN connection connection 85
ロングトランザクション 物理 論理 connection connection Idle in transaction 86
ロングトランザクション 物理 論理 リクエスト connection connection Idle in transaction 87
ロングトランザクション 物理 論理 connection SQL connection connection Idle in transaction
88
ロングトランザクション 物理 論理 connection SQL connection connection Idle in transaction
connection 89
ピン留め • プールされた接続が特定のクライアントに固定され 複数のクライアント間で共有できない状況 • クライアントからのリクエストによりDBセッション 固有の情報が変更された場合、以後のリクエストは 変更後の状態に依存するため発⽣ 90
ピン留めが発⽣する場合 物理 論理 SET WORK_MEM=‘1MB’ connection connection WORK_MEM=‘2MB’ 91
ピン留めが発⽣する場合 物理 論理 connection connection connection WORK_MEM=‘1MB’ リクエスト 92
ピン留めが発⽣する場合 物理 論理 connection connection connection connection WORK_MEM=‘1MB’ WORK_MEM=‘2MB’ パラメータが更新されており、再利⽤できない
93
ピン留めが発⽣するケース https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html#rds-proxy-pinning Amazon RDS Proxy (プレビュー) による接続の管理 ピン留めを回避する • ⼀時テーブルを作成した場合
• プリペアドステートメント • 拡張クエリプロトコルの使⽤(PostgreSQLの場合) …etc 94
RDSプロキシ以外の 選択肢は無いのか︖
RDS Proxy以外に検討したいポイント •DBエンジンは適切なのか︖ •RDBという選択肢は適切なのか︖ •そもそもLambdaは適切なのか︖ 96
まとめ まとめ
98 まとめ RDS ProxyによってLambdaとRDSの相性の 悪さを緩和することができる。 緩和はあくまで緩和 まずはDynamoDBから検討したい
99 まとめ • RDS Proxyが有効に機能するかは ワークロードに依存 • 思考停⽌的に導⼊するのではなく 事前分析と検証を •
場合によってはアプリの改修も
None
More Decks by TomoyaIwata
See All by TomoyaIwata
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
1
620
CIで使うClaude
iwatatomoya
0
590
Lambdaの常識はどう変わる?!re:Invent 2025 before after
iwatatomoya
1
1.4k
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
2.7k
これでLambdaが不要に?!Step FunctionsのJSONata対応について
iwatatomoya
2
6.8k
Qdrantでベクトルデータベースに入門してみよう
iwatatomoya
0
3.2k
詳解 AWS Lambdaコールドスタート
iwatatomoya
2
3.6k
真のサーバーレスへ向けたAuroraの進化Aurora Limitless Database
iwatatomoya
1
5.2k
AWS SDKのClientはFactory経由で作ろう
iwatatomoya
1
1.2k
Other Decks in Technology
See All in Technology
Context != Context: One window, many lifecycles (AI Native DevCon, Nov 2026)
birgitta410
0
110
ライフワーク「猫でもわかるDirectConnect」
kentapapa
0
320
AWSを利用する上で知っておきたい名前解決の話 2026
nagisa53
5
3.4k
仕様と現実の間で落とし所を探るリモートMCPの認証・認可 — Sansanの認証基盤における課題と実践
sansantech
PRO
2
260
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.7k
GCASアップデート(202607-202610)
techniczna
1
250
これからのデータエンジニアの役割について考える / Rethinking the Role of Data Engineers in the AI Era
okiyuki99
0
400
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
770
MCPでAIが自分で調べに行く
cdataj
0
150
田んぼの見回りをIoTで減らしたい!水位監視から電池駆動カメラまでの試行錯誤
itosoft
1
120
Linuxネットワークスタック進化の軌跡: 過去10年の歩みと最新トレンド
orimanabu
1
350
cdkd (CDK Direct)
gotok365
4
290
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
The Curious Case for Waylosing
cassininazir
1
610
Deep Space Network (abreviated)
tonyrice
0
410
Darren the Foodie - Storyboard
khoart
PRO
5
4.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
Ruling the World: When Life Gets Gamed
codingconduct
0
440
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
820
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
300
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
780
The Invisible Side of Design
smashingmag
301
52k