ATLAS_v1.0.md
# ATLAS v1.0 ## Architecture & Technology Layer Alignment System > プロジェクト特性と技術選定を構造的に整合させるフレームワーク --- ## 概要 ATLASは、Webアプリケーション開発における技術選定を体系化するフレームワークである。 **解決する問題**: - 技術選定が属人的で再現性がない - プロジェクト特性と技術特性のミスマッチによる後発的な問題 - 「どの技術を使うか」ではなく「どう判断すべきか」が不明確 **提供する価値**: - プロジェクトアーキタイプに基づく判断構造 - アンチパターンの体系的な検知 - スケール段階に応じた移行パス --- ## Part 1: Project Archetypes(プロジェクト原型) プロジェクトを7つの原型に分類する。実際のプロジェクトは複数の原型の特性を持つことがある。 ### 1.1 アーキタイプ一覧 | ID | アーキタイプ | 代表例 | 本質的要件 | | --- | ------------------- | ---------------------------------------- | ---------------------------------------- | | A1 | **Static Presence** | コーポレートサイト、IR、採用サイト | 信頼性、SEO、更新容易性、長期運用 | | A2 | **Campaign** | プロモーションサイト、LP、イベントサイト | 速度、スケール耐性、期間限定、撤収容易性 | | A3 | **Consumer App** | toC Webサービス、SNS、メディア | UX、認証、スケール、コスト効率 | | A4 | **Business SaaS** | toB 業務システム、管理画面 | マルチテナント、権限管理、監査、SLA | | A5 | **Marketplace** | EC、マッチングサービス、予約システム | 決済、双方向性、信頼性、トランザクション | | A6 | **Real-time** | チャット、コラボツール、ゲーム | 低遅延、常時接続、状態同期 | | A7 | **AI/Compute** | 生成AI、データ分析、変換処理 | 長時間処理、GPU、非同期、コスト管理 | ### 1.2 アーキタイプ判定フロー ``` Q1: ユーザーとのインタラクション頻度は? └─ 低(閲覧中心)→ A1 or A2 └─ 高(操作中心)→ Q2へ Q2: リアルタイム性が必要か? └─ Yes → A6 └─ No → Q3へ Q3: 金銭取引があるか? └─ Yes → A5 └─ No → Q4へ Q4: 主なユーザーは? └─ 一般消費者 → A3 └─ 企業・組織 → A4 Q5: 重い計算処理があるか? └─ Yes → A7(他との複合) ``` ### 1.3 アーキタイプ別の重要判断軸 | アーキタイプ | 最重要軸 | 次点 | 軽視可能 | | ------------------ | -------------------- | ---------- | ------------ | | A1 Static Presence | 可用性、SEO | CMS体験 | スケール | | A2 Campaign | 配信速度、コスト予測 | 撤収容易性 | 長期運用 | | A3 Consumer App | 認証、UX | スケール | 監査 | | A4 Business SaaS | 権限、監査 | SSO | 配信速度 | | A5 Marketplace | 決済、信頼性 | 検索 | リアルタイム | | A6 Real-time | 遅延、接続維持 | 状態同期 | SEO | | A7 AI/Compute | 処理時間、コスト | キュー | UX | --- ## Part 2: Technology Categories(技術カテゴリ) 個別の技術名ではなく、技術カテゴリの特性を理解する。 ### 2.1 Compute(実行環境) | カテゴリ | 特性 | 適合 | 不適合 | | ----------------------- | ------------------------------ | --------------------------------- | --------------------- | | **Serverless Edge** | 超低遅延、軽量処理、グローバル | 静的配信、リダイレクト、A/Bテスト | DB接続、重い処理 | | **Serverless Regional** | 自動スケール、従量課金 | API、SSR、軽量処理 | 長時間処理、WebSocket | | **Container PaaS** | 永続プロセス、予測可能コスト | WebSocket、Worker、汎用 | 極端なスケール | | **Self-hosted** | 完全制御、低コスト | 高帯域、特殊要件 | 運用リソースなし | | **Kubernetes** | 大規模、マルチサービス | エンタープライズ | 小規模チーム | ### 2.2 Database(データ永続化) | カテゴリ | 特性 | 適合 | 不適合 | | ----------------------- | ---------------------------- | ------------------------ | ------------------ | | **Serverless Postgres** | スケールtoゼロ、ブランチング | 汎用、開発効率重視 | 超高スループット | | **Managed Postgres** | 安定、エンタープライズ対応 | 本番運用、SLA重視 | コスト最小化 | | **Edge SQLite** | 超低遅延読み取り | 読み取り中心、グローバル | 書き込み中心 | | **Document DB** | スキーマレス、柔軟 | プロトタイプ、非構造化 | 複雑なリレーション | | **Vector DB** | 類似検索、AI統合 | RAG、推薦 | 汎用クエリ | ### 2.3 Background Processing(非同期処理) | カテゴリ | 特性 | 適合 | 不適合 | | --------------------- | ------------------------------------ | ----------------------------- | ---------------- | | **Durable Workflow** | 状態管理、リトライ、サーバーレス対応 | 複雑なフロー、Vercel環境 | 超低遅延 | | **External Compute** | タイムアウトなし、重い処理 | AI生成、動画処理 | 単純なタスク | | **Self-hosted Queue** | 低遅延、無料 | Container環境、高スループット | サーバーレス環境 | | **Simple Webhook** | 軽量、設定容易 | CRON、通知 | 複雑なフロー | ### 2.4 Authentication(認証) | カテゴリ | 特性 | 適合 | 不適合 | | ---------------------- | ---------------------------- | ------------------------ | ---------------- | | **DX-First Auth** | 高速実装、UIコンポーネント | MVP、開発速度重視 | コスト最小化 | | **DB-Integrated Auth** | RLS連携、低コスト | Supabase環境、コスト重視 | 高度なSSO | | **Enterprise Auth** | SAML、監査、コンプライアンス | 大企業向けB2B | 小規模 | | **Self-hosted Auth** | 完全制御、無料 | 特殊要件、内製力あり | 運用リソースなし | ### 2.5 Payment(決済) | カテゴリ | 特性 | 適合 | 不適合 | | ---------------------- | -------------------------- | ---------------------------- | ---------------- | | **Payment Processor** | 低手数料、柔軟 | 国内中心、税務体制あり | グローバル小規模 | | **Merchant of Record** | 税務代行、コンプライアンス | グローバルSaaS、小規模チーム | 国内のみ | --- ## Part 3: Alignment Matrix(適合マトリクス) アーキタイプと技術カテゴリの適合関係を示す。 ### 3.1 Compute選定マトリクス | アーキタイプ | 推奨Compute | 理由 | | ------------------ | ------------------------------------- | ---------------------------- | | A1 Static Presence | Serverless Edge + SSG | CDN配信で十分、コスト最小 | | A2 Campaign | Serverless Edge | スパイク対応、期間後撤収容易 | | A3 Consumer App | Serverless Regional or Container PaaS | スケールと機能のバランス | | A4 Business SaaS | Container PaaS or Self-hosted | 予測可能コスト、永続処理 | | A5 Marketplace | Container PaaS | トランザクション信頼性 | | A6 Real-time | Container PaaS | WebSocket必須 | | A7 AI/Compute | Container PaaS + External Compute | 長時間処理対応 | ### 3.2 Database選定マトリクス | アーキタイプ | 推奨DB | 理由 | | ------------------ | ------------------------------- | ---------------------- | | A1 Static Presence | なし or Headless CMS | 静的生成で十分 | | A2 Campaign | Serverless Postgres or なし | 軽量、スケールtoゼロ | | A3 Consumer App | Serverless Postgres | 開発効率、スケール | | A4 Business SaaS | Managed Postgres | SLA、監査対応 | | A5 Marketplace | Managed Postgres | トランザクション信頼性 | | A6 Real-time | Managed Postgres + Redis | 状態同期にRedis | | A7 AI/Compute | Serverless Postgres + Vector DB | AI統合 | ### 3.3 Worker選定マトリクス | アーキタイプ | 推奨Worker | 理由 | | ------------------ | ------------------------------------- | ---------------- | | A1 Static Presence | なし or Simple Webhook | 定期ビルドのみ | | A2 Campaign | Simple Webhook | 軽量 | | A3 Consumer App | Durable Workflow | 複雑なフロー対応 | | A4 Business SaaS | Durable Workflow or Self-hosted Queue | 信頼性重視 | | A5 Marketplace | Self-hosted Queue | 高スループット | | A6 Real-time | Self-hosted Queue | 低遅延 | | A7 AI/Compute | External Compute | タイムアウト回避 | --- ## Part 4: Anti-Patterns(アンチパターン) 致命的な技術組み合わせとその回避策。 ### 4.1 Compute関連 | ID | アンチパターン | 問題 | 代替案 | | ----- | ---------------------------------- | ------------------------------ | ---------------------------------- | | AP-C1 | Serverless + 常駐Worker (BullMQ等) | プロセス維持不可、リソース枯渇 | Durable Workflow or Container PaaS | | AP-C2 | Serverless + 長時間処理 (>60s) | タイムアウト強制終了 | External Compute | | AP-C3 | Edge SSR + リージョナルDB | Data Gravity問題、遅延増大 | Regional SSRに変更 | | AP-C4 | 高帯域アセット + Serverless配信 | Denial of Wallet | 外部CDN/Object Storage | ### 4.2 Database関連 | ID | アンチパターン | 問題 | 代替案 | | ----- | ----------------------- | ---------------- | -------------------------- | | AP-D1 | Serverless + 標準DB接続 | コネクション枯渇 | コネクションプーラー必須 | | AP-D2 | ORM + サーバーレス並列 | 接続数爆発 | HTTPドライバ or Accelerate | | AP-D3 | 単一DBに全機能 | 単一障害点 | 用途別分離検討 | ### 4.3 Security関連 | ID | アンチパターン | 問題 | 代替案 | | ----- | ------------------------ | -------------------------- | ------------------- | | AP-S1 | 公開API + レート制限なし | DDoS、Bot被害 | WAF + Rate Limiting | | AP-S2 | 直接ファイルアップロード | タイムアウト、セキュリティ | Presigned URL | | AP-S3 | クライアントに秘密情報 | 漏洩リスク | サーバーサイド処理 | ### 4.4 Cost関連 | ID | アンチパターン | 問題 | 代替案 | | ----- | ---------------------- | -------------- | ---------------------- | | AP-$1 | 従量課金 + 上限なし | 請求額爆発 | Spend Limit設定 | | AP-$2 | 開発環境の常時起動 | 無駄なコスト | Scale-to-Zero DB | | AP-$3 | 過剰なリアルタイム機能 | 接続コスト増大 | ポーリングで十分か検討 | --- ## Part 5: Scale Templates(スケール別テンプレート) ### 5.1 Tier定義 | Tier | 対象 | 月額予算 | チーム規模 | DevOps能力 | | ---- | ------------------ | --------- | ---------- | ---------- | | T1 | MVP・個人開発 | ~$50 | 1-2人 | なし~基本 | | T2 | スタートアップ初期 | $50-500 | 2-5人 | 基本 | | T3 | 成長期 | $500-5000 | 5-20人 | 中級 | | T4 | エンタープライズ | $5000+ | 20人+ | 上級 | ### 5.2 Tier別推奨スタック #### Tier 1: MVP・個人開発 **最適化対象**:開発速度、学習コスト最小化 | レイヤー | 推奨 | 理由 | | ---------- | ------------------ | -------------------- | | Compute | Vercel (Hobby→Pro) | 設定不要、最高DX | | Database | Neon or Supabase | 無料枠、ブランチング | | Auth | Clerk | 実装工数最小 | | Worker | Inngest | サーバーレス統合 | | Payment | LemonSqueezy | 税務代行 | | Monitoring | Vercel Analytics | 統合済み | **Exit Strategy**:Tier 2移行時はContainer PaaSへ #### Tier 2: スタートアップ初期 **最適化対象**:コスト効率、予測可能性 | レイヤー | 推奨 | 理由 | | ---------- | ----------------------------- | --------------------- | | Compute | Railway or Coolify (VPS) | 定額制、WebSocket対応 | | Database | Self-hosted Postgres or Turso | 従量課金回避 | | Auth | Supabase Auth | MAU単価安い | | Worker | BullMQ + Redis | 無料、低遅延 | | Payment | Stripe | 手数料最適化 | | Monitoring | Grafana + Prometheus | セルフホスト | **Exit Strategy**:Tier 3移行時はAWS (SST)へ #### Tier 3: 成長期 **最適化対象**:スケーラビリティ、信頼性 | レイヤー | 推奨 | 理由 | | ---------- | ------------------------------- | ---------------------- | | Compute | AWS (SST/OpenNext) | Vercel互換、コスト削減 | | Database | Neon Scale or Aurora Serverless | マネージドスケール | | Auth | Clerk or Auth0 | SSO、コンプライアンス | | Worker | Trigger.dev | 大規模ジョブ | | Payment | Stripe | 成熟したエコシステム | | Monitoring | Datadog or New Relic | APM | **Exit Strategy**:Tier 4移行時はKubernetesへ #### Tier 4: エンタープライズ **最適化対象**:ガバナンス、セキュリティ、制御 | レイヤー | 推奨 | 理由 | | ---------- | ------------------------- | ------------------------ | | Compute | Kubernetes (EKS/GKE) | 完全制御 | | Database | Crunchy Data or Cloud SQL | エンタープライズサポート | | Auth | Auth0 or Keycloak | AD連携、監査 | | Worker | Temporal or 自前基盤 | ミッションクリティカル | | Payment | Stripe | 複雑な請求対応 | | Monitoring | Datadog + PagerDuty | 24/7運用 | ### 5.3 Tier移行トリガー | 移行 | トリガー条件 | | ----- | -------------------------------------------- | | T1→T2 | 月額コストが$100超過 or WebSocket必要 | | T2→T3 | 帯域1TB超過 or チーム5人超過 or SLA要件 | | T3→T4 | コンプライアンス要件 or マルチリージョン要件 | --- ## Part 6: Decision Protocol(意思決定手順) ### 6.1 初期選定プロトコル ``` Step 1: アーキタイプ特定 └─ Part 1の判定フローを実行 └─ 複合の場合は主要アーキタイプを決定 Step 2: Tier判定 └─ 予算、チーム規模、DevOps能力から決定 Step 3: ベーススタック選択 └─ Part 5のTier別テンプレートを参照 Step 4: アーキタイプ調整 └─ Part 3のマトリクスで微調整 Step 5: アンチパターンチェック └─ Part 4の全項目を確認 └─ 該当があれば代替案を適用 Step 6: Exit Strategy確認 └─ 次のTierへの移行パスを確認 └─ ロックインリスクを評価 ``` ### 6.2 再評価トリガー 以下の状況で技術選定を再評価する: | トリガー | 評価対象 | | -------------------------------- | ------------------ | | 月額コストが想定の150%超過 | Compute、DB | | レスポンス遅延が目標の200%超過 | Compute、DB、CDN | | 障害が月2回以上発生 | 全体アーキテクチャ | | チーム規模が2倍以上に | Tier再判定 | | 新規要件(リアルタイム、AI等) | アーキタイプ再判定 | | ベンダーの価格改定・サービス終了 | 該当レイヤー | ### 6.3 意思決定の記録 技術選定時に以下を記録する: ```markdown ## 技術選定記録 ### 基本情報 - プロジェクト名: - 日付: - 決定者: ### 判定結果 - アーキタイプ: [A1-A7] - Tier: [T1-T4] ### 選定スタック | レイヤー | 選択 | 理由 | | -------- | ---- | ---- | | Compute | | | | Database | | | | Auth | | | | Worker | | | | Payment | | | ### アンチパターンチェック - [ ] AP-C1〜C4 確認済み - [ ] AP-D1〜D3 確認済み - [ ] AP-S1〜S3 確認済み - [ ] AP-$1〜$3 確認済み ### Exit Strategy - 次Tier移行時の計画: - ロックインリスク: ### 再評価予定 - 日付: - トリガー条件: ``` --- ## Part 7: Security & Compliance(セキュリティ・コンプライアンス) ### 7.1 セキュリティ基本原則 | 原則 | 内容 | 実装例 | | ---------- | ------------------------------ | ----------------------- | | 最小権限 | 必要最小限のアクセス権のみ付与 | IAM、RLS、スコープ制限 | | 多層防御 | 単一の防御に依存しない | WAF + Rate Limit + 認証 | | 暗号化 | 転送中・保存中のデータを暗号化 | TLS、AES-256 | | 監査 | 全てのアクセスをログ | 監査ログ、アクセスログ | | 迅速な対応 | 脆弱性の早期検知と対応 | 依存関係監視、アラート | ### 7.2 Tier別セキュリティ要件 | 要件 | T1 | T2 | T3 | T4 | | ---------------------- | --- | --- | --- | --- | | HTTPS強制 | ✓ | ✓ | ✓ | ✓ | | 認証・認可 | ✓ | ✓ | ✓ | ✓ | | Rate Limiting | - | ✓ | ✓ | ✓ | | WAF | - | △ | ✓ | ✓ | | 監査ログ | - | - | ✓ | ✓ | | SOC2/ISO27001 | - | - | △ | ✓ | | ペネトレーションテスト | - | - | △ | ✓ | | 24/7監視 | - | - | - | ✓ | ### 7.3 コンプライアンス対応 | 規制 | 対象 | 主要要件 | | -------------- | -------------------- | ---------------------- | | GDPR | EU居住者データ | 同意管理、削除権、DPO | | CCPA | カリフォルニア居住者 | オプトアウト、開示請求 | | PCI DSS | カード情報 | 決済代行利用で回避可能 | | HIPAA | 医療情報(米国) | BAA締結、暗号化 | | 個人情報保護法 | 日本国内 | 利用目的明示、安全管理 | --- ## Appendix A: Technology Examples(技術例 - 2025年版) > 注意:この付録は2025年時点の例示であり、定期的な更新が必要 ### A.1 Compute | カテゴリ | 技術例 | | ------------------- | ----------------------------------------------- | | Serverless Edge | Cloudflare Workers, Vercel Edge Functions | | Serverless Regional | Vercel Functions, AWS Lambda, Netlify Functions | | Container PaaS | Railway, Fly.io, Render, Google Cloud Run | | Self-hosted PaaS | Coolify, Dokploy, CapRover | | IaC for Serverless | SST, OpenNext, Serverless Framework | ### A.2 Database | カテゴリ | 技術例 | | ------------------- | --------------------------------------- | | Serverless Postgres | Neon, Supabase, Vercel Postgres | | Managed Postgres | AWS RDS, Google Cloud SQL, DigitalOcean | | Edge SQLite | Turso, Cloudflare D1 | | Document DB | MongoDB Atlas, Firestore | | Vector DB | pgvector, Pinecone, Weaviate | ### A.3 Background Processing | カテゴリ | 技術例 | | ------------------- | ---------------------------- | | Durable Workflow | Inngest, Trigger.dev v3 | | Self-hosted Queue | BullMQ + Redis, Celery | | Simple Webhook | Upstash QStash, Vercel Cron | | Enterprise Workflow | Temporal, AWS Step Functions | ### A.4 Authentication | カテゴリ | 技術例 | | ------------- | ---------------------------- | | DX-First | Clerk, Stytch | | DB-Integrated | Supabase Auth, Firebase Auth | | Enterprise | Auth0, Okta | | Self-hosted | Keycloak, Authentik | | Library | NextAuth.js, Lucia | ### A.5 Payment | カテゴリ | 技術例 | | ------------------ | -------------------- | | Payment Processor | Stripe, Square | | Merchant of Record | Paddle, LemonSqueezy | --- ## Appendix B: Quick Reference Cards ### B.1 アーキタイプ早見表 ``` A1 Static Presence → SSG + CDN + Headless CMS A2 Campaign → SSG + CDN + 最小構成 A3 Consumer App → Serverless + Managed DB + Auth SaaS A4 Business SaaS → Container + Managed DB + Enterprise Auth A5 Marketplace → Container + Managed DB + Payment A6 Real-time → Container + Redis + WebSocket A7 AI/Compute → Container + Vector DB + External Compute ``` ### B.2 アンチパターン早見表 ``` ❌ Serverless + BullMQ → ✓ Inngest/Trigger.dev ❌ Serverless + 標準DB接続 → ✓ コネクションプーラー ❌ Edge SSR + Regional DB → ✓ Regional SSR ❌ 高帯域 + Vercel配信 → ✓ R2/S3 + CloudFront ❌ 公開API + レート制限なし → ✓ WAF + Rate Limiting ❌ 従量課金 + 上限なし → ✓ Spend Limit設定 ``` ### B.3 Tier移行チェックリスト ``` T1→T2 移行時: □ Container化対応(Dockerfile) □ 環境変数管理の整備 □ ログ集約の設計 T2→T3 移行時: □ IaC導入(Terraform/SST) □ CI/CD強化 □ 監視・アラート設計 T3→T4 移行時: □ Kubernetes習熟 □ マルチリージョン設計 □ DR計画策定 ``` --- ## Changelog | Version | Date | Changes | | ------- | ------- | ------------ | | 1.0 | 2025-01 | 初版リリース | --- ## License This framework is provided under CC BY 4.0. Attribution: mirror / ATLAS Framework --- ## 参考文献 - Gemini Deep Research: 技術選定・アーキテクチャ設計の判断マトリクス構築のための包括的調査報告書 (2025) - AWS Well-Architected Framework - ThoughtWorks Technology Radar - The Twelve-Factor App