この記事は、The Twelve-Factor Appを補足し、実際に現代的なWebアプリケーションで適用する場合の注意点などを紹介するシリーズです。下記の原文を読んだ上でのワンポイント解説になります。
概要
これは何を表しているか
「6. プロセス」で作成したプロセスが他のプロセスと接続する場合は、ポート番号を公開し、TCPまたはUDPによって接続するようにします。シェアードナッシングですので、それ以外の通信手段は持ってはいけません。UNIXドメインソケットや、その他ファイルシステムを使うようなもの、過度に抽象化されたプロトコルなどはNGです。
ポートによる通信は多くのアーキテクチャでサポートされており、特にDocker環境ではポートでコンテナ間通信を行うことが原則となります。
また、ポートを使うことにより、サービスそのものが別のサービスと接続することも簡単になります。いわゆるマイクロサービス的なアプローチを行う場合でも構成が簡単になります。
実際に運用する場合
Dockerでアプリケーションを上げる場合こうなるのですが、1つの役割のアプリケーションは1つのプロセスから起動し、それらはポートで通信するようにしておくと良いです。
1つのアプリケーションが複数のポートを公開すること自体は問題ありません。例えばElasticsearchではHTTP用のポートとノード間通信のポートが別に用意されています。
php-fpmの場合もUNIXドメインソケットを使わずポートでlistenすることによってFastCGIで通信することができますので、手前にnginxなどを置いてポート通信することで要件を満たすことができます。