[和訳] Supermarketの過剰なダウンロード数について #getchef
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Those Pesky Supermarket Download Counts (2015/01/21) の和訳です。
Supermarketの立ち上げから、Cookbookのダウンロード数がどういう仕組みで早く上がるのか時折質問されてきました。実際、空のCookbookをアップロードすると、すぐに10,000ダウンロードを越えてしまうでしょう。
ダウンロード数は、Cookbookがウェブインターフェイスから、またはAPIを通してダウンロードされるたびにカウントされます。これは、ウェブインターフェイスから誰かがダウンロードした結果のみをダウンロードとして追跡していたコミュニティサイトの以前の仕組みからの変更です。
Berkshelfに寄り添って
カウンタがどうしてこのようになっているか理解するには、ちょっとした歴史があることを知る必要があります。Cookbook依存関係マネージャであるBerkshelfが導入されたので、よりよいChefの世界を維持する必要がありました。ご存知の通り、今日は/universeエンドポイントが作成されています。事実、このエンドポイントはすべてのCookbookのバージョンと依存関係をJSON形式で提供するという、かなり単純なものです。
問題は、すべての依存情報のためのAPIが存在していないことでした。コミュニティサイトはそれを行うAPIを提供していませんでした。この問題を解決するには1つの可能性しか残っていませんでした。berkshelf-apiサーバはコミュニティサイトの各Cookbookをダウンロードし、展開してmetadata.jsonをパースする必要がありました。さらに悪いことに、サービスを最新に保っておくために、デフォルトでは5分ごとに実行していました。
Supermarketがリリースされた現在、すばらしいことに、多くの問題がなくなりました。第一に、Supermarketは/universeエンドポイントを提供しています。実際はapi.berkshelf.comへのサポートを提供するサービスです。第二に、Cookbookの依存情報をSupermarketが提供するAPIを通して取得できます。最後に、berkshelf-apiサーバのバージョン2.0.0以降は、実行するごとにCookbookをダウンロードせず、代わりに依存情報を取得するためにSupermarketのAPIを利用します。
ダウンロード数の修正
Chefについて高く評価している点の一つは、他のものを壊さないようにとても努力しているということです。誰もberks installだけが、berkshelf-apiサーバが落ちていることを発見できる手段であることを望んではいません。よって、ダウンロード数を修正する方法は、berkshelf-apiサーバインスタンスを更新してもらうことです。これはダウンロード数をより正確にする助けとなるだけでなく、すべてのCookbookをダウンロードする代わりにAPI問い合わせをするだけなので、berkshelf-apiサーバがより効果的に動作するようになります。