【店内全品P5倍(SS中限定要エントリー)】ブレーキパッド 取付セット projectμ リア HC-CS ディアマンテ F46A/47A(4WD) プロジェクトミュー プロミュー ブレーキパット 送料無料 ブレーキパッド [07/11~09/05] 送料無料 【只今エントリーでポイント+5倍!】

スマートフォン用の表示で見る

Sweet Escape

なぜAWS LambdaとRDBMSの相性が悪いかを簡単に説明する

表題の通りです。
AWS LambdaとRDBMS全般(Amazon RDSに限らず)はその特性的に相性が悪いのでデータストアはなるべくAmazon DynamoDBを使いましょうという話しをよくします。
今回はなぜそうなのかをもう少しだけ説明しようと思います。

【店内全品P5倍(SS中限定要エントリー)】ブレーキパッド 取付セット projectμ リア HC-CS ディアマンテ F46A/47A(4WD) プロジェクトミュー プロミュー ブレーキパット 送料無料 ブレーキパッド [07/11~09/05] 送料無料 【只今エントリーでポイント+5倍!】

まず、大前提としてAWS Lambdaは水平方向へのスケーラビリティを特徴とするサービスです。リクエストが来たらそれを処理するLambdaファンクションのコンテナを作成し、処理を実行します。

このLambdaファンクションのコンテナは1つあたり同時に1リクエスト(1イベント)しか処理しません。従って同時に100リクエスト来た場合は同じLambdaファンクションのコンテナ100個で処理されます。ただし、必ずしも毎回100コンテナが1から作成されて起動されるわけではありません。

Lambdaファンクションのコンテナは起動コストの効率化のために再利用も行います。いわゆるウォームスタートというものですね。ウォームスタート可能なコンテナがあれば新しくコンテナを作ることはせずにそれを利用します。しかし、ウォームスタートできるコンテナがない場合やあってもその数以上のリクエストを同時に処理する必要が発生した場合は新しくコンテナが作成・起動されます。これがデフォルトの同時実行1000だと1,000コンテナが同時に実行される可能性があるわけです。もちろん10,000であれば10,000個です。とはいえ、AWS Lambdaを中心とするサーバレスのプラットフォームはNever Pay for Idleなのでリクエストがなければ一切費用は発生しません。

最大同時接続数の問題

ご存知の通り各種RDBMSには最大同時接続数的なパラメータがあるわけですが、設定可能な値と実際に使い物になる値は別物です。。DBエンジンごとの多少の違いはもちろんあるものの、使い物になる数値というのはCPU数やメモリ数と大きく関係してきます。

当然ながら同時に接続される数が多ければ多いほど必要なCPU数、メモリ数が増えていきます。つまり、アクティブな接続が同時に数千から数万になるDBを動かすにはそれなりのスペックが必要というわけです。そもそもプロセスやスレッドが数千とか数万になってくると1サーバのOSだとコンテキストスイッチやら何やら厳しくなってくるので、DB分割なんかも検討するかと思います。

また、RDBMSというと、現状ではほとんどが処理量が増えた場合にスケールアウトで対応するのではなくスケールアップが必要になります。

【店内全品P5倍(SS中限定要エントリー)】ブレーキパッド 取付セット projectμ リア HC-CS ディアマンテ F46A/47A(4WD) プロジェクトミュー プロミュー ブレーキパット 送料無料 ブレーキパッド [07/11~09/05] 送料無料 【只今エントリーでポイント+5倍!】

