コンテンツにスキップ
getnextpdf.com

Enterprise エディション

出力パイプライン

NextPDF Enterprise は、NextPDF Pro の出力パイプラインマニフェストの大規模なバッチ実行を、構成可能な並行性の上限と、完了した出力に対する任意のコンプライアンスハンドオフとともに調整します。Pro 出力パイプラインの上に位置するバッチレイヤーです。

この機能は NextPDF Enterprisenextpdf/enterprise)に含まれ、Enterprise ティアのライセンスエンベロープでアクティブになります。そのエンタイトルメントを持たないデプロイメントでは、この機能のクラスはロードされません。エディションを比較してライセンスを取得する

Enterprise のバッチサーフェスは Pro 出力パイプライン(pro.output.pipeline)の上に構築されますが、これはゲートではなく前提条件です。機能ごとの個別の機能コードはありません。バッチオーケストレーターとコンプライアンスハンドオフは、ライセンス付きの nextpdf/enterprise パッケージがインストールされている場所であればどこでも利用できます。

Terminal window
composer require nextpdf/enterprise:^3

BatchPipelineOrchestrator は、多数の PipelineManifest インスタンスを 1 つのバッチとして実行します。各マニフェストは Pro の PipelineExecutor を通じて実行されます。オーケストレーターは、バッチの調整、リソース制限ガード(バッチごとのマニフェスト数に上限が設けられます)、バッチごとのタイムアウト処理、そして任意のコンプライアンスハンドオフを追加します。

BatchPipelineConfig は 3 つのことを制御します。同時並行のワーカーコールバックの最大数、任意のグローバルバッチタイムアウト(ミリ秒単位)、そしてパイプライン完了後にすべての出力に対してコンプライアンスチェックを実行するかどうかです。コンプライアンスチェックが有効な場合、ComplianceHandoff がパイプラインステップとして統合され、派生した各 PDF を Enterprise コンプライアンスゲートウェイを通じて再検証します。これにより、パイプラインによって変更されたドキュメントは、変更前の状態から信頼されるのではなく、再チェックされます。

本番デプロイメントでは、並列ワーカーのディスパッチとバックプレッシャーは別の実行サイドカーによって処理されます。ここで説明する PHP オーケストレーターは、バッチの調整とコンプライアンスハンドオフのロジックを提供し、リクエストハンドラーから直接ではなく、ジョブワーカーによって呼び出されます。

大量のバッチ生成は 2 つの関心事に分かれます。すなわち、どのマニフェストをどの保証のもとで実行するかを調整することと、生の並列スループットを駆動することです。NextPDF は、調整とコンプライアンスのセマンティクスをこの決定的な PHP オーケストレーターに保持し、並列ワーカーのディスパッチとバックプレッシャーは別の実行サイドカーに委ねます。その境界により、スループットレイヤーは並行性を独立してスケールでき、一方でオーケストレーターはシンプルで、制限され、監査可能なままとなります。バッチごとのマニフェスト数のハードな上限がピークメモリを予測可能に保つため、1 つの大きな送信がワーカープールを低下させることはできません。コンプライアンスハンドオフは、派生した各出力を変更前の状態から信頼するのではなく再検証し、フェイルクローズします。完了したマニフェストは、ゲートウェイが適合を確認した場合にのみパスし、デフォルトでパスすることはありません。

設計の背景: 大量ドキュメント生成

クラス責務
BatchPipelineOrchestrator多数のマニフェストを、制限された並行性でバッチとして実行。
BatchPipelineConfig最大並行性、バッチタイムアウト、完了時コンプライアンスのトグル。
BatchPipelineResult集約: マニフェストごとの結果、完了数と失敗数、タイミング。
ComplianceHandoff任意のパイプライン終了時コンプライアンス再検証ステップ。
use NextPDF\Enterprise\OutputPipeline\BatchPipelineOrchestrator;
$result = (new BatchPipelineOrchestrator($executor))->executeBatch($manifests);
use NextPDF\Enterprise\OutputPipeline\BatchPipelineOrchestrator;
use NextPDF\Enterprise\OutputPipeline\BatchPipelineConfig;
$config = new BatchPipelineConfig(
maxConcurrency: 4,
timeoutMs: 600_000,
complianceCheckOnComplete: true,
);
$result = (new BatchPipelineOrchestrator($executor, $config))
->executeBatch($manifests, $variablesMap);
$logger->info('pipeline.batch', [
'completed' => $result->completedCount,
'failed' => $result->failedCount,
]);
  • バッチはマニフェスト数の上限を強制します。これを超えると、黙って低下するのではなく、リソースガードエラーが発生します。
  • グローバルタイムアウトがゼロの場合、バッチタイムアウトはありません。本番では有限の値を設定し、スタックしたマニフェストがバッチを無期限にブロックできないようにしてください。
  • コンプライアンスハンドオフは、上流ステップの出力に認識可能な PDF があることを必要とします。見つからない場合、ステップは黙ってパスするのではなく、そのマニフェストについて失敗を報告します。
  • このモジュールは Pro 出力パイプラインに依存します。新しいステップモデルではなく、バッチの調整を追加するものです。

