EC全体アーキテクチャ設計
概要
- B2C(多品種・多在庫)を主軸に、D2Cサブスク/将来のB2B受発注を包含する共通基盤
- Laravel 12・Livewire 3・Filament 4 を中核に、Tailwind 4・MySQL 8・Redis・検索エンジン(Meilisearch/Elasticsearch)(将来予定)を組み合わせる
- 将来のマルチテナント化と大規模スケールを見据え、レイヤー化とモジュール分割、イベント駆動を前提に設計
非機能要件
- スケーラビリティ: アプリケーション水平分散、リードレプリカ、キャッシュ階層化、CQRS的読み分離を許容
- 可用性: AZ冗長構成、ヘルスチェック、自動ロールバック(Blue/Green・カナリア)、バッチ停止時の復旧手順
- セキュリティ: OAuth2/SAML連携、WAF、Secrets Manager、暗号化フィールド、監査ログ、権限分離
- 拡張性: ドメイン単位の疎結合、イベント/ジョブで非同期化
詳細はスケーラビリティを参照してください。
ドメイン境界と責務
- カタログ・商品: 商品/バリエーション/在庫/カテゴリ/タグ、検索インデックス更新、在庫キャッシュ
- 価格・プロモーション: 通常価格、B2B階層価格、サブスク料金、キャンペーン、クーポン。価格計算サービスに集約
- 注文・決済: カート、決済ゲートウェイ抽象化、配送設定、請求・与信、注文確定イベントで在庫連携・通知
- 顧客・組織: 個人会員、法人アカウント、担当者、ロール/権限
- サブスク: プラン、契約、課金スケジュール、決済失敗リトライ、外部サブスクAPI同期
- B2B拡張: 見積〜受注、承認フロー、法人別価格表、EDI/API連携
- コンテンツ・CMS: LP、ブログ、リコメンド、Headless CMS 連携
- 運営支援: 返品/返金、CSチケット、レポート、BI連携、監査ログ・操作ログ
詳細はドメイン境界と責務を参照してください。
アプリケーション構造
EC-SPOKEシステムのアプリケーション構造は、ドメイン駆動設計に基づき、以下の原則で設計されています:
- ドメイン駆動の構造化: モデル(
app/Models/{Domain})とドメイン固有の振る舞い(app/Domains/{Domain})を分離し、各ドメインを独立したディレクトリに集約 - レイヤー別の責務分離: プレゼンテーション層(Admin、Frontend、Http)、ビジネスロジック層(ドメインサービス、ワークフロー)、インフラ層を明確に分離
- 近接配置の原則: Filamentリソースとビュー、ワークフロー関連ファイルを同じディレクトリ配下に配置(詳細はAdminViewsResource近接配置を参照)
- イベント駆動アーキテクチャ: Observers(モデルライフサイクル)、Events/Listeners(ビジネスイベント)を適切に使い分け
主要なディレクトリ構成:
app/Models/{Domain}/: Eloquentモデルapp/Domains/{Domain}/: ドメイン固有のサービス、ポリシー、アクション、オブザーバ、値オブジェクトapp/Admin/: Filament管理画面(近接配置ルールに従いビューも配置)app/Frontend/: Livewireコンポーネント、ページビルダー、テーマ別ビューapp/Http/: コントローラ、ミドルウェア、FormRequest、API Resource(詳細はAPI層の命名規則を参照)app/Services/: ドメイン横断的なアプリケーションサービス(カート管理等)app/Workflows/{WorkflowName}/: 複数手順を跨ぐ処理をパイプライン化
設定は config/*.php をドメイン別に分割し、テナント固有設定は専用テーブル+キャッシュで提供。ユースケース単位のサービスは app/Domains/{Domain}/Services に配置し、複数手順を跨ぐ処理は app/Workflows/{WorkflowName}/ でパイプライン化(詳細はWorkflow-Pipelineパターンを参照)。
詳細はアプリケーション構造を参照してください。
データ戦略(将来予定)
- 拡張属性: 商品や顧客の可変項目は JSON / 属性テーブルとバリデータを組み合わせて表現
- 検索: Meilisearch/Elasticsearch に商品・在庫・顧客データをインデックス。イベント駆動で同期
- 分析: EventBridge/SNS などにドメインイベントを出力し、DWH や CDP、MA ツールへ連携
マルチテナント(将来予定)
- Spatie Multitenancy を利用し、MySQL と PostgreSQL の両方でテナント毎のスキーマ/データベース構成で実装予定
外部連携と拡張性
- 決済・配送: Strategy パターンでアダプタを実装し、マルチプロバイダを切り替え
- ERP/会計: REST/ファイル/EDI 連携をプラグイン化、イベント → 変換 → 送信を標準フローに
- サードパーティ拡張: OAuth App マーケット構想、Webhook と API スコープ管理を提供
インフラと運用
- ネットワーク: VPC + Public/Private Subnet、ALB 経由で ECS Fargate(または EC2 ASG)
- データストア: RDS MySQL(または Aurora)、ElastiCache Redis、S3(画像・バックアップ)、Aurora への移行余地
- CDN/静的配信: CloudFront + S3、画像最適化は Lambda@Edge 等で対応
- CI/CD: GitHub Actions → ECR/ECS デプロイ、Blue/Green デプロイ、Infrastructure as Code(Terraform/CDK)
- 監視: CloudWatch、APM(Datadog/New Relic)、Sentry、構造化ログ、アラートプレイブック
- セキュリティ: AWS WAF、SecurityHub、脆弱性スキャン、自動証跡、Secrets Manager/Parameter Store
- 運用品質: Feature Flag(将来予定)、設定管理、定期 DR テスト、オブザーバビリティ(トレース・メトリクス・ログ)
ロードマップ例
- Phase 1: B2C 基盤(商品・注文・顧客・管理画面、決済・配送連携、監視基盤)、パッケージ化(詳細はEC-SPOKE配付構想を参照)
- Phase 2: D2C サブスク、Headless API 強化、リコメンド/MA 連携
- Phase 3: B2B 拡張(法人アカウント、承認フロー、EDI)、マルチテナント抽象化
- Phase 4: マーケットプレイス化、アプリストア、データ共有基盤