組み込みサービス
組み込みサービスとは、ネットワーク呼び出しを介して別個の外部マイクロサービスとしてアクセスされるのではなく、より大きなアプリケーションまたはシステム内に直接統合されるソフトウェアコンポーネントまたは機能のことを指します。リモートAPIリクエストを行う代わりに、サービスロジックまたは軽量ラッパーがホストアプリケーションの実行環境の隣または内部にデプロイされます。
サービスの組み込みは、アプリケーションの運用プロファイルを大幅に変更します。機能を共存させることで、開発者はネットワーク遅延を削減し、プロセス間通信のオーバーヘッドを最小限に抑え、特定の密結合な機能のデプロイの複雑さを簡素化できます。このアプローチは、ネットワークホップを排除することによるパフォーマンス上の利点が、完全なサービス分離の利点を上回る場合に採用されることがよくあります。
実装方法は技術スタックによって異なります。あるケースでは、サービスロジックがメインアプリケーションのバイナリに直接コンパイルされます。別のケースでは、同じコンテナまたはプロセス空間内のサイドカープロセスとして実行され、ネットワーク経由のHTTP/RPCではなく、インメモリメカニズム(共有メモリや直接関数呼び出しなど)を介して通信します。
組み込みサービスは、高頻度で低遅延な操作によく使用されます。例としては、リアルタイムデータ検証、ユーザー入力時に即座に実行される軽量な認証チェック、またはメインリクエストパイプライン内で実行されなければならない特殊なデータ変換ロジックが挙げられます。
主な利点には、遅延の削減、ローカルデバッグの簡素化、および多数の独立したネットワークエンドポイントを管理することに関連する運用コストの潜在的な削減が含まれます。クリティカルパスの操作では、組み込みにより予測可能なパフォーマンスが保証されます。
主な欠点は、モジュール性の低下です。サービスを密結合にすることは、独立したスケーリングと更新をより複雑にします。組み込みサービスでの障害は、ホストアプリケーション全体をダウンさせる可能性があり、影響範囲を拡大させます。
この概念は、サービスが意図的に分離されている従来のマイクロサービスアーキテクチャとは対照的です。サイドカーパターンと類似点がありますが、統合のレベル(プロセス内か共存か)は大きく異なります。