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
disc99
August 07, 2025
Technology
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
マルチプロダクト×マルチテナントを支えるモジュラモノリスを中心としたアソビューのアーキテクチャ
disc99
August 07, 2025
More Decks by disc99
See All by disc99
アーキテクチャ選択の裏側
disc99
0
120
120リポジトリを1つのMonorepoに統合した理由
disc99
1
1.3k
モノリスとマイクロサービスを経てモジュラモノリスを導入した実践事例
disc99
25
15k
PaaS DX by Cloud Native Buildpacks
disc99
0
270
全てのAPIをProtocol Buffersで管理する / Manage all APIs with Protocol Buffers
disc99
2
5.7k
Serverless Application
disc99
1
3.2k
イベント駆動マイクロサービスアーキテクチャ / Event-Driven Microservices Architecture
disc99
4
3.1k
Event Sourcing 101
disc99
1
220
NGINX Blogから考えるマイクロサービスのProxy設計
disc99
0
960
Other Decks in Technology
See All in Technology
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
130
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
1
230
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1k
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
380
Snowflakeと仲良くなる第一歩
coco_se
4
410
protovalidate-es を導入してみた
bengo4com
0
170
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
4
4.4k
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
420
Android の公式 Skill / Android skills
yanzm
0
120
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
2
190
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
120
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
2.2k
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
580
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
140
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
470
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
210
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Building an army of robots
kneath
306
46k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Transcript
マルチプロダクト×マルチテナントを支える モジュラモノリスを中心としたアソビューのアーキテクチャ アソビュー株式会社 兼平大資 2025/08/07 インフラアーキテクチャ選択のジレンマ - 5社の設計思想と意思決定のリアル
Name: 兼平大資 Company: アソビュー株式会社 Role: CTO X: @disc99_ About Me
2
1. About Me 2. アソビューとアーキテクチャ 3. ジレンマとコアとなる考え方 4. 意思決定のリアル 5.
まとめ アジェンダ 2
1. About Me 2. アソビューとアーキテクチャ 3. ジレンマとコアとなる考え方 4. 意思決定のリアル 5.
まとめ アジェンダ 2
アソビューとは 3
事業の全体像 4
プロダクトの全体像 5
事業規模と実績 運営歴: 最初のプロダクト立ち上げから13年(2012年〜) プロダクト展開: マルチプロダクト(プロダクト数: 20+) 大規模ユーザー: toC 会員数1,700+万人、toB 契約施設数10,000+店舗
技術的特徴と課題 モール型の複雑性: アソビュー!の商品数、バリエーションの柔軟性 高トラフィック: モールだけでなく、SaaS型(ウラカタ)も含め、ピークトラフィック4,000+ rps ピーク性: 商品、施設、季節、時間による急激な負荷変動 データ整合性: 多数のプロダクトからのアクセスに対する在庫の一貫性 サービス品質: SaaSは施設の日常業務を支えるため、高信頼性・高可用性が重要 組織と成長戦略 プロダクト組織: 約100名の開発体制 新規事業+グロース: 会員と商品データを起点とした事業立ち上げ+既存事業の多角化 事業とプロダクトの特徴 6
インフラアーキテクチャの全体像 7
1. About Me 2. アソビューとアーキテクチャ 3. ジレンマとコアとなる考え方 4. 意思決定のリアル 5.
まとめ アジェンダ 7
よくある選択肢 モノリス vs マイクロサービス vs モジュラモノリス シングルテナント vs マルチテナント vs
ハイブリッドモデル 単一DB vs DB分離 REST vs GraphQL vs gRPC 同期通信 vs 非同期通信 モノレポ vs マルチレポ 単一言語 vs マルチ言語 オンプレミス vs 単一クラウド vs ハイブリッドクラウド アーキテクチャ選択のジレンマ 8
ミッションや事業内容をもとに選択するのは言わずもだが 他に何をもとに選択するべきか? 9
アーキテクチャの原則 「アーキテクチャには正解も不正解もない。あるのはトレードオフ だけだ。 」 ― ソフトウェアアーキテクチャの基礎 Mark Richards, Neal Ford
アーキテクチャのトレードオフ 10
漸進的な変更を支える技術 「進化的アーキテクチャの定義には、漸進的な変更が含まれてい る。これは、アーキテクチャは小さく漸進的な変更を容易にしなけ ればならないということを意味している。 」 ― 進化的アーキテクチャ - 絶え間ない変化を支える Neal
Ford, Rebecca Parsons, Patrick Kua アーキテクチャの進化 11
Conway's Law 「システムを設計する組織は、その組織の構造をそっくりまね た構造の設計を生み出してしまう」 ― Melvin Conway (1967) Inverse Conway
Maneuver 目指すアーキテクチャから組織構造を設計する martinfowler.com - Conway's Law アーキテクチャと組織 12
1. About Me 2. アソビューとアーキテクチャ 3. ジレンマとコアとなる考え方 4. 意思決定のリアル 5.
まとめ アジェンダ 12
モノリス vs マイクロサービス vs モジュラモノリス アソビューの選択: モジュラモノリス + マイクロサービス(一部) 判断理由
開発効率: 単一ソース・デプロイで開発スピード維持、マルチプロダクトにも対応可 柔軟性・可逆性: モジュールを柔軟に切り替えることで、マイクロサービス化が可能 運用負荷: インフラ管理の複雑性を抑制 チーム規模: プロダクト特性や組織を考えたときの現実解 実装 境界づけられたコンテキストでモジュール分割 モジュール間はgRPCインターフェイスで統一 必要に応じて部分的にマイクロサービス化 アーキテクチャパターンの選択 13
環境変数による柔軟な起動モード シングルソース・マルチデプロイメント: 同一のソースコ ードベースから、デプロイメントの環境変数でモジュー ル切り替え 運用に応じた選択: トラフィック状況や要件に応じて選択 することで開発速度とスケーラビリティ、パフォーマン スを最適化 段階的移行とロールバック:
モノリス → モジュラモノリ ス → マイクロサービスモード → フルマイクロサービス 起動パターンの例 モノリスとして起動も、マイクロサービスとして起動も 可能 例: ローカルではモノリス、サーバーではマイクロサービ ス(プロダクト単位/機能単位/テナント単位) # モノリス起動(全モジュール) export ACTIVE_MODULES=* # 特定モジュールのみ起動 export ACTIVE_MODULES=activity,reservation export ACTIVE_MODULES=payment モジュラモノリスのマイクロサービスモード 14
en-ambi.com - モジュラモノリスに移行する理由 ─ マイクロサービス の自律性とモノリスの一貫性を両立させるアソビューの取り組み speakerdeck.com - モノリスとマイクロサービ スを経てモジュラモノリスを導入した実践事例
モノリス、マイクロサービスからモジュラモノリスへ 15
シングルテナント vs マルチテナント vs ハイブリッドモデル アソビューの選択: マルチテナント(EKSシングルクラスター) 判断理由 運用効率: 単一クラスターによる管理コスト削減、セキュリティ・監視・アップグレードの一元管理
スケーラビリティ確保: Kubernetesならシングルクラスターでも十分なスケーラビリティを実現(HPA、 VPA、Cluster Autoscaler、PDB) ネットワーク最適化: クラスター内通信による低レイテンシとセキュリティ向上 トレードオフ メリット: 運用コスト削減、スケーラビリティ確保、デプロイ効率化 リスク: 障害時の影響範囲拡大(デプロイメント分離で軽減) インフラ構成の選択 16
単一DB vs DB分離 アソビューの選択: DB分離(機能別) 判断理由 歴史的進化: 単一DBから始まり、成長に伴い段階的に分離 可用性重視: マルチテナント特性によるノイジーネイバー問題への対策
障害分離: DB分離により可用性は向上、一方でトランザクション・コストに課題 柔軟な対応: 物理インスタンス共有でスキーマ分離という選択肢も活用 実装 Aurora (MySQL/PostgreSQL): メインのプロダクトDBとして利用 Cloud Spanner: スケーラビリティが重要な新規プロダクトで利用 DynamoDB、Redis: 高速アクセスが必要なキャッシュ・セッションデータ データの寿命は長いので、DBの選択はプロダクトにおいて非常に重要な判断 データベース設計の選択 17
REST vs GraphQL vs gRPC アソビューの選択: gRPC + REST 判断理由
Protocol Buffersのエコシステムを中心とした選択 統一スキーマ定義: IDLから標準でgRPC、OpenAPI経由でRESTの両方に対応 高速で効率的な通信: 高トラフィックなプロダクトのためシリアライゼーション効率とネットワーク最 適化は重要 マルチプロダクト統一: プロダクト間でのAPI仕様統一によるメンテナンス性向上 使い分け: 外部はREST(ブラウザ通信・外部連携のデファクト) 、内部はgRPC(性能重視) トレードオフ 効果: API応答速度改善、ネットワーク効率向上 課題: デバッグツール充実が必要、学習コスト API設計の選択 18
speakerdeck.com - 全てのAPIをProtocol Buffersで管理する Protocol BuffersによるAPI管理 19
同期通信 vs 非同期通信 アソビューの選択: 混在(gRPC + Kinesis Streams) 判断理由 リアルタイム性:
gRPCで即座な応答が必要な処理 可用性: イベント駆動で耐障害性を確保 プロダクト間連携: プロダクト間での効率的なデータ同期と整合性、高トラフィックに対する負荷軽減 適材適所: 用途に応じた最適な通信方式選択 実装 同期: gRPC(API呼び出し) 非同期: Kinesis Streams(イベント処理) 通信方式の選択 20
speakerdeck.com - イベント駆動型マイクロサービスアーキテクチャ 同期通信と非同期通信 21
モノレポ vs マルチレポ アソビューの選択: モノレポ 判断理由 可視性向上: 全ソースコードの1リポジトリで統一管理 統一ルール: 共通CI/CD、コーディング規約
アトミックな変更: 複数サービス・コンポーネントの変更を単一コミットで実現 企業・エンジニアバリュー: マルチプロダクトであってもONE TEAM、フルサイクルエンジニアの実現 効果 IDE・エディタでの全ソース検索が可能 横断的な修正が単一PRで完結 あらゆるソース、ナレッジの一元管理 AIツールが全コンテキストを読み込める リポジトリ構成の選択 22
speakerdeck.com - 120リポジトリを1つのMonorepoに統合した理由 Monorepoへの移行 23
オンプレミス vs 単一クラウド vs ハイブリッドクラウド アソビューの選択: AWS中心のクラウド 判断理由 スケーラビリティ: 季節性・時間性による急激な需要変動(4,000+rps)への対応
マルチプロダクト・マルチテナントの運用: インフラを統一プラットフォームで効率的に管理、安定し たサービス提供とテナント分離 運用効率: マネージドサービス活用による運用負荷軽減 実装 EKS、Aurora、DynamoDB、Kinesis 一部Google Cloud併用(BigQuery、Spanner等) インフラ基盤の選択 24
単一言語 vs マルチ言語 アソビューの選択: バックエンドJava中心(Spring Boot)、フロントエンドTypeScript(React) 判断理由 運用安定性: パフォーマンス、セキュリティ、後方互換性、各種サービスのSDKサポート品質など高い 信頼性、ランタイムの一貫性、モジュラモノリスとの相性
柔軟性・採用容易性: 他のプロダクトでも積極的に参加できる、豊富な人材プール(必要に応じて他言語 も活用) AI対応: LLM学習データの豊富さ トレードオフ メリット: 人材確保・運用安定性・AI活用の容易さ 課題: パフォーマンス要求の高い処理、特定領域での最適化限界 技術スタックの選択 25
現在の課題と今後の計画 DB利用の非効率性: 似たような特性を持つDBを必要以上に利用 → 統一していく API Gateway運用の複雑性: REST/gRPC変換の静的コード生成、アグリゲーション処理変更によるデプ ロイ頻度増加、パフォーマンスの劣化 →
動的変換とアグリゲーション処理の移行 ノイジーネイバー問題: アプリケーション・DBでの影響検知が困難 → 動的スケールなトラフィック分離 よる自動対応 イベント処理のスケール限界: 現状の非同期処理基盤での制約 → 新たな非同期連携基盤構築 AI活用の開発効率化: モノレポでのビルド・CI/CD最適化不足 → AI活用によるビルドツール・CI/CD強化 今後の展望 26
1. About Me 2. アソビューとアーキテクチャ 3. ジレンマとコアとなる考え方 4. 意思決定のリアル 5.
まとめ アジェンダ 26
完璧なアーキテクチャは存在せず、常にトレードオフを意識してコンテキストに応 じた最適解を見つける ビジネスドメインの深い理解がアーキテクチャ選択の精度を決める 変化の激しい環境では段階的移行戦略でリスクを最小化し、可逆性を意識する アーキテクチャと組織構造は表裏一体 アソビューではシステム横断でのデータ再利用や迅速な開発のための「集約」と、負 荷分散や権限分離などの「分割」を使い分ける戦略を採用 まとめ 27