はじめに 本記事では Clutch という OSS の実装を読み解きながら、Go と grpc-gateway のプラガブル (pluggable) アーキテクチャについて考えます。 プラガブルというのはプラグインを追加して機能を拡張できるという意味で、プラガブルアーキテクチャとは、プラグインを追加して機能を拡張しやすいアーキテクチャを指します。 プラガブルであるためには、インターフェースが統一されていること・プラグインが独立して動作できること・プラグインを受け入れる側がプラグインの詳細を知ることなく簡単に追加できることが必要です。 Clutch は異なる目的の機能を同一のサービス(コードベース)でホストできる作りをしており、プラグイン (Clutch 上では service と表現する ) を追加して機能を拡張できるのでプラガブルであることの要件を満たしています。 また、API の構築に