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
650
ここがつらいよマルチテナント
2022/10/13に実施したイベント「最近チャレンジしたことをまとめてみた」で利用した資料
https://mgre.connpass.com/event/260781/
メグリ株式会社
October 26, 2022
Tweet
Share
More Decks by メグリ株式会社
See All by メグリ株式会社
メグリ株式会社_メグリコンパス.pdf
saiyou_mgre
1
670
アップロードキーに苦戦した話 🤯
saiyou_mgre
0
1.9k
メグリ株式会社_エンジニア向け会社紹介資料
saiyou_mgre
1
16k
メグリ株式会社
saiyou_mgre
1
17k
Other Decks in Technology
See All in Technology
OCI Success Journey OCIの何が評価されてる?疑問に答える事例セミナー(2025年2月実施)
oracle4engineer
PRO
2
160
Windows の新しい管理者保護モード
murachiakira
0
200
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
2
380
日経のデータベース事業とElasticsearch
hinatades
PRO
0
240
脳波を用いた嗜好マッチングシステム
hokkey621
0
290
Snowflake ML モデルを dbt データパイプラインに組み込む
estie
0
100
設計を積み重ねてシステムを刷新する
sansantech
PRO
0
170
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
3
6.1k
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
2.7k
分解して理解する Aspire
nenonaninu
2
1.1k
AWSを活用したIoTにおけるセキュリティ対策のご紹介
kwskyk
0
350
株式会社Awarefy(アウェアファイ)会社説明資料 / Awarefy-Company-Deck
awarefy
3
11k
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
The Pragmatic Product Professional
lauravandoore
32
6.4k
BBQ
matthewcrist
87
9.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Docker and Python
trallard
44
3.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The Cult of Friendly URLs
andyhume
78
6.2k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
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 さんありがとう