プラットフォームアーキテクチャ概要
Postion のマルチテナントアーキテクチャ、ルーティングシステム、コア技術インフラを理解しましょう。開発者や上級ユーザー向けの技術ディープダイブです。
技術基盤
Postion は、スケーラビリティ、セキュリティ、開発者体験を考慮して設計された、モダンでハイパフォーマンスなテクノロジースタックの上に構築されています。このドキュメントでは、プラットフォームアーキテクチャの概要を解説します。
このドキュメントは、開発者、技術ユーザー、そして Postion が内部でどのように動作しているか興味のある方を対象としています。
コアテクノロジースタック
プラットフォームは業界をリードするテクノロジーを活用しています:
| レイヤー | テクノロジー | 目的 |
|---|---|---|
| フレームワーク | Next.js 14 | App Router 搭載のフルスタック React フレームワーク |
| 言語 | TypeScript | 型安全な開発 |
| データベース | PostgreSQL + Prisma | リレーショナルデータ+型安全な ORM |
| 決済 | Stripe | サブスクリプション& Connect 支払い |
| ストレージ | AWS S3 / R2 | メディアファイルストレージ |
| メール | Resend + Mailgun | トランザクション&マーケティングメール |
| AI | Google Gemini | AI ライティングアシスタント |
マルチテナントアーキテクチャ
Postion は マルチテナントアーキテクチャ を採用しており、各ユーザーは複数の独立したサイト(パブリケーション)を作成できます。これが「ユーザー → サイト → コンテンツ」階層の基盤です。
仕組み
┌─────────────────────────────────────────────────────┐
│ ユーザーアカウント │
│ (請求、プロフィール、グローバル設定) │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ サイト A │ │ サイト B │ │ サイト C │ │
│ │ (テックブログ)│ │ (ポートフォリオ)│ │(ニュースレター)│ │
│ ├─────────────┤ ├─────────────┤ ├─────────────┤ │
│ │ • 投稿 │ │ • 投稿 │ │ • 投稿 │ │
│ │ • ページ │ │ • ページ │ │ • ページ │ │
│ │ • テンプレート│ │ • テンプレート│ │ • テンプレート│ │
│ │ • 購読者 │ │ • 購読者 │ │ • 購読者 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
主な特徴
🌐 独立したドメイン
各サイトは独自のサブドメイン(blog.postion.app)やカスタムドメイン(yourblog.com)を持てます。
👥 分離された購読者
購読者リストはサイトごとに独立。サイト A の購読者が自動的にサイト B に登録されることはありません。
💳 統一された請求
サイトは分離されていますが、請求と Stripe Connect 設定はユーザーアカウントレベルで管理されます。
🎨 個別のブランディング
各サイトに独自のテンプレート、カラー、フォント、外観設定を設定できます。
ルーティングアーキテクチャ
ミドルウェアベースのルーティングシステムが、ホスト名に基づいてリクエストをインテリジェントに処理します。
リクエストの流れ
flowchart TD
A[受信リクエスト] --> B{ホスト名の確認}
B -->|postion.app| C[メインプラットフォームルート]
B -->|その他のドメイン| D[テナントサイトルート]
C --> E{パスの確認}
E -->|/dashboard, /login, /site, /post| F[認証済みルート]
E -->|/sso-bridge, /sso-logout| G[SSO 処理]
E -->|その他| H[/home/* にリライト]
D --> I[/domain/* にリライト]
I --> J[テナントサイトのレンダリング]ルートカテゴリ
| カテゴリ | パス | 説明 |
|---|---|---|
| 認証済み | /dashboard, /site/*, /post/* | ユーザーログインが必要 |
| SSO | /sso-bridge, /sso-logout | シングルサインオン処理 |
| 公開プラットフォーム | /home/*, /blog, /pricing | マーケティング&公開ページ |
| テナントサイト | *.postion.app, カスタムドメイン | ユーザー作成のパブリケーション |
コンテンツセキュリティ
コンテンツ保護を真剣に取り組んでいます。Postion には有料コンテンツを保護するアンチパイラシー機能が内蔵されています。
セキュリティ機能
ウォーターマーク:プレミアムコンテンツに動的なウォーターマークを適用し、閲覧者の身元を表示。
コピー防止:デリケートなコンテンツのコピー&ペーストと右クリック保護(オプション)。
スクリーンショット抑止:スクリーンショット共有を思いとどまらせる視覚的インジケータ。
アクセスログ:コンテンツの閲覧者と閲覧日時を追跡。
注意: コンテンツセキュリティ機能は Premium プランで利用可能です。投稿ごとまたはサイト全体の設定で有効化できます。
データベースアーキテクチャ
データベースは、論理的なドメインに整理された 42 以上のモデルで構成されています:
コアドメイン
| ドメイン | 主要モデル | 目的 |
|---|---|---|
| ユーザーシステム | User, Account, Session, UserProfile | 認証&プロフィール |
| サイトシステム | Site, Template, TemplatePricing | マルチテナントパブリケーション |
| コンテンツ | Post, Page, Tag, Series | コンテンツ管理 |
| サブスクリプション | Plan, Subscription, Transaction | マネタイズ |
| メール | Subscribe, EmailCampaign, EmailSend | マーケティング自動化 |
| CRM | FanRelationship, FanTag, FanSegment | ファン管理 |
| API | ApiKey, ApiUsage, Webhook | 開発者プラットフォーム |
データの関連性
erDiagram
USER ||--o{ SITE : 所有
SITE ||--o{ POST : 含む
SITE ||--o{ PLAN : 提供
PLAN ||--o{ SUBSCRIPTION : 持つ
SUBSCRIPTION ||--o{ TRANSACTION : 生成
POST ||--o| POST_PRICING : 持つ
POST ||--o{ POST_PURCHASE : 持つ
USER ||--o| STRIPE_ACCOUNT : 接続Stripe 統合
決済処理はすべて Stripe を通じて行われ、2 つの主要機能を使用しています:
Stripe サブスクリプション
購読者からの定期収益用:
- 月額・年額の請求サイクル
- 自動決済リトライ
- サブスクリプション管理ポータル
Stripe Connect
クリエイターへの支払い用:
- クリエイターの銀行口座への直接入金
- プラットフォーム手数料(5%)の自動控除
- グローバルな支払い対応
- 税務書類の生成
決済のセットアップについて詳しくは Stripe Connect ガイド をご覧ください。
ストレージインフラ
メディアファイルはクラウドオブジェクトストレージに保存されます:
- プライマリ:AWS S3 による信頼性が高くスケーラブルなストレージ
- CDN:高速な読み込みのためのグローバルコンテンツ配信
- フォーマット:画像、動画、ドキュメントなどに対応
ストレージクオータはプランによって異なります。詳しくは ストレージ&クオータ をご覧ください。
パフォーマンス&スケーラビリティ
Postion は大規模でもパフォーマンスを発揮するよう構築されています:
⚡ エッジランタイム
ミドルウェアがエッジで実行され、世界中で最小限のレイテンシを実現。
📦 スマートキャッシング
静的コンテンツと API レスポンスのインテリジェントなキャッシュ。
🔄 オートスケーリング
トラフィック需要に応じてインフラが自動的にスケール。
より詳しい技術情報
- Public API ドキュメント:REST API で連携を構築
- Webhook ガイド:リアルタイムのイベント通知を受信
- カスタムドメイン:独自ドメインを接続