YouTubeはすでに、Vtoccと呼ばれる1つのVitessコンポーネントを使用して、8億人のすべての月額ユーザーにビデオを配信しています。 YouTubeの技術者Mike Solomonと一緒にVitessについて議論したSugu Sougoumarane氏は、Vtoccは "非常に安定しており、プロダクション環境で使用するのに必要なすべてのツールを備えています"
VitessがGoに書かれていることは、この比較的新しいプログラミング言語が大規模な生産環境で使用される可能性があるというアイデアを検証するのに役立つかもしれません。 Googleは3月にGoのバージョン1を発表しました。
YouTubeは毎月40億時間以上の動画を配信しています。毎分約72時間分の動画がサービスにアップロードされます。 YouTubeはすべての動画をファイルシステムに直接保存しますが、MySQLはユーザーの好み、広告情報、国のカスタマイズ、その他の必要な情報など、各動画を配信するために必要なすべてのメタデータを保存します。このサービスを最初に開発したエンジニアの一人であるソロモン氏は、それには癖がありますが、それらの癖はよく知られており、かなり簡単に緩和することができます。しかし、MySQLにはスケーリングに問題があります。少なくとも、YouTubeのようなサービスに対応するためには少なくともスケーリングが必要です。
"MySQLの主な問題は、[使用法]の特定のポイントに達すると、ハードウェアの管理とインスタンスの数を増やすことができます」とソロモン氏は述べています。 "チャンクを自動化したいので、複雑でエラーが発生する可能性のあるすべてのアクションを実行し、それを修復したい"
MySQLは、大規模なデプロイメントで使用するとあまり効率的ではありません。通常、MySQLへの各接続にはサーバー上に独自のスレッドが必要です。しかし、このアプローチはYouTubeの事業規模では実現可能ではありません。ソロモン氏は、「何万人もの接続を実行することは実用的ではありません」と述べています。しかし、同社のエンジニアは、複雑なMySQLを変更するのは難しいと指摘しています。 -understandコードは、しばしば予期しない結果を招くことがあります。ソロモン氏によると、Vitessは、MySQLと連携して追加の管理機能を提供するために作成されたものだからだ」とソロモン氏は話す。「これは簡単なことではない。たとえば、Vtoccコンポーネントは、入力される何千ものSQLクエリをより少数のバッチに統合し、MySQLがこれらの要求を満たすリソースを少なくできるようにします。 Vtoccはクエリを解析してより効率的に実行できるようにし、他の同一の要求を満たすために1つのクエリの結果を再利用することにより、重複するクエリによって引き起こされる作業を削減します。
Goを使用することにより、YouTube開発者は、 Sougoumarane氏はもっと伝統的な言葉を使っていると話しています。
Go codeはすぐにコンパイルされます。 Vitessの30,000行のコードは、約30秒でバイナリにコンパイルできます。豊富なライブラリのおかげで、多くのタスクであまりプログラミングする必要はありません。たとえばSougoumaraneは、CやC ++を使って数行で書くことができなかったログファイルを定期的にトリミングする105行のルーチンを書いた。
「それは表情豊かなGoだ」とSougoumaraneが言った。 「言語機能は十分に考察されており、伝統的な言語よりはるかにエレガントな方法で構成するのに役立ちます。 Sougoumarane氏はまた、マルチコアプロセッサでの使用に不可欠なGoの並行処理サポートを賞賛しました。 「スレッドを管理することについて心配する必要はありません。Goはあなたのためにそれらを管理します」と彼は言いました。言語にはまた、いくつかの欠点もある、Sougoumaraneは認めた。例えば、エラー処理が改善される可能性があります。ソリモン氏は、時間がたつにつれて、データベースレプリケーションや自動シャーディングなどの追加的な任務を遂行するため、管理者からの介入なしに複数のサーバーにまたがることができると述べている(933)。
IDG News Service
のエンタープライズソフトウェアと一般的な技術ニュースをカバーしています。 @Joab_JacksonでTwitterのJoabに従ってください。 Joabの電子メールアドレスは[email protected]です。