WEBERSPORTS(ウェーバースポーツ) ブレーキ キャリパー カバー スバル レガシィ WEBER SPORTS キャリパーカバー (フロント) レガシィ B4 BL5 (TURBO 2.0GT / 2.0SPEC-B / BLITZEN) 本体:ブルー ロゴ:WEBER sports 白文字 [ENDLESS] エンドレス ZEAL 車高調 FUNCTION プラス7 (E) 【スカイライン CPV35】 本州・北海道は送料無料 沖縄・離島は送料1000円(税別) [ENDLESS] エンドレス ZEAL 車高調 FUNCTION.COM A-TYPE 【シルビア S14】 本州・北海道は送料無料 沖縄・離島は送料1000円(税別), 【エンドレス】【ENDLESS】【ブレーキキャリパー】【Super MICRO6(フロント用)】【システムインチアップキット】【ビート】【PP1】 【ORC】メタルクラッチ ORC409(シングル) スタンダードタイプ・ダンパー無し チェイサー JZX100系にお勧め!品番:ORC-409-02T ブーン[M301S][04/05~06/12]ディクセルディスクローター【SDT(12本スリット)タイプ】[フロント左右],ミラ ココア[L675S/L685S][13/06~]ディクセルディスクローター【HDタイプ】[フロント左右] タント エグゼ[L465S][10/02~]下記詳細要確認 ディクセルディスクローター【SD(6本スリット)タイプ】[フロント左右] SWAGE-LINE/スウェッジラインリアホースキット ステンレスチェイサー/JZX100商品番号:RKSW2013,アルト[CL21V/CM21V][90/2~91/8]ディクセルディスクローター【HDタイプ】[フロント左右] カローラ アクシオ[NZE141][09/02~12/04]下記詳細要確認 ディクセルディスクローター【SD(6本スリット)タイプ】[フロント左右] エーヴィヒ/Ewig ブレーキパッド リア サーキットコンパウンド CC38(ME22) EIP126 ポルシェ 911(997) 3.6 GT3 PCCB装着車を除く 2006年08月~,リアブレーキパッド 34216778327 ミニ/R56 TEXTAR 【低ダスト】CITROEN シトロエン C5 X7XFV用 フロントブレーキパッド ☆送料無料☆ 当日発送可能(弊社在庫品の場合) ■DIXCEL(ディクセル) ビーエム F02 740Li/750Li KB30/KB44 BMW ブレーキパッド リア ES タイプ.

エーヴィヒ/Ewig ブレーキパッド リア サーキットコンパウンド CC33(S55G) EIP137 BMW E87 UF20 120i 2006年01月~2007年05月アクレ ブレーキパッド リア フォーミュラ700C β203 A4 B7 1.8 T A4 B7 2.0/2.0 アトラクション A6 C5 2.4 A6 C5 2.4 クワトロ A6 C5 2.7 T クワトロ 8EBFB他[品番:5261] グラン(GLANZ) SPEC-I ブレーキパッド フロント フォード(FORD) FOCUS C-MAX 2 06/5~【最低でも5倍】 ■フォード ムスタング 4.6L ■年式 94~99■超低ダスト DIXCEL ディクセル リヤ ブレーキパッド Mタイプ■型式 1FAV2P47 ※備考 COBRA■品番 2051174 ★送料無料税込【smtb-F】, VW ルポ 6XBBY用 フロントブレーキパッド+ローターセット Volkswagen フォルクスワーゲン ☆送料無料☆ 当日発送可能(弊社在庫品の場合)■DIXCEL(ディクセル) ビーエム E39 (ツーリング) 525i/528i DS25/DS25A/DD28A/DP28 BMW E39 (TOURING) ブレーキパッド フロント M タイプ【E30 ブレーキパッド】Brembo BA5 86~90 リア用 ブラック P06 011[品番:I-1618] グラン(GLANZ) SPEC-I ブレーキパッド リヤ (メルセデスベンツ)MERCEDES-BENZ W203(ワゴン) C240 01/6~05/7ステージア/M35系/01.10~(エンドレスブレーキローターBASIC)リア左右2枚【送料無料】【DIXCEL】【ディクセル】 メルセデス・ベンツ Sクラス フロント ブレーキディスクローター HSタイプ 85/9~91/9 メルセデスベンツ W126 300SE/420SEL (126024/126035)HS1112372エクリプス【D32A/D38A】【95/2~99/6】ディクセルブレーキローター【SDタイプ】フロント・リア1台分.brembo ブレンボ ブレーキローター MERCEDES BENZ W211 (WAGON) 211270 03/11~06/07 フロント 左右セット メルセデス ベンツ[DIXCEL] ディクセル ブレーキローター PDタイプ フロント用 ポルシェ【911 (Narrow) 2.0 T/E 69 Venti DISC】 送料無料(沖縄・離島・同梱時は送料別途)ビガー【CB5】【89/9~92/1】ディクセルブレーキローター【SDタイプ】フロント・リア1台分[品番:48084] グラン(GLANZ) ハードシックスブレーキローター フロント 三菱(MITSUBISHI) チャレンジャー K94W/K94WG/K96W/K97WG 96/5~99/5.DIXCEL/ディクセル PD プレーンディスクローター 商品番号:1151276Sbrembo ブレーキローター ニッサン ルキノ JB14 97/8~99/4 リア用DIXCEL ディクセル PD ブレーキディスクローター エリシオン RR2 04/04~ フロント用左右1セット[DIXCEL] ディクセル ブレーキローター PDタイプ フロント用 ボルボ【S60 2.4 (140ps) RB5244 01/01~11/03】 送料無料(沖縄・離島・同梱時は送料別途).

