mamoriのご紹介:Goのための型付けされた、監視可能な設... ノート

mamoriのご紹介:Goのための型付けされた、監視可能な設定とシークレット

私がこれまでにリリースしたすべてのGoサービスは、同じような構造を持つことになります。最初は小さく、いくつかのos.Getenv呼び出しから始まります。次に、AWS Secrets Managerからシークレットを取得する必要が出てきて、SDKを追加します。その後、デプロイなしでシークレットをローテーションしたいという要望があり、time.Tickerを追加します。すると、2つのゴルーチンが設定を読み込んでいる間にそれが置き換えられる可能性があるため、Tickerにはミューテックスが必要になります。次に、悪い値が紛れ込んで本番環境をダウンさせてしまうため、バリデーションを追加します。その後、インシデント中にログ行にシークレットが表示されてしまい、機密情報マスキングラッパーも追加することになります。最終的には、リポジトリごとにカスタムのConfigManagerができあがります。ローダー、フェッチャー、リフレッシュループ、ミューテックス、そして祈りです。それは一度として全く同じではなく、テストが十分に行われていることは稀で、誰も所有したがらない種類のコードです。