MyKinstaの「プロセス」画面では、アプリケーションのランタイムおよびビルドのプロセスが表示されます。この画面で、独自のランタイムコマンドを編集・定義することも可能です。プロセスの設定例はこちらをご覧ください。

ランタイムプロセス

アプリケーションにはランタイムプロセスが必要です。

プロセスの種類

ウェブプロセス

ウェブプロセスはアプリケーションを実行します。アプリケーションの追加時にstartコマンドを指定しない場合、最初のデプロイ時にstartコマンドの自動検出が試行されます。例えば、Node.jsアプリケーションのstartコマンドは、npm startまたはyarn startです。

これは削除することができず、アプリケーションごとに1つのウェブプロセスのみ指定可能です。

バックグラウンドプロセス

バックグラウンドプロセスは、メインアプリケーションとは別にバックグラウンドで実行されます。レポート生成や大量のデータ処理など、長時間実行が必要なタスクに適しています。バックグラウンドプロセスは、一定の時間が経つと終了する1回限りのジョブではありません。ジョブ完了後に終了した場合、Podはシャットダウンして再起動し、処理を繰り返します。

追加できるプロセスの数に制限はありませんが、各プロセスの実行に少なくとも1つのPodを必要とします。

cronジョブ

cronジョブは、アプリケーションのプロセスを特定の間隔でスケジュールし、繰り返しのタスクを自動化します。バックグラウンドプロセス同様、各cronジョブの実行には少なくとも1つのPodが必要です。設定された日時に基づいて起動し、必要な処理を終えるとシャットダウンします。

MyKinstaでプロセスを定義する

プロセスを追加するには、「プロセスを作成」をクリックし、次のようにフィールドに情報を入力します。

  • 名前:プロセス名(「Worker」など)
  • タイプ:バックグラウンドプロセスまたは cronジョブを選択
  • startコマンド:プロセスの起動に必要なコマンド(例:npm run [process]
  • Podサイズ:プロセスに割り当てるCPUとRAMを選択
  • インスタンス数:インスタンスの数(最大50台まで追加可能です。1インスタンス=1つのPodを意味し、すべてのインスタンスは、同じPodサイズになります。インスタンス毎に異なるPodサイズを定義することはできません)

Procfileでプロセスを定義する

Procfileは、アプリケーションのコードからプロセスを定義し、リポジトリにコミットする必要があります。Procfileには、次のような形式で1行に1つのプロセスを記述します。

process_name: command

例えば、Laravelアプリケーションを実行する場合、以下のようにします。

web: php artisan serve --host 0.0.0.0 --port 8080

Procfileを使用する時には、コンテナがウェブリクエストを満たすように、webという名前のプロセスを定義する必要があります。

アプリケーションリソースのスケーリング

Podのサイズを変更したり(垂直スケーリング)、同時に実行するPodの数を変更したり(水平スケーリング)することができます。名前を除くすべての変更により、自動でアプリケーションのロールアウトプロセスが開始されます。

  • 垂直スケーリングは、リソース集約的なタスクを実行するためにPodの性能を引き上げるのに有用です。
  • 水平スケーリングは、多くのリクエストを処理するアプリケーションにおける安定性とロードバランシングに効果を発揮します。たとえば、同じ性能のPodを3つ実行することができます。土台にあるシステムで、リクエストが3つのPodのうちの1つにルーティングされ、効果的な負荷の分散が期待できます。1つのPodが不安定になると、それが回復するまで、他の2つのPodにリクエストがルーティングされます。

Podサイズを含め、プロセスの中身はいつでも変更することができます。ステートレスアプリケーション(永続ストレージなし)の場合、ウェブプロセス水平オートスケーリングでインスタンスの最小数と最大数(最大10)を設定し、必要に応じて自動的に拡張可能です。Podサイズの変更やその他の拡張方法については、アプリケーションリソースの拡張をご覧ください。

ビルドプロセス

ビルドプロセスが使用しているビルドマシンが表示されます。「ビルドプランの更新」をクリックすると、ビルドプロセスで使用するリソースを変更できます。