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
850
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ここがつらいよマルチテナント
2022/10/13に実施したイベント「最近チャレンジしたことをまとめてみた」で利用した資料
https://mgre.connpass.com/event/260781/
メグリ株式会社
October 26, 2022
More Decks by メグリ株式会社
See All by メグリ株式会社
株式会社MGRe会社紹介資料(2025年4月更新)
saiyou_mgre
0
7.8k
メグリ株式会社_メグリコンパス.pdf
saiyou_mgre
1
980
アップロードキーに苦戦した話 🤯
saiyou_mgre
0
3.2k
メグリ株式会社_エンジニア向け会社紹介資料
saiyou_mgre
1
24k
メグリ株式会社
saiyou_mgre
1
24k
Other Decks in Technology
See All in Technology
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
140
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
170
NDIAS CTF 2026 問題解説会資料
bata_24
0
180
デジタル・デザイン:次の50年を描く「進化する青写真」
y150saya
0
810
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
AI時代における最適なQA組織の作り方
ymty
3
380
Baseline対応のDOMの型定義を作った
uhyo
3
690
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
380
金融の未来を考える / Thinking About the Future of Finance
ks91
PRO
0
150
Claude Codeとハーネスについて考えてみる
oikon48
17
8.4k
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.3k
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
0
1.6k
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Crafting Experiences
bethany
1
200
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
480
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Odyssey Design
rkendrick25
PRO
2
720
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Thoughts on Productivity
jonyablonski
76
5.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
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 さんありがとう