2017-10-20 | [品番:18168] グラン(GLANZ) ハードシックスブレーキローター フロント トヨタ(TOYOTA) ウィンダム MCV20/MCV21 96/8~01/7

。要はサーバに積むCPU、メモリなどを増やす方向です

【店内全品P5倍(SS中限定要エントリー)】ブレーキパッド 取付セット projectμ リア HC-CS ディアマンテ F46A/47A(4WD) プロジェクトミュー プロミュー ブレーキパット 送料無料 ブレーキパッド [07/11~09/05] 送料無料 【只今エントリーでポイント+5倍!】

【DIXCEL】【ディクセル】【スリットディスクローターSD】【ブレーキローター フロント2枚SET】【カローラ (セダン)】【型式 AE92】年式 87/5~89/5 【型番311 2424】 アクレ ブレーキディスクローター フロント STD/スタンダード 4F005 プロシード UF66M UV66R [DIXCEL] ディクセル ブレーキローター PDタイプ フロント用 【レジェンド KA9 96/2~04/10 車台No:1500001~ EURO/EURO・Exclusive】 送料無料(沖縄・離島・同梱時は送料別途), ミツビシ ランサー セディア/セディアワゴン 00/11~02/12 CS5W (4H車) ACRE(アクレ) ブレーキローター スリット(SLT)タイプ 5F010 フロント用 左右セット ディスクローター ブレーキディスク 【DIXCEL】【ディクセル】【スリットディスクローターSD】【ブレーキローター フロント2枚SET】【キャリィ/エブリィ】【型式 DA52T/V/W DB52T/V】年式 99/1~01/09 【型番371 4013】 Project μ(プロジェクトミュー)ブレーキローター SCR Pure Plus6 無塗装 トヨタ ヴェロッサ(VEROSSA) JZX110(VR25) フロント,Project μ(プロジェクトミュー)ブレーキローター SCR Pure Plus6 無塗装 ニッサン プリメーラ(PRIMERA) WHP11, WHNP11 フロント Project μ(プロジェクトミュー)ブレーキローター SCR Pure Plus6 無塗装 スバル レガシー・ツーリングワゴン BP5(2.0R/03.1~04.4) フロント 【DIXCEL】【ディクセル】【ヒーティッド ディスクローターHD】【ブレーキローター フロント2枚SET】【ランサー LANCER】【型式 CK6A】年式 95/8~00/08 【型番341 8090】,DIXCEL(ディクセル)プレーンディスクローターPD ニッサン セレナ C25 NC25 フロント用 ENDLESS エンドレス ブレーキパッド MX72 リア  【EP354MX72】 クラウンエステート H11.12~H19.6 JZS171W (ターボ) ENDLESS エンドレス ブレーキパッド MX72 リア 【EP389MX72】 プリメーラ H13.8~ TNP12,WinmaX SPORTS AP3 MAZDA ユーノス800,ミレーニア リア用 【品番322】型式,TA3Y,TA3Z,TA5A,TA5P,TA5Y,TA5Z,TAFP 年式93.08- Projectμ (プロジェクトミュー) TYPE HC+ F421/R424 アクセラ BK5P 05.11~ 【ブレーキパッド 前後セット】H P.MU EURO ECO FIAT BARCHETTA BARCHETTA 183A1 96/01~97 LUCAS製キャリパー フロント.

