Skip to main content

CNCFがVitessプロジェクトをホストへ

Cloud Native Computing Foundation (CNCF)のTechnical Oversight Committee(TOC 技術監視委員会)は2018年2月5日(米国時間)、Vitessプロジェクトをホストすることを決定しました。Vitessは、Kubernetes、Prometheus、OpenTracing、Fluentd、Linkerd、gRPC、CoreDNS、containerd、rkt、CNI、Envoy、Jaeger、Notary、TUF、Rookに続く16番目のプロジェクトとなります。CNCF Graduation Criteria v1.0の下、Vitessはインキュベーション プロジェクトとしてホストされました。

TOCのGraduation Criteriaは、それぞれのプロジェクトを成熟度に応じてインセプション / インキュベーション  /グラデュエートいづれかにレベル付けしています。インキュベーション プロジェクトとしてVitessは、少なくとも3件のエンド ユーザーにおける稼働実績、沢山のコミッター、さらに継続的なコントリビューション フローを実証する必要があります。

当初大量のストレージのスケーリングに対応するためにYouTubeにより内部ソリューションとして作成されたVitessは、一般化されたシャーディングによるMySQLの水平スケーリング(horizontal scaling)のためのデータベース オーケストレーション システムです。シャード ルーティング ロジックをカプセル化することで、アプリケーション コードとデータベース クエリが複数のシャードへのデータ分散にとらわれない状態を保ちます。Vitessを使用すると、わずか数秒しかかからないアトミック カットオーバー ステップにより、企業は必要に応じてシャードを分割 / マージすることもできます。BetterCloud、Flipkart、Quiz of Kings、Slack、Square Cash、Stitch Labs、YouTubeのような企業は、さまざまな段階のプロダクションとデプロイメントでVitessを使用しています。また、Booking.com、GitHub、HubSpot、Slack、Squareなどの団体もプロジェクトに積極的に参加しています

Slackのシニア スタッフ エンジニアであるMichael Demmer氏は次のように述べています。
1時間に数十億のMySQLトランザクションを実行する安定した高性能のサービスを維持するというプレッシャーの下で、最大規模の顧客や機能の増大する需要に対応できるように拡張されたアーキテクチャの必要性に伴い、Slackはサービスの中核となるMySQLインフラストラクチャーのメジャー マイグレーションを行なっている最中です。私たちは使い慣れたフル機能を装備したSQLインターフェイスを提供するソリューションを必要としており、一方でオペレーション知識と快適さを維持するためにMySQLをバッキング ストアとして引き続き使用したいと考えていました。Vitessはこの目的のための当然の選択であり、今まで十分な役割を果たしています。」

Vitessは2010年より開発が進んでいます。初期のバージョンは接続プロキシでしたが、徐々に機能が進化しツールとサーバーの効率 / フォールトトレランス / 管理性が向上しました。繰り返し進化を遂げた結果、Vitessはリレーショナル データベースの最高の特性を備えた分散型クラウド ベースのストレージ ソリューションを実現しました

PlanetScale DataのCTOでありVitessの共同創設者であるSugu Sougoumarane氏は次のように述べています。
「YouTubeの急速な有機的かつ内部的成長に直面し、単に消火する代わりに先手を打つ方法を考え出す必要がありました。Vitessの初期機能リストをようやく作り上げた時、全ての成長企業に共通する問題に対処していたことは明らかでした過去2年間のKubernetesとのコラボレーションにより、誰もが今やVitessをコンテナ クラスターで動的にスケール / スケジュールされているYouTubeと同じ方法で運用できるようになりました。私たちはVitessの機能をさらに拡張するためにCNCFと協力することを楽しみにしています。」

主な特徴

  • 重要なMySQL機能とNoSQLデータベースのスケーラビリティを一体化
  • MySQLをクラウドで実行可能に
  • 自動フェイルオーバー / リカバリ、レプリケーション、ローリング アップグレードなどのクラウド ネイティブ機能
  • 垂直方向と水平方向のシャーディング サポート、シームレスなダイナミック リシャーディング
  • カスタムしたスキームをプラグインできる複数のシャーディング スキーム
  • クエリルーティング / リライト / サニタイズ / ブラックリスト / ストリーミング / デデュプリケーション
  • マスター管理ツール (リペアレント操作)
  • パフォーマンス分析ツール

テクニカル スペック

  • Goで実装されたバックエンド コンポーネント
  • Ubuntu 14.04 (Trusty)とDebian 8 (Jessie)における継続的なテスト、他のLinuxディストリビューションも同様に動作することが見込まれる
  • MySQL 5.6、MariaDB 10.0およびそれ以降のバージョンをサポート
  • VTGateサーバーはアプリケーションがVitessに接続するために使用する主要なエントリ ポイント
  • ネットワーク マウント(NFSなど)またはBLOBストアのいづれかへのデータ バックアップをサポー

Cloud Native Computing FoundationのCOOでありThe Linux Foundationのデベロッパー リレーション担当バイス プレジデントであるChris Aniszczykは次のように述べています。
「優れたクラウド ネイティブ アプリケーションを構築するために、開発者はストレージの新しい管理方法を検討する必要があります。Vitessは既存のよく使われているMySQLデータベースをブリッジし、クラウド ネイティブの方法でスケーリングする素晴らしい例です。

オープンソースのVitessプロジェクトは、コンテナ化された環境で最適に動作しますコンテナ クラスター マネージャーとしてKubernetesとGoogle Kubernetes Engineを使用することで、簡単に始めることができます。この環境でVitessは、信頼性 / スケーラビリティ / 管理容易性が向上したMySQLストレージ レイヤーを提供しますKubernetesはコンピュート クラスタ内のノードへのスケジューリングを操作し、それらのノードの作業負荷をアクティブに管理し、アプリケーションを含むコンテナをグループ化して、管理と発見を容易にします。またKubernetesを使用するとVitessはクラウド プラットフォームの根底にある選択肢にとらわれず、ベンダー ロックインのないクラウド ポータビリティを実現します。

注目すべきマイルストーン

  • 105人のコントリビューター
  • 5,413 GitHubスター
  • 15リリース
  • 13,733件のコミット
  • 707フォーク

CNCF TOCメンバーでありプロジェクト スポンサーのBrian Grant氏は次のように述べています。
クラウド ソリューションの大きなアドバンテージは容易な水平スケーラビリティですが、データベースなどのステートフルなシステムでは、アプリケーションの複雑さや運用上のオーバーヘッドがインスタンス数とともに増加する傾向にあることが問題です。Vitessのようなクラウド ネイティブ ソリューションを使うと、アプリケーション開発者、データベース オペレーターともに水平スケーラビリティの複雑さから逃れることができます。CNCFのプロジェクトとしてVitessを歓迎することに興奮しています。私たちは、クラウド ネイティブ環境でさらに多くのクラスのワークロードを引き続き利用できるようにしていきます。」

CNCFがホストするプロジェクトとして、Vitessは技術的関心に沿った中立的なCloud Native FoundationとLinux Foundationの一員となり、プロジェクト ガバナンスとマーケティング サポート、コミュニティー アウトリーチが提供されます。

その他の資料

DZone’s Launching Vitess: How to Run Youtube’s MySQL Sharding Engine : https://dzone.com/articles/launching-vitess-how-to-run-youtubes-mysql-shardin
Vitess beyond YouTube session from Percona Live Open Source Database Conference 2017 : https://www.youtube.com/watch?v=57al_MMGr-Q
Vitess’ guide to getting started on Kubernetes : http://vitess.io/getting-started/