スループットは、構成された並行性とマニフェストごとのコストに応じて増減します。並行性は、コールバックがワーカープールを飽和させないよう、ワーカープールに対して控えめに設定すべきです。バッチごとのマニフェスト上限が、ピークメモリを制限します。

バッチオーケストレーターは、呼び出し元が供給するあらゆるマニフェストと変数を処理します。パイプラインの入力は、他のあらゆる信頼できない PDF ワークロードと同様に扱ってください。コンプライアンスハンドオフは再検証の補助であり、認可の管理策ではありません。

バッチ出力には個人データが含まれる場合があります。処理はインプロセスかつローカルで行われ、このオーケストレーターによるアウトバウンドのネットワーク呼び出しはありません。バッチ出力には、ご自身の保持管理策を適用してください。

バッチ結果は、ドキュメントの内容ではなく、カウントとタイミングを報告します。マニフェスト識別子がテナントやケースのデータをエンコードしている場合は、ログからスクラブしてください。

このモジュールについては標準への適合性は主張されません。これはオーケストレーションレイヤーです。任意のコンプライアンスハンドオフは Enterprise コンプライアンスゲートウェイに委ねられ、ゲートウェイは独自の参照を運びます。

このモジュールは暗号操作を実行しません。

主要な入力は、呼び出し元が供給するマニフェストと変数です。緩和策: バッチごとのマニフェストのハードな上限、制限された並行性、派生出力の任意の再検証、そしてオーケストレーター自体にネットワーク I/O がないことです。

  • executeBatch() は、各マニフェストを Pro パイプラインエグゼキューターを通じて実行し、完了数と失敗数、タイミングを伴うマニフェストごとの結果を返します。
  • ハードな上限がバッチごとのマニフェスト数を制限します。これを超えると、黙って低下するのではなく、リソースガードエラーが発生します。
  • グローバルタイムアウトがゼロの場合、バッチタイムアウトはありません。有限の値は、スタックしたマニフェストを制限します。
  • 有効な場合、コンプライアンスハンドオフは派生した各 PDF を再検証し、上流に認識可能な PDF が見つからない場合は、黙ってパスするのではなく、ステップの失敗を報告します。

このページは、外部から観測可能な挙動とサポートされるパブリック API サーフェスのみを文書化します。内部の名前空間パス、ヘルパークラス、メカニズムのテーブル、ランブックのファイル名、チケットプレフィックスは範囲外です。

NextPDF Core には出力パイプラインのモデルがありません。Core のみのデプロイメントは、Core API に対して独自のステップを直接組み立てます。マニフェストも、バッチの調整も、コンプライアンスハンドオフもありません。

Pro のみのデプロイメントでは、サポートされるサーフェスは単一マニフェストの Pro 出力パイプライン(pro.output.pipeline)です。Pro の PipelineExecutor は、一度に 1 つのマニフェストを実行します。Pro は、バッチオーケストレーター、制限された並行性のバッチガード、バッチごとのタイムアウト、Enterprise コンプライアンスハンドオフを提供しません。Pro のみのデプロイメントでバッチオーケストレーションまたはコンプライアンスハンドオフを要求する構成には、それを満たす Enterprise コンポーネントがありません。Pro のパイプラインサーフェスについては Pro overview を参照してください。

バッチの調整、リソースガードの制限、コンプライアンスハンドオフの配線は、挙動レベルでのみ説明しています。内部のサイドカーディスパッチプロトコル、内部のバックプレッシャーのセマンティクス、内部のコンプライアンスゲートウェイの配線は、パブリックサーフェスの範囲外であり、ここでは複製していません。

本番では、並列ワーカーのディスパッチとバックプレッシャーは別の実行サイドカーによって処理されます。ここで説明する PHP オーケストレーターは、バッチの調整とコンプライアンスハンドオフのロジックを提供し、リクエストハンドラーから直接ではなく、ジョブワーカーによって呼び出されます。ワーカープールのサイジング、サイドカーのプロビジョニング、PHP ワーカープールに対する並行性の上限は、オペレーターの責任です。コンプライアンスハンドオフは再検証の補助であり、認可の管理策ではありません。

任意のコンプライアンスハンドオフは、派生ドキュメントに対して検証パスを再実行します。所見を報告するものであり、ドキュメントを認証したり、規制上の十分性を保証したり、法的助言を構成したりはしません。出力がご自身の義務を満たすかどうかの判断は、ご自身の責任です。