ディクセル ブレーキパッド Xタイプ 前後1台分 アルファード MNH10W 02/05~08/04 2400~3000 送料無料DIXCEL ブレーキパッド&ディスクローター リア用 ルノー アヴァンタイム 品番 ES1350565 PD2250999S【新品】DIXCEL ブレーキパッド Xタイプ 前後1台分 スカイライン HR32 2000 89/5~94/11【店内全品P5倍(SS中限定要エントリー)】インテグラ DB9 ブレーキパッド フロント ENDLESS SSM EP280 エンドレス, 【店内全品P5倍(SS中限定要エントリー)】ブレーキパッド 取付セット projectμ リア HC-CS ファミリアワゴン BJ5W(RS/ウェブチューンド) プロジェクトミュー プロミュー ブレーキパット 送料無料 ブレーキパッド【店内全品P5倍(SS中限定要エントリー)】ブレーキパッド 取付セット projectμ リア HC-CS デボネア S12A(DOHC) プロジェクトミュー プロミュー ブレーキパット 送料無料 ブレーキパッドAPP SFIDA KG-1115ブレーキパッド前後セットJZS155クラウン 95/7~【店内全品P5倍(SS中限定要エントリー)】ブレーキパッド 取付セット projectμ リア HC+ IS350 GSE31 (F Sports) プロジェクトミュー プロミュー ブレーキパット 送料無料 ブレーキパッド【店内全品対象 P2倍&クーポン】ブレーキパッド 取付セット DIXCEL タイプM フロント エテルナ サヴァ E35A 89/10~92/3 ディクセル ブレーキパット 送料無料 ブレーキパッド【店内全品対象 P2倍&クーポン】ブレーキパッド 取付セット DIXCEL タイプM フロント シーマ FHY33 96/6~97/9 ディクセル ブレーキパット 送料無料 ブレーキパッドACRE ダストレスリアル ブリザード LD20 / LD20V / LD21G アクレ フロント用.プロジェクトμ ブレーキパッド NS-C NSC 1台分セット ギャラン E84A(ハードトップ) 92.2~92.6 プロジェクトミューリジット ブレーキパッド フロント RB-001 トヨタ カローラ/スプリンター/レビン/トレノ/FX AE86 リヤディスク【店内全品P5倍(SS中限定要エントリー)】ブレーキパッド プロジェクトミュー HC+ フロント(F) ユーノスコスモ JCESE MAZDA/マツダ プロジェクト・ミュー/プロミュー/プロμ/プロジェクトμ プレーキパット ブレーキパッド【店内全品P5倍(SS中限定要エントリー)】レガシィ BPE/BLE ブレーキパッド フロント ENDLESS SSM EP417 取付セット エンドレス 送料無料.DIXCEL ディクセル スリットディスクローターSD フロント左右セット 三菱 パジェロジュニア H57A 96/12~98/4 品番: SD3416063S[DIXCEL] ディクセル ブレーキローター SDタイプ フロント用 【スパーキー S221E S231E 00/09~02/06】 送料無料(沖縄・離島・同梱時は送料別途)DIXCEL ディクセル スリットディスクローターSD フロント左右セット 日産 プリメーラ HP11 00/05~00/12 品番: SD3211261SDIXCEL ディクセル ヒーティッドディスクローターHD リア左右セット 日産 スカイライン PV35 02/03~06/11 HD3259252S.

2017-10-20 | DIXCEL ディクセル スリットディスクローターSD フロント左右セット 三菱 ミラージュ CJ4A 95/8~00/08 品番: SD3412763S

。参照系はスケールアウトできても更新系はスケールアップで対応するしかないことが多いです。

さて、ポイントは先のLambdaファンクションの振る舞いとの兼ね合いです。まず、説明のとおり、リクエストがあるとコンテナが作られて起動されるのでこのタイミングでDBへのコネクションが張るわけですが、リクエストのたびに接続するのはコストがかかるので、その接続オーバーヘッドを減らすための方法として、グローバルスコープを利用することでコンテナがアクティブな間、つまりウォームスタートの場合はそれを利用するという方法があります。

