プロセスタイプ
Twelve-Factor App のプロセスモデルで、アプリケーションの実行形態を分類する概念
アーキテクチャ運用
プロセスタイプとは
プロセスタイプは、Twelve-Factor App の第 8 原則「並行性はプロセスモデルで実現する」に基づく概念で、アプリケーションの実行形態を Web プロセス、Worker プロセス、スケジュールプロセスなどに分類する。
プロセスタイプの例
プロセスタイプの例を以下に示す。
| タイプ | 役割 | AWS での実装 |
|---|---|---|
| Web | HTTP リクエストの処理 | Lambda + API Gateway |
| Worker | 非同期タスクの処理 | Lambda + SQS |
| Clock | スケジュール実行 | Lambda + EventBridge |
| One-off | 一回限りのタスク | Lambda (手動実行) |
Procfile (Heroku 形式)
Procfile (Heroku 形式) を図で示す。
web: node dist/server.js
worker: node dist/worker.js
clock: node dist/scheduler.js
AWS サーバーレスでのプロセスタイプ
AWS サーバーレスでは、Web プロセスは Lambda + API Gateway、Worker プロセスは Lambda + SQS、Clock プロセスは Lambda + EventBridge で実装する。各プロセスタイプを独立してスケーリングできる。
ステートレスの原則
全てのプロセスタイプはステートレスであるべき。状態は DynamoDB、S3、ElastiCache に外部化する。プロセスが再起動しても、状態が失われない。
プロセスタイプについては関連書籍でも詳しく扱われている。
この記事は役に立ちましたか?
関連用語
Twelve-Factor App
クラウドネイティブなアプリケーションを構築するための 12 の設計原則
プロセスとスレッドの違いとは - メモリ空間・生成コスト・通信方法を比較
プロセスとスレッドの違いをメモリ空間・生成コスト・通信方法の 3 軸で比較。マルチスレッドの注意点と Go/Rust の並行処理モデルとの関係も図解で解説
Lambda
AWS のサーバーレスコンピューティングサービスで、コードをイベント駆動で実行する
Namespace と cgroup
Linux コンテナの基盤技術で、プロセスの隔離とリソース制限を実現するカーネル機能
ステートレス
プロセスが内部に状態を持たず、リクエストごとに独立して処理する設計原則
Elixir
高い並行性と耐障害性を持つ関数型言語。大量接続を捌くシステムに向く