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
ここがつらいよマルチテナント
Search
メグリ株式会社
October 26, 2022
Technology
0
620
ここがつらいよマルチテナント
2022/10/13に実施したイベント「最近チャレンジしたことをまとめてみた」で利用した資料
https://mgre.connpass.com/event/260781/
メグリ株式会社
October 26, 2022
Tweet
Share
More Decks by メグリ株式会社
See All by メグリ株式会社
メグリ株式会社_メグリコンパス.pdf
saiyou_mgre
1
640
アップロードキーに苦戦した話 🤯
saiyou_mgre
0
1.8k
メグリ株式会社_エンジニア向け会社紹介資料
saiyou_mgre
1
14k
メグリ株式会社
saiyou_mgre
1
16k
Other Decks in Technology
See All in Technology
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
710
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
310
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
170
Jetpack Composeで始めるServer Cache State
ogaclejapan
2
170
Qiita埋め込み用スライド
naoki_0531
0
2.8k
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
220
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
110
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Speed Design
sergeychernyshev
25
670
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Navigating Team Friction
lara
183
15k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
Transcript
ここがつらいよマルチテナント © MGRe, Inc. 2022.10.13 メグリ株式会社 プロダクト部サーバーサイドエンジニア 蔵下 正治
© MGRe, Inc. All Rights Reserved. 2 本日のお題 マルチテナント向けSaaS開発時の経緯とマルチテナントのつらみとその対策につ いて
© MGRe, Inc. All Rights Reserved. 3 Index 01. 本日のお題
02. MGReについて 03. MGReの歴史 04. 過去のサービスとの比較 05. マルチテナントにしてつらかった点 06. 対策 07. まとめ
© MGRe, Inc. All Rights Reserved. 4 MGReについて
© MGRe, Inc. All Rights Reserved. 5 MGReについて • マルチテナント向けのSaaS
• ニュース、お知らせ、クーポン、店舗検索、プッシュ通知、アイテム 等 + 会員証の基本機能 • 様々なECや会員基盤システムと連携が可能 χϡʔε Ϋʔϙϯ ΞΠςϜ ళฮ ձһূ
© MGRe, Inc. All Rights Reserved. 6 MGReについて
© MGRe, Inc. All Rights Reserved. 7 過去のサービスとの比較 डୗ࣌ ڥ
γϯάϧςφϯτ γϯάϧςφϯτ Ϛϧνςφϯτ ࣮ํ๏ ϑϧεΫϥον ύοέʔδʢϕʔείʔυ͔ΒΓ ग़͠ ΧελϚΠζʣ 4BB4 ΧελϜྖҬ αʔόʔʢ"84ʣ &$ ".* &MBTUJD#FBOTUBML ʢϚωʔδυ&$ʣ 'BSHBUFʢίϯςφʣ σʔλϕʔε 3%4NZTRM "VSPSB "VSPSB4FSWFSMFTT Πϯϑϥཧ $MPVE'PSNBUJPO εΫϦϓτ $MPVE'PSNBUJPO σϓϩΠ $PEF1JQFMJOF $PEF1JQFMJOF &$3 ϩάɾσʔλऩू $MPVE8BUDI $MPVE8BUDI ,JOFTJT 'JSFIPTF
© MGRe, Inc. All Rights Reserved. 8 マルチテナントにしてつらかった点
© MGRe, Inc. All Rights Reserved. 9 マルチテナントにしてつらかった点 • パフォーマンスの課題
◦ DB(Aurora Serverless)の性能限界が見えてる ◦ WAF 等 AWS のリソース上限 • 運用の課題 ◦ テナント領域のアップデートが手間 ◦ テナントが混ざる • 一番の課題 ◦ やらかすと被害が大きい
© MGRe, Inc. All Rights Reserved. 10 • DB(Aurora Serverless)の限界
◦ コンテナ(API)はいくらでも増やせる ◦ プッシュ配信時のスパイクアクセス ◦ MGRe のセグメント配信は仕様上キャッシュが難しい ◦ 通勤時(9時台)やスーパー等の小売はお昼過ぎ(12〜13時台)と夕方 (17時以降) パフォーマンスの課題 データベース容量(ACU) CPU使用率
© MGRe, Inc. All Rights Reserved. 11 • WAF 等
AWS のリソース上限 ◦ route53 でテナントごとにドメインを用意 → 上限500程度 ◦ テナントごとにロードバランサを用意 → 上限100程度 ◦ WAF による管理画面用 API の IP 制限 → 正規表現のため最大文字数 の制限 ◦ Aurora Serverless のさばける上限 → 上限 ACU 256(メモリ 488GB) パフォーマンスの課題
© MGRe, Inc. All Rights Reserved. 12 • テナント領域のアップデートが手間 ◦
テナント毎に異なる認証処理を吸収 ◦ mgre-auth という gem を用意 ◦ ある程度共通化はされているものの数が多い • テナントが混ざる 運用面の課題
© MGRe, Inc. All Rights Reserved. 13 • やらかすと被害が大きい ◦
あるテナントのユーザー数とニュースのレコード数が増加 ◦ それによりセグメント検索 API のパフォーマンスが低下 ◦ リクエストがつまり始める ◦ リクエストがつまっているためコンテナが新しく立ち上がり続ける ◦ コンテナ起動時に DockerHub からあるイメージをプルしていた ◦ 短時間にプルし過ぎたためレート制限 ◦ イメージをプル出来ずコンテナ起動失敗 ◦ 生きているコンテナも次々死ぬ ◦ コンテナがいなくなり全てのテナントでサービス停止😭 一番の課題
© MGRe, Inc. All Rights Reserved. 14 対策
© MGRe, Inc. All Rights Reserved. 15 • 古いデータの削除、非公開化 ◦
インデックスの見直しも含め、取得レコード数を減らすのが最も効果的 • Aurora Serverless v2 への移行 ◦ 細かく素早い ACU(容量)変更 ▪ 0.5単位、v1 は8→16→32のように2の累乗単位 ◦ 適切な ACU 選択によるコストメリット、マルチ AZ 対応等 v1 から比べ て多くの利点 ◦ v1 はインスタンス1つのみ、v2 は Aurora と同じライター/リーダーク ラスター方式 ◦ v1 からの進化というより Aurora をサーバーレスにした感じ パフォーマンスの対策
© MGRe, Inc. All Rights Reserved. 16 • テナント領域のアップデートの自動化 ◦
PR 後各テナントのリポジトリにおいてコミット→ PR までの自 動化、スタンダードプランにおいてはマージ〜自動デプロイまで の仕組みづくり 運用面の課題
© MGRe, Inc. All Rights Reserved. 17 • QA(テスト)含むリリース体制の整備 ◦
項目書を作り計画立てたテストに • 手軽に行える負荷テスト ◦ k6 一番の課題 • MAU が大きいテナントの分離 ◦ 別の DB インスタンスを用意する
© MGRe, Inc. All Rights Reserved. 18 まとめ
© MGRe, Inc. All Rights Reserved. 19 まとめ • Aurora
Serverless v2 はいいぞ • QA さんありがとう