プロセスタイプ
Twelve-Factor App のプロセスモデルで、アプリケーションの実行形態を分類する概念
プロセスタイプとは
プロセスタイプは、Twelve-Factor App の第 8 原則「並行性はプロセスモデルで実現する」に基づく概念で、アプリケーションの実行形態を Web プロセス、Worker プロセス、スケジュールプロセスなどに分類する。原典は仕事の種類ごとにプロセスタイプを割り当てることを勧めており、HTTP リクエストは web プロセス、時間のかかる背景処理は worker プロセスが担うという分け方を例に挙げている。ただし各プロセスがステートレスであるべきというのは第 6 原則の要求で、プロセスタイプの分割はこの前提の上でしかスケールアウトに効かない。
プロセスタイプの例
分ける基準は「起動のきっかけ」である。同期のリクエスト、キューへの投入、時刻、人の手作業は、それぞれ流量の増え方も遅れの許容度も違うので、別のタイプに割り当てる。
| タイプ | 役割 | AWS での実装 |
|---|---|---|
| Web | HTTP リクエストの処理 | Lambda + API Gateway |
| Worker | 非同期タスクの処理 | Lambda + SQS |
| Clock | スケジュール実行 | Lambda + EventBridge |
| One-off | 一回限りの管理タスク (第 12 原則) | Lambda (手動実行) |
Procfile (Heroku 形式)
Procfile は <プロセスタイプ名>: <起動コマンド> を 1 行ずつ並べた拡張子なしのテキストファイルで、アプリのルートに置く。ファイル名は Procfile でなければならず、Procfile.txt では認識されない。タイプ名は自由に付けられるが web だけは特別で、Heroku のルーターから外部の HTTP トラフィックを受け取れる唯一のタイプである。
web: node dist/server.js
worker: node dist/worker.js
clock: node dist/scheduler.js
AWS サーバーレスでのプロセスタイプ
サーバーレスに移すと、常駐プロセスが消えてプロセスタイプは「関数とトリガーの組」になる。並行性はプロセス数ではなく同時実行数で決まるため、タイプごとに予約同時実行を切り分けておかないと、片方の急増がアカウント全体の枠を食って他方を枯渇させる。Worker を Lambda に載せる場合は関数のタイムアウト上限 900 秒 (15 分) が設計の制約になり、これを超える仕事は Step Functions で分割するか ECS タスクへ寄せる。
ステートレスの原則
全てのプロセスタイプはステートレスに保つ。永続させる必要があるデータは DynamoDB や S3 のような永続層へ置き、ElastiCache に置けるのは失っても作り直せる状態 (セッションやキャッシュ) までである。原典が禁じているのは「次のリクエストも同じプロセスに来る」という前提で、プロセス内のメモリやファイルシステムは 1 回の処理の中で使う一時置き場にとどめる。デプロイや設定変更、実行環境の移動による再起動でローカルの状態は消える。
実務では、まず web だけで作り、遅い処理が現れた時点で worker へ切り出す順が扱いやすい。分割するとキューの滞留監視と失敗時の再試行設計が増えるので、応答時間・スケールの単位・障害の隔離のどれを買うために分けるのかを毎回はっきりさせる。
この記事は役に立ちましたか?
関連用語
Twelve-Factor App
クラウドネイティブなアプリケーションを構築するための 12 の設計原則
プロセスとスレッドの違いとは - メモリ空間 / 生成コスト / 通信方法を比較
プロセスとスレッドの違いをメモリ空間 / 生成コスト / 通信方法の 3 軸で比較。Node.js での使い分け、Lambda の実行環境、データ競合とコンテナの PID 1 の落とし穴まで解説
Lambda
AWS のサーバーレスコンピューティングサービスで、コードをイベント駆動で実行する
Elixir
高い並行性と耐障害性を持つ関数型言語。大量接続を捌くシステムに向く
ステートレス
プロセスが内部に状態を持たず、リクエストごとに独立して処理する設計原則
Namespace と cgroup
Linux コンテナの基盤技術で、プロセスの隔離とリソース制限を実現するカーネル機能
関連する記事
体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版は初版と何が違うか - 買い直し判断ガイド
通称「徳丸本」こと体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版 (2018 年) と初版 (2011 年) の違いを出版社公表の改訂内容から整理。章の削除 / 新設 / 追加点の一覧と、初版所有者が買い直すべきかの判断基準を解説します。
JavaScript / TypeScript 本ガイド - 入門から型で守る実務コードまで
JavaScript と TypeScript を 1 本の学習ルートとして捉えた技術書の選び方。JavaScript の入門書、言語の背骨を通す体系書、TypeScript の型システムを設計の武器にする本、React/Next.js の実践書まで 2026 年 8 月時点の定番で案内します。
障害対応の夜に思い出す、あの本の 1 ページ
本番障害の緊迫した場面で、過去に読んだ技術書の知識が助けてくれた経験はありませんか。「いつか役立つ」知識が「今この瞬間」に変わる読書の価値を考えます。