GitLab Secrets Manager ADR 003: Secrets Manager を Go で実装する

GCP サービスとの統合の必要性を示した ADR-002 に続き、GitLab Secrets Manager Service(GSMS)を構築するために使用する技術スタックを決定する必要があります。

コンテキスト

GitLab では、GitLab Rails 周辺のサテライトサービスを通常 Go で構築します。これは特に、並行処理とキャッシュを多用するサービスに適した技術選択です。キャッシュは非同期で無効化/更新することができます。

Go ベースの GCP KMS クライアントライブラリも KMS にアクセスするための信頼できるインターフェースを提供しているようです。

決定事項

GitLab Secrets Manager Service を Go で実装します。サテライトサービスが共有する共通機能を提供するミニマリストライブラリとして labkit を使用します。

結果

GitLab Secrets Manager 機能を所有するチームは、より多くの Go の専門知識を習得する必要があります。

代替案

GitLab Secrets Manager Service を Ruby で実装することを検討しましたが、Ruby を使用することでは十分に効率的なサービスを構築できないという結論に至りました。