KubeCon Europe 2023よりGitHubがMySQL互換のVitessを使った事例のセッションを紹介
KubeCon+CloudNativeCon Europe 2023から、GitHubがMySQL互換の分散データベースVitessを導入したユースケースを解説するセッションを紹介する。
これはVitessの開発元であるPlanetScaleのFlorent Poinsard氏とGitHubのArthur Schreiber氏が一緒に行ったセッションで、前半をPlanetScaleのPoinsard氏が担当し、後半のGitHubでの使われ方をSchreiber氏が解説するという形式を採っている。
VitessはYouTubeが使う分散データベースで、MySQLと互換性がありながらMySQLが不得意とするシャーディングとレプリケーションを高速に実行できるという特徴を持つオープンソースソフトウェアだ。CNCFのインキュベーションプロジェクトとして2018年2月にホストされ、2019年11月にGraduationしたという短期間で結果を出しているソフトウェアと言って良いだろう。KubernetesがGraduationまで約3年をかけたことを考えると非常に成熟していると言える。
ここでユースケースとしてYouTube以外にSlack、JD.comそしてGitHubを挙げて説明。JD.comは中国で第2位という規模の巨大なECサイトで、Nasdaqにも上場しているメジャープレイヤーだ。GitHub、YouTube、そしてJD.comというミッションクリティカルな使われ方でも、Vitessはその可用性が実証されているといったところだろう。またVitessはPlanetScaleが運営するクラウドサービスとしても提供されている。
次のスライドではVitessのアーキテクチャーが解説されている。右端のデータストアが分散されていることがわかる。その手前にあるvtgateがシャーディングされたデータストアにアクセスを分配するキーコンポーネントだ。
そしてVitessを導入する前のGitHubのMySQLについて解説したのが、次のスライドだ。ここでは80のクラスターから約1200のMySQLインスタンスが利用されていたと説明。ベアメタルのサーバーの上で実行されていたのは、性能を求めての仕様だろうか。
そしてMySQLの問題点について、MySQLを実行するサーバーをアップグレードするコスト、スキーママイグレーションの処理時間、レプリケーションの遅さなどを挙げた。
そしてMySQLからVitessに移行した理由として「MySQLの互換であったこと」「シャーディングのモデルがGitHubの欲しいデータモデルに近かったこと」そして「クエリーの互換性が高かったこと」などを説明した。
VitessがGitHubに導入されたのは2019年で、そこからGitHubのサービスであるNotifications、Actionsなどが移行され、現在ではIssuesとPull RequestのすべてがVitess上で実行されているという。
IssuesやPull Requestsがどのくらいの規模で処理されているのかを説明したのが次のスライドだ。
16のプライマリーに16のシャーディング、レプリカは48のインスタンスで実行、サイズとしては26TBほどだという。そこに3万クエリー/秒をプライマリーに、22万クエリー/秒がレプリカに実行されているという。
そしてVitess移行前後の比較を示しているのがこの表だ。
MySQL自体のプライマリーとレプリカの数がかなり異なっているのがわかる。また必要メモリーも減少しており、問題点として挙げられていたハードウェアコストが削減されていることがわかる。さらにオンラインでスキーマ変更を行うために必要な時間が、3週間から2日へと劇的に減少していることに注目したい。かなり大きな効果があったと言えるだろう。
そして現状はバージョン15で実行されているVitessだが、最新バージョンへのアップグレードなども計画されているという。多くのコンポーネントがKubernetes上で実行されていることも解説された。
最後にGitHubの経験からMySQLをスケーラブルに拡張できたこと、もしもMySQLを大量に使ってシャーディングやレプリケーション、スキーマ変更などに苦労しているなら、Vitessは検討するべきと説明してPlanetScaleのPoinsard氏に交代した。
ここでPoinsard氏が最新バージョンである17の概要を簡単に紹介してセッション全体を終えた。
全体としてソフトウェアそのものの解説をPlanetScaleが担当し、ユースケースの概要はユーザーであるGitHubが担当、背景や選択した理由、効果などについてユーザー自身に語らせるというスタイルが非常に上手く機能したセッションとなった。特にMySQLのアプリケーションはなるべく変更せずにデータベースそのものを変えることで問題点を解決した手法は評価されるべきだろう。処理時間を3週間から2日に短縮できるなら、多くのMySQLユーザーはVitessに注目するべきだ。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Kubernetes Forum@ソウル、YouTubeの本番で利用されるVitessのセッションを紹介
- KubeCon North Americaサンディエゴで開催。12,000人と過去最大の規模に
- MySQL互換のTiDBを開発するPingCAP、日本での本格始動を開始
- KubeCon China注目の初日キーノートはプロジェクトアップデート
- 「KubeCon NA 2022」 から、ソフトウェアへの署名を行う「Sigstore」のプレカンファレンスを紹介
- KubeCon NA 2020 CERNの巨大な分析ジョブをコンテナ化する際の高速化から見るOSSの有機的な繋がり
- 「Cloud Native Trail Map」の10ステップを紐解く(ステップ6~7)
- MongoDB Tokyo 2013で語られた、NoSQLを上手に使うためのポイントとは
- KubeCon Europe 2024併催のCloud Native Wasm DayでOrangeが行ったセッションを紹介
- KubeCon North America:座談会で見えてきた退屈なKubernetesの次の世界