コンテンツにスキップ

Vendure インフラストラクチャ設計

概要

Vendure を Fly.io で運用するためのインフラストラクチャ設計ドキュメント集です。

現在の構成

  • アプリケーション名: ritsubi-ecommerce(本番)、ritsubi-ecommerce-staging(ステージング)
  • PostgreSQL: Dockerコンテナ(ritsubi-postgres-db、PostgreSQL 17 + PGroonga)
  • Redis: 未使用(in-memoryキャッシュを使用)
  • Storefront: Cloudflare Pages

構成要素

アーキテクチャ設計

  • システムアーキテクチャ設計書
  • 技術スタック全体一覧
  • ローカル開発環境アーキテクチャ(Vendureサーバーはホストで直接実行、依存サービスはDockerコンテナ)
  • システム全体のアーキテクチャ概要
  • コンポーネント構成とネットワーク設計
  • セキュリティ設計とパフォーマンス最適化

  • オブジェクトストレージ設計(Wasabi / S3 互換)

  • Wasabi を用いたアセット保管・バックアップ方針
  • S3_ 環境変数による S3 互換ストレージ切替手順
  • 日次バックアップ運用とセキュリティ対策

デプロイメント構成

開発環境

  • Dev Container 利用ガイド
  • VS Code Dev Containers での標準開発環境構築手順
  • dotfiles 同期とローカルカスタマイズの方法
  • Docker ソケット共有や永続ボリューム構成の解説

  • WordPress ローカル開発環境セットアップ

  • Headless CMS 用 WordPress の Docker Compose 構成
  • wp-cli による初期セットアップとプラグイン導入手順
  • GraphQL/REST API を利用する際のポイント

運用・監視

  • 監視・運用設計書
  • 包括的な監視戦略
  • アラート設定とインシデント対応
  • ヘルスチェックとダッシュボード設定

  • コスト最適化ガイド

  • リソース使用量最適化戦略
  • 自動スケーリングとコスト追跡
  • ROI測定とコスト効果分析

技術構成

ホスティング環境

Platform: Fly.io
Region: nrt (Tokyo)
Database: PostgreSQL (Dockerコンテナ)
Cache/Queue: in-memory(将来はUpstash Redis)
Storage: Local Storage + Fly Volumes
Storefront: Cloudflare Pages
CDN: Cloudflare

予想月額コスト

本番環境:
  - Vendure Server (1 instance): $5-7
  - PostgreSQL Database (Docker): $7-10
  - Storage & Network: $2-3
  - 合計: $14-20/月 (約 2,100-3,000円)

開発・ステージング:
  - 各環境: $5-8/月
  - 合計: $10-16/月

総合計: $24-36/月 (約 3,600-5,400円)

: Redisは現在未使用(将来の拡張時は+$3/月)

デプロイメント戦略

環境構成

graph LR
    DEV[Development] --> STAGING[Staging]
    STAGING --> PROD[Production]

    subgraph "Fly.io Apps"
        DEV --> DA[ritsubi-ecommerce-dev]
        STAGING --> SA[ritsubi-ecommerce-staging]
        PROD --> PA[ritsubi-ecommerce]
    end

    subgraph "Databases"
        DA --> DDB[(Dev DB)]
        SA --> SDB[(Staging DB)]
        PA --> PDB[(Production DB)]
    end

    subgraph "Redis(将来の拡張)"
        DA -.-> DR[(Dev Redis)]
        SA -.-> SR[(Staging Redis)]
        PA -.-> PR[(Production Redis)]
    end

アーキテクチャ全体図

graph TB
    subgraph "Users"
        U[B2B Customers]
        A[Admin Users]
    end

    subgraph "Cloudflare CDN"
        CF[Cloudflare Edge]
    end

    subgraph "Fly.io Tokyo Region"
        subgraph "Next.js Storefront"
            NS1[Storefront Instance 1]
            NS2[Storefront Instance 2]
        end

        subgraph "Vendure Backend"
            V1[Vendure Instance 1]
            V2[Vendure Instance 2]
            W[Worker Instance]
        end

        subgraph "Data Layer"
            PG[(PostgreSQL Docker)]
            UP[(in-memory Cache)]
            VOL[Volumes]
        end
    end

    subgraph "External Services"
        R2[Cloudflare R2]
        SMTP[Email Service]
        PAY[Payment Gateway]
        ERP[SMILE ERP]
    end

    U --> CF
    A --> CF
    CF --> NS1
    CF --> NS2
    NS1 --> V1
    NS2 --> V2
    V1 --> PG
    V2 --> PG
    W --> PG
    V1 --> R2
    V2 --> SMTP
    V1 --> PAY
    V2 --> ERP

主要特徴

高可用性

  • 冗長構成: Vendure インスタンス 2台での冗長化
  • 自動復旧: ヘルスチェック失敗時の自動再起動
  • データベース: マスター/スタンバイ構成での高可用性

スケーラビリティ

  • オートスケーリング: トラフィック負荷に応じた自動スケーリング
  • 水平拡張: インスタンス追加による性能向上
  • 地理的分散: 将来的な多リージョン展開への対応

セキュリティ

  • プライベートネットワーク: Fly.io IPv6 プライベートネットワーク
  • 暗号化通信: すべての通信で TLS 1.3 使用
  • アクセス制御: IP 制限とロールベースアクセス

運用効率

  • CI/CD: GitHub Actions による自動デプロイ
  • 監視: Prometheus + Grafana + Sentry 統合
  • アラート: Slack + Email + PagerDuty 通知

次のステップ

  1. デプロイメントガイド に従って環境構築を開始
  2. PostgreSQL Dockerコンテナ設定 でデータベースをセットアップ
  3. 監視・運用設計書 で監視体制を構築
  4. コスト最適化ガイド でコスト効率を最大化
  5. (将来の拡張)Upstash Redis 統合設計書 でキャッシュ戦略を実装

関連ドキュメント


最終更新: 2025年9月17日 バージョン: 1.0 メンテナンス: 月次でドキュメント内容を見直し