読者の皆様へ: 皆様のご要望にお応えするべく、ノイズを削減する機能セットを開発しました。皆様が関心をお持ちのトピックを、EメールとWeb通知で受け取ることができます。新機能をぜひお試しください。
Netflixは、Titusという独自のコンテナ管理プラットフォームをオープンソースとしてリリースすると発表した。TitusはApache Mesosをベースとして、AWS EC2上で動作する。
自社のサービスをAWS上の仮想マシンで運用するNetflixは、コンテナベースの開発とデプロイメントモデルのメリットを活用するため、システムの一部をコンテナに移行する作業を開始した。その中で同社に固有の課題となったのが、既存のクラウドネイティブなアーキテクチャの存在だ。コンテナモデルへの移行によって、あまりにも大きな変化があることは許されない。VMとコンテナを併用するハイブリッドなデプロイメント、マイクロサービスとバッチジョブの混合、コンテナに伴って導入される新たなレイヤの信頼性の保証といったものが、技術的な面での課題であった。
これらの課題に対処するため、Titusと呼ばれる独自のコンテナ管理プラットフォームが開発されることになった。Netflixは現在、ビデオストリーミング、レコメンデーション、マシンラーニング(ML)、ビッグデータ、コンテントエンコーディング、スタジオテクノロジ、および社内エンジニアリングツールをコンテナで運用しており、その数は1日当たり50万コンテナと20万クラスタに及ぶ。
TitusはApache Mesos上に構築されている。Apache Mesosは、CPUやRAMといった基盤となるリソースを抽象化して、アプリケーションが利用可能なリソースのプールとしてのビューを提供するフレームワークである。MesosはLinux cgroupsを使用して実行中のプロセスにアイソレーションを提供し、“アプリケーション対応”、すなわちバッチジョブやマイクロサービスといったさまざまなアプリケーションに対処することができる。
アプリ固有のロジックはMesos“フレームワーク”内にカプセル化されている。このフレームワークには、Mesosマスタと呼ばれるクラスタマネージャによって、下位のリソースの一部が提供される。コンテナ固有のオーケストレーションは、DockerをサポートするApache Marathonと呼ばれるフレームワークを使用して、Mesos上で実行される。KubernesやDocker Swarmといったコンテナオーケストレーションがすでに存在しているが、Netflixのエンジニアリングチームは、自社に固有の要件をよりよく機能させるには、Mesos上に独自の実装を行うことが望ましいと考えた。TitusはNetflixのTitanとMantisという、2つのプロジェクトから発展したものだ。
https://queue.acm.org/detail.cfm?id=3158370より引用
Titusのアーキテクチャはマスタ-エージェントモデルに基づいており、リーダ選挙(leader election)にはZookeeperを、マスタ状態の保存にはCassandraを使用する。ジョブは宣言的な方法でマスタに送信され、実行されるコンテナを起動する。この方法は、コンテナをローンチするためのレプリカ数などのメタデータを指定するKubernetes Deploymentに近いものだ。
Titusは2つの“ティア”を使用して容量管理を行う。ひとつは“クリティカル”と呼ばれるもので、コンテナが素早く起動するために必要なVMを確保することで、必要以上に多くのVMが動作する状況に対処する。もうひとつは“フレキシブル”で、VMレベルで動作し、要求に基づいたVMの初期化と停止を実行する。要するにこれは、コンテナのスケールアップを可能な限り速くするためのものだ。他のスケジューラでは、同じ問題をさまざまな方法で解決している。例えばKubernetesでは、水平ポッドオートスケーラ(上記のクリティカルティアに相当)とクラスタオートスケーラ(フレキシブルティアに相当)を組み合わせて使用している。
NetflixのインフラストラクチャはAWSをベースとしているので、論理的な疑問として浮かび上がるのは、TitusがAWSや、あるいはEurekaやRibbon、Atlasといった同社自身のマイクロサービスプラットフォームの依存関係との結び付きがどの程度なのか、という点だ。ACMの論文によれば、TitusはNetflixの社内サービスと緊密に結合しており、一部のサービスはTitusを活用するようにリファクタする必要があった。既存のNetflixアプリはAWS上の単一VMでの運用を前提として、AWS固有のセキュリティやネットワークの抽象化をVMレベルで使用している。Titusでは単一のVM上に複数のコンテナが存在するため、同様の機能をコンテナレベルで提供するためのレイヤを新たに設ける必要があった。
Titusは、NetflixのCI/CDツールであるSpinnakerとも統合されているため、オープンソース化の過程において“Netflixの社内システムから分離”するためのリファクタリングが実施されている。
この記事を評価
- 編集者評
- 編集長アクション