一方で先ほどの説明の通り、Lambdaは同時に処理すべきリクエストは必要なリクエスト数分のコンテナで処理します。つまり、各コンテナからDBへとそれぞれコネクションが張られることになります。ということは仮にデフォルト状態であっても1000コネクションが張られる可能性があるということです。これがプロダクション環境でもう少し大きいシステムであれば数千同時実行 = 数千コネクションとかにになってきます。こうなってくると一般的にはコネクションプールを使うことが多いと思います。DBへ都度接続するコストを減らした上で、コネクションを使いまわすことで負荷を減らすわけです。

ところが、Lambdaではこのコネクションプールを実現することが難しいのです。Lambdaファンクションのコンテナ間では何も共有しませんし、外部のデータストアへと永続化しない限りはできないからです。つまり、コンテナをまたいで利用するようなコネクションプールの実装は難しいと言えます。それを管理する中間層のようなものを用意して各コンテナはそれ経由でDBにアクセスするような何かを作るとかして頑張ればなんとかなるかも知れませんが、ちゃんと検討したことないのでわかりません。

話しを戻すと、このようなLambdaファンクションのプラットフォーム特性を考えるとダウンストリームとなるシステムも同様にスケールアウトするようなものでないと耐えきれないです。同時実行数が少ないうちはいいですが増えてくると耐えられなくなってきます。実はこれはRDBMSに限らない話しなんですけどね。スケールアウトできないシステムの場合、ある程度まではピークにあわせたスペックのサーバを用意しておくことで対応できるとは思いますが、限界は来るかと思います。また、せっかくNever pay for idleを特徴とするプラットフォームを利用するにも関わらず、ピークのために通常よりも巨大なスペックのDBサーバを維持するのももったいない話しですしね。

というわけでLambdaと組み合わせて利用するデータストアとしてはDynamoDBを推奨しているわけです。DynamoDBの場合は分散型データベースであり同時接続数の増加そのものは気にする必要がなくなります。また、一貫して高速で安定したパフォーマンスを得られます

。もちろんスループット増に伴ってコストは発生しますが、そもそも対応できないという状況はなくなります。

VPCアクセスのレイテンシコスト問題

これはRDBMSに限らない話しなのですがLambdaファンクションがVPC内のリソースにアクセスしようとしたとき、かつコールドスタートが発生したときはその仕組み上10秒〜30秒ほどのレイテンシが上乗せされます。いくらコールドスタートの発生頻度が低いとはいえ、ゼロにすることはできないです。

一方で、RDBMSVPCの中に置くことが多いと思います。そうするとこのレイテンシの考慮が必要になってきます。ここはシステムの要件次第なので一概には言えないですが、DBアクセスを伴う処理がたまにとは言え10秒を超えてくることを許容できるかどうかです。

まとめ

LambdaとRDBMSの組み合わせをあまり推奨しない理由を2つ挙げました。
もちろんそれほど同時実行されることがないのであれば最初の問題はほとんど関係ないかも知れません。また、たまに発生する10秒を超える実行時間が問題ない場合もあるでしょう。

逆に言うとそうでない限り、LambdaとRDBMSを組み合わせて利用するのは止めたほうがいいです。すべてのLambdaファンクションがRDBMSに接続する必要がないのであればDynamoDBも併用してRDBMSの利用は必要最低限にするのもありですし、処理によってはLambdaファンクションのアクセス先はあくまでもDynamoDBにしてストリームを使って非同期にRDBMSに反映するという方法が取れるかも知れません。

このあたりはケースバイケースなので必要であればご相談ください。

 

最後にしつこいくらいに自分の本を宣伝しておきますね。

実践AWS Lambda ~「サーバレス」を実現する新しいアプリケーションのプラットフォーム~

 

 

スターをつけました

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。。。

読者です 読者をやめる 読者になる 読者になる
{yahoojp} {keisuke69.hatenablog.jp} xt01-myp12-gui-4167