Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RDS Proxyを使ってAuroraと仲良くなる
Search
chimame
February 19, 2020
Programming
0
1.3k
RDS Proxyを使ってAuroraと仲良くなる
HIGOBASHI.AWS #13
〜令和新春!AWSだらけのLT大会〜
chimame
February 19, 2020
Tweet
Share
More Decks by chimame
See All by chimame
知って得する@cloudflare_vite-pluginのあれこれ
chimame
1
260
Boost Your Web Performance with Hyperdrive
chimame
1
340
RemixでVersion skewに立ち向かう
chimame
2
1.2k
私がエッジを使う理由
chimame
10
4.1k
GraphQL Server on Edge after that
chimame
1
1.6k
Accelerating App Dev with Cloudflare Workers
chimame
1
460
GraphQL Server on Edge
chimame
12
6.2k
エッジで輝くフロントエンド
chimame
11
6.8k
Cloudflare Workersと状態管理
chimame
4
1.9k
Other Decks in Programming
See All in Programming
詳細の決定を遅らせつつ実装を早くする
shimabox
1
1.2k
しっかり学ぶ java.lang.*
nagise
1
380
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
290
自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー
segadevtech
2
1k
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
5
1.6k
The Missing Link in Angular's Signal Story: Resource API and httpResource
manfredsteyer
PRO
0
130
ゼロダウンタイムでミドルウェアの バージョンアップを実現した手法と課題
wind111
0
190
Bakuraku E2E Scenario Test System Architecture #bakuraku_qa_study
teyamagu
PRO
0
760
競馬で学ぶ機械学習の基本と実践 / Machine Learning with Horse Racing
shoheimitani
13
12k
Vueで学ぶデータ構造入門 リンクリストとキューでリアクティビティを捉える / Vue Data Structures: Linked Lists and Queues for Reactivity
konkarin
1
310
FlutterKaigi 2025 システム裏側
yumnumm
0
1.1k
All(?) About Point Sets
hole
0
160
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
76
5.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
The Cult of Friendly URLs
andyhume
79
6.7k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Balancing Empowerment & Direction
lara
5
750
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Practical Orchestrator
shlominoach
190
11k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Transcript
RDS Proxyを使って Auroraと仲良くなる 2020/01/30 HIGOBASHI.AWS #13 〜令和新春!AWSだらけのLT大会〜
RDS Proxy Agenda 自己紹介 まとめ
Whoa! 名前: rito 職業: Webエンジニア (アプリケーションエンジニア) 分野: Ruby on Rails,
Nodejs, React, Docker, AWS, GCP 所属: Ateam Finergy Inc. コミュニティ: GDG Osaka Rails follow-up Osaka Osaka Web Developers Meetup twitter: @chimame_rt GitHub: chimame
“Auroraとコネクション プーリングの仕組みは 相性が悪い”
コネクションプーリングとは? 5
Application Connections 使用中 使用中 使用中 未使用 未使用
7 Q.なんで相性が悪い?
Application Connections 使用中 使用中 使用中 未使用 未使用 replica master フェイルオーバーが発生したらmaster
だったreplicaに繋いだまま
RDS Proxy Managing Connections with Amazon RDS Proxy (Preview)
AWS re:Invent 2019で発表された新しいサービス。 • その名の通りRDS(データベース)用のプロキシ • RDS接続コスト(メモリ、CPU)を肩代わりする • 接続にIAM認証が使えてセキュアになる 特に発表された段階の巷ではAWS
LambdaとRDSの接続相 性の悪さを軽減できると期待されました。 RDS Proxyとは? 10
Application Connections 使用中 使用中 使用中 未使用 未使用 Aurora RDS Proxy
new!
RDS Proxyの利点 Benefits of using RDS Proxy
コネクションプーリング問題の解決
なんで? • アプリケーションはProxyに対して、コネクションプールをしている • Auroraがフェイルオーバーして接続が借り変わるのはProxyが管理している そのため、Read/Writeが入れ替わってもアプリケーションは意識する必要がない 相性が悪いというフェイルオーバー時の動作 が解消される 14
15 Q.フェイルオーバー時の読み込みないし書 き込み不可時間はどれくらい?
16 A.接続が入れ替わる瞬間の 1.4秒間くらい発生する
def show Rails.logger.debug("start: #{Time.zone.now.iso8601(3)}") Test.where(id: 1).pluck(:id) head :ok rescue Rails.logger.debug("error:
#{Time.zone.now.iso8601(3)}") head :forbidden end
フェイルオーバーとしては20秒ほど
約1.2秒の間、Readができない事象が 発生。
def show Rails.logger.debug("start: #{Time.zone.now.iso8601(3)}") Test.create(name: "#{Time.zone.now.iso8601(3)}") head :ok rescue Rails.logger.debug("error:
#{Time.zone.now.iso8601(3)}") head :forbidden end
フェイルオーバーとしては30秒ほど
約1.4秒の間、Writeができない事象が 発生。
RDS Proxyの欠点 Disadvantages of using RDS Proxy
レイテンシーが高くなる
def start # 1万件のデータ登録にProxyのありなしでどれくらい時間差が出るか 10000.times do |i| Test.create(name: "proxy #{i}")
end end
Proxyを介した場合は約3分15秒で完了 直接接続した場合には約1分8秒で完了
Proxyを介した場合と直接繋いだ場合のネットワーク送受信のスループットに大きな差が出 た RDS Proxyを挟むことで通信が制御され る? 27
Proxyを介した場合と直接繋いだ場合のネットワーク送受信のスループットに大きな差が出 た RDS Proxyを挟むことで通信が制御され る? 28 Proxyを介した場合 直接の場合
Readエンドポイントがなくなる
ここに接続エンドポイントのスクリーンショットを貼る masterへのエンドポイントしかない
まとめ STAY 障害性の保険と考えれば 費用として悪くない フェイルオーバーに は対応できる GOOD! Readエンドポイントは直接Aurora 参照することになりそう STAY
スループットが落ちるけど プレビューだからと思いたい BAD
Thanks! Does anyone have any questions? rito@chimame