GoコードをGitHubに依存させるな
Judul asli: Don't couple your Go code to GitHub
Mengapa Ini Penting
企業のGoライブラリ管理コスト削減と、ベンダー依存回避の実践的な手法として注目される。
GoのパッケージパスにGitHubのURLを直接使うと、ホスティング移行時にコード全体の変更が必要になる。カスタムドメインで回避できる。
Go言語はパッケージのインポートパスにコードの取得先URLを使う仕組みを採用している。例えば「github.com/user/repo」と書けばGoツールが自動でコードを取得する。シンプルで便利な反面、コードがGitHubなどのホスティングサービスに強く結びついてしまう問題がある。
ブログ著者のIain Cambridgeは、実際にある企業がGitLab・GitHub・Azure DevOpsの3サービスを同時運用し続けた事例を紹介している。コードのインポートパスを変更するコストが膨大すぎて移行できず、「時間がない」という理由で3つのプラットフォームに費用を払い続けた。
解決策はカスタムドメインの活用だ。「go.iain.rocks/boneclone」のような独自ドメインを使えば、ホスティング先を変えてもエンドユーザーのインストールコマンドは変わらない。Uber(go.uber.org)やMongoDB(go.mongodb.org)も同じ手法を採用している。NginxとHTMLのメタタグによる設定例も公開されており、go-get=1クエリを判別して適切にリダイレクトする構成が示されている。