mcpField
1
12-factor-app

12-factor-app

github.com/pproencaクラウド・DevOps218315 回インストール11 週間前に更新
リポジトリ

12-factor-app について

12-factor-app は、SaaS サービスを開発・運用する人向けのクラウドネイティブ設計ガイドです。コードベースや設定からスケーリング、本番運用まで、影響度順にルールをまとめています。

主な機能

  1. 0112 分野にわたる 51 のルール
  2. 02影響度に基づく優先順位
  3. 03依存関係と設定の指針
  4. 04ビルド・リリース・実行の実践
  5. 05スケーリング、ログ、管理タスク

活用シーン

  1. 01バックエンドサービスや API の設計
  2. 02アプリケーションのコンテナ化準備
  3. 03CI/CD と環境設定の構築
  4. 04デプロイや環境の問題の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pproenca/dot-skills --skill 12-factor-app

インストール後、Claude Code で/12-factor-appを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
admin-one-off-processes.md
admin-repl-access.md
admin-same-environment.md
build-artifact-per-commit.md
build-complexity-in-build.md
build-immutable-releases.md
build-no-runtime-changes.md
build-separate-stages.md
code-deploys-not-branches.md
code-one-app-one-repo.md
code-shared-as-libraries.md
code-single-codebase.md
config-never-commit-secrets.md
config-no-env-groups.md
config-separate-from-code.md
config-use-env-vars.md
config-validate-on-startup.md
dep-deterministic-builds.md
dep-explicit-declaration.md
dep-isolate-execution.md
dep-no-system-tools.md
disp-crash-only.md
disp-disposable-processes.md
disp-fast-startup.md
disp-graceful-shutdown.md
disp-idempotent-operations.md

詳細

クラウドネイティブアプリケーションのベストプラクティス(コミュニティ版)

移植性、スケーラビリティ、保守性に優れた、最新のサービスとしてのソフトウェアアプリケーションを構築するための包括的な手法です。コードベースの管理から本番環境での運用まで、アプリケーションのライフサイクル全体を網羅する12カテゴリ、51のルールが含まれています。

適用する場面

以下のような場合に、これらのガイドラインを参照してください。

  • 新しいバックエンドサービスや API を設計するとき
  • Kubernetes や Docker 向けにアプリケーションをコンテナ化するとき
  • CI/CD パイプラインを設定するとき
  • 環境間で設定を管理するとき
  • ロギングやモニタリングを実装するとき
  • アプリケーションのスケーリング戦略を計画するとき
  • デプロイや環境の問題をデバッグするとき

優先度別のルールカテゴリ

優先度カテゴリ影響度プレフィックス
1コードベースとバージョン管理CRITICALcode-
2依存関係CRITICALdep-
3設定CRITICALconfig-
4バッキングサービスHIGHsvc-
5ビルド、リリース、実行HIGHbuild-
6プロセスと状態HIGHproc-
7並行処理とスケーリングHIGHscale-
8使い捨て可能性HIGHdisp-
9ポートバインディングMEDIUMport-
10開発環境と本番環境の同等性MEDIUMparity-
11ロギングMEDIUMlog-
12管理プロセスMEDIUMadmin-

クイックリファレンス

1. コードベースとバージョン管理(CRITICAL)
2. 依存関係(CRITICAL)
3. 設定(CRITICAL)
4. バッキングサービス(HIGH)
5. ビルド、リリース、実行(高)
6. プロセスと状態(高)
  • proc-stateless-processes - アプリケーションをステートレスなプロセスとして実行します
  • proc-no-sticky-sessions - スティッキーセッションは使用せず、セッションデータはバックエンドサービスに保存します
  • proc-no-local-filesystem - リクエスト間でローカルファイルシステムが保持されることを前提にしないでください
  • proc-compile-at-build - アセットのコンパイルとバンドルは実行時ではなく、ビルド時に行います
  • proc-share-nothing - プロセス同士が何も共有しないように設計します
7. 並行処理とスケーリング(高)
  • scale-process-model - 複数のプロセスタイプを持つプロセスモデルを通じてスケールアウトします
  • scale-process-types - ワークロードを適切なプロセスタイプに割り当てます
  • scale-no-daemonize - デーモン化や PID ファイルへの書き込みは行わず、プロセスマネージャーに任せます
  • scale-horizontal-not-vertical - 垂直スケーリングよりも水平スケーリングを前提に設計します
  • scale-process-formation - プロセス構成を宣言型設定として定義します
8. 使い捨て可能性(高)
  • disp-disposable-processes - プロセスはいつでも開始または停止できる使い捨て可能なものとして設計します
  • disp-fast-startup - 迅速なスケーリングと復旧を可能にするため、起動時間を最小限に抑えます
  • disp-graceful-shutdown - SIGTERM を受けた際に、グレースフルシャットダウンを実装します
  • disp-crash-only - 突然の停止から復旧する、クラッシュのみを想定したソフトウェアとして設計します
  • disp-idempotent-operations - 障害後に安全に再試行できるよう、操作を冪等にします
9. ポートバインディング(中)
  • port-self-contained - サーバーを組み込んで、アプリケーションを完全に自己完結させます
  • port-export-via-binding - PORT 環境変数を使用したポートバインディングでサービスを公開します
  • port-any-protocol - HTTP に限らず、ポートバインディングを使って任意のプロトコルを公開します
10. 開発環境と本番環境の一致(中)
11. ロギング(中)
  • log-event-streams - ログはファイルではなくイベントストリームとして扱います
  • log-no-routing - アプリケーション内でログをルーティングまたは保存しないでください
  • log-structured-format - 機械可読なイベントストリームには構造化ロギングを使用します
  • log-unbuffered-stdout - リアルタイムストリーミングのため、バッファリングせずにログを標準出力へ書き込みます
12. 管理プロセス(中)
  • admin-one-off-processes - 管理タスクは特別なスクリプトではなく、単発のプロセスとして実行します
  • admin-same-environment - 同じコードベースと設定を使用して、リリースに対して管理プロセスを実行します
  • admin-repl-access - デバッグとデータ検査のために REPL アクセスを提供します

使用方法

詳しい説明とコード例については、各リファレンスファイルをお読みください。

リファレンスファイル

ファイル説明
references/_sections.mdカテゴリーの定義と順序
assets/templates/_template.md新しいルール用のテンプレート
metadata.jsonバージョンとリファレンス情報

コメント