Docker RegistryをP2Pでスケーラブルに再構築した「Kraken」、Uberがオープンソースで公開
Dockerイメージを保存し、公開し、再利用を可能にするのがDocker Registryの働きです。ソフトウェアを軽量にパッケージングし、簡単に再利用できるDockerの便利さを支えています。
しかしこの単純な中央データベース方式を基盤としたレジストリは、多数のデベロッパーがDockerを用いて開発を行う環境では、たとえキャッシュやシャーディングを駆使したとしてもスケーラビリティの問題が発生し、ボトルネックになってしまうとUberは指摘しています。実際に同社はそれに悩まされていたそうです。
そこで同社はDocker Registryをスケーラブルにするため、Peer-to-Peerアーキテクチャで再構築した「Kraken」を開発、オープンソースで公開しました。
同社のブログに投稿された記事「Introducing Kraken, an Open Source Peer-to-Peer Docker Registry」では、Krakenの特徴を次のように紹介しています。
When developing Kraken, we explored multiple design choices along the way to end up with a P2P architecture. Kraken uses a P2P protocol tailored to a data center network environment and improves microservice lifecycle management at the enterprise level.
Krakenの開発に当たっては、最終的にP2Pアーキテクチャへ至るまでに設計においていくつかの選択肢がありました。結局、Krakenはデータセンターのネットワーク環境に合わせたP2Pプロトコルを用いることとし、エンタープライズレベルでマイクロサービスのライフサイクル管理を改善しています。
Kraken supports pluggable storage options, and instead of managing data blobs, Kraken plugs into reliable blob storage options like S3, HDFS, or another registry. The storage interface is simple, and new options are easy to add.
Krakenはプラグイン可能なストレージオプションをサポートしており、自身でデータ用Blobを管理する代わりに、Amazon S3やHDFS、そのほかのレジストリといった高信頼のストレージオプションを用います。
Krakenはクラスタ間でルールベースの非同期レプリケーションを行い、自己修復能力を備えた、メンテナンスの容易なシステム。クラスタあたり少なくとも8000ホストをサポート。
Uber社内ではすでにKrakenが稼働しており、1日あたり100万Blob(Binary Large Object)がやり取りされ、ピーク時には100MBから1GBまでの2万個のBlobを30秒以内に配信しているとのこと。
Krakenを導入した2018年以来、Uber社内におけるDocker Registryのボトルネック問題は解消されたそうです。
あわせて読みたい
コンテナランタイム「containerd」が十分に成熟したとして、Cloud Native Computing Foundationの「卒業」プロジェクトに
≪前の記事
Unicode 12.0正式版が登場。日本語では小文字の「ゐ」「ゑ」「を」「ヰ」「ヱ」「ヲ」「ン」が追加。新元号が発表され次第、次の12.1で新元号キャラクタを追加