マルチポート対応

dewyは単一のアプリケーションで複数のTCPポートを同時に管理する機能を提供します。この機能により、HTTPとHTTPS、API とWebUI、本番用とデバッグ用など、異なる目的のサービスを統合的にデプロイできます。server-starterライブラリと連携することで、各ポートに対して独立したプロセス管理とグレースフルリスタートが可能になります。

マルチポートのユースケース

開発環境やリソース制約のある環境では、本来であれば独立したサービスとして分離すべきものを単一のアプリケーションが複数のサービスを提供する要件があります。 dewyのマルチポート機能は、これらの複雑な要件に対応するために設計されています。

プロトコル別

REST API、gRPC、GraphQLなどの異なるプロトコルを、単一のアプリケーションで提供したい場合があります。マルチポート機能により、管理コストを抑えながら複数のプロトコルに対応できます。

# REST API、gRPC、GraphQLを単一アプリで提供
dewy server --registry ghr://myorg/webapp --port 8080,8443,8090 -- /opt/webapp/current/webapp

この構成により、ポート8080でREST API、ポート8443でgRPCサービス、ポート8090でGraphQLエンドポイントを同時に提供でき、開発環境でのサーバー管理を簡素化できます。

機能別

単一のアプリケーションでも、API、管理画面、メトリクス収集など、異なる機能を独立したポートで提供することで、各機能に対して異なるセキュリティポリシーやアクセス制御を適用できます。

# API、管理画面、メトリクス用の複数ポート
dewy server --registry ghr://myorg/webapp \
  --port 8080,8090,9090 \
  -- /opt/webapp/current/webapp

この例では、単一のアプリケーションがポート8080でメインAPI、ポート8090で管理画面、ポート9090でPrometheusメトリクスを提供できます。

開発環境

開発環境では、本番用の機能とデバッグ用の機能を同時に提供する必要があります。デバッグポートでは詳細なログ出力やプロファイリング情報を提供し、本番ポートでは通常の動作を確認できます。

# 本番用とデバッグ用の並行運用
dewy server --registry ghr://myorg/devapp \
  --port 8080,8081 \
  -- /opt/devapp/current/devapp --prod-port=8080 --debug-port=8081

開発者は本番環境と同じ条件でテストを行いながら、必要に応じてデバッグ情報にもアクセスできます。

複数ポート指定の方法

複数のポートを指定する場合は、複数のフラグを使用するか、カンマ区切りで指定できます。どちらの方法でも同じ結果が得られるため、設定スクリプトの可読性や保守性を考慮して選択してください。

# 複数フラグによる指定
dewy server --registry ghr://myorg/app -p 8080 -p 8081 -p 9090 -- /opt/app/current/app

# カンマ区切りによる指定
dewy server --registry ghr://myorg/app --port 8080,8081,9090 -- /opt/app/current/app

カンマ区切りの方法は、設定ファイルや環境変数での管理に適しており、複数フラグの方法は動的な設定変更に適しています。

ポート範囲

連続する複数のポートを指定する場合は、範囲指定を使用することで設定を簡潔に記述できます。この機能は、ロードバランシングやマルチインスタンス構成で特に有用です。

# ポート範囲の指定(8080から8085まで)
dewy server --registry ghr://myorg/app --port 8080-8085 -- /opt/app/current/app

範囲指定では、セキュリティとリソース管理の観点から、最大100ポートまでの制限があります。より多くのポートが必要な場合は、複数の範囲指定を組み合わせてください。