Vimeo、完全にレスポンシブな動画プラットフォームを Google Cloud 上に構築
Google Cloud Japan Team
※この投稿は米国時間 2022 年 2 月 16 日に、Google Cloud blog に投稿されたものの抄訳です。
編集者注: 動画プラットフォームの Vimeo は、Google Cloud のマネージド データベース サービスを利用して、毎日世界中からの何十億回もの視聴に対応しています。このブログ投稿では、Vimeo がすべてのコンテンツで一貫したユーザー エクスペリエンスを提供している方法をご紹介します。
Vimeo は世界をリードする動画ソフトウェア ソリューションで、毎日数十万件の新規アップロードと数十億回の視聴を行える環境を提供しています。当社の規模では、プラットフォームでホスト、共有、視聴されているすべての動画でシームレスなユーザー エクスペリエンスを維持することが最も重要です。Google Cloud のマネージド データベース サービスを利用することで、ユーザーや視聴者がどこにいても、信頼性の高い、一貫したユーザー エクスペリエンスを提供できています。
データセンターを拡大し、さらなるスケールを実現
当社が最初に Google Cloud を利用したのは、Google Compute Engine(GCE)とGoogle Cloud Storage(GCS)の優れた性能を使って、動画の再生とアップロード用の非常に高品質な環境を設計したときです。当初は、クラウドベースでコンテンツのパッケージングと配信を行うだけでしたが、アプリケーションの大部分はオンプレミスの MySQL データベースで稼働していました。GCE と GCS への初期投資による成果が見られたことから、Google Cloud に完全に移行することを決めました。
まず、オンプレミス デプロイメントから GCE にワークロードをリフト&シフトすることから始めました。しかしすぐに、より高い可用性と応答性によって優れたユーザー エクスペリエンスを実現するために、アプリケーションを再設計する必要があることに気づきました。そこで、分散 SQL データベース管理およびストレージ サービスである Cloud Spanner を使用することにしました。Spanner はリレーショナル セマンティクス データベースのすべての利点を備えていて、グローバルなスケールが可能なため、簡単にノードを追加できます。
現在では、99.999% の稼働時間を誇るマルチリージョンのインスタンスがあるので、動画ワークロードを確実に処理できています。約 16 の Spanner ノードを使用して、約 508 億の行と約 4.5 テラバイトのストレージおよびディスク容量をカバーしています。また、動画ライブラリがリリースされたことにより、コンテンツの処理方法を根本的に変えるために必要なスケールを手に入れました。
移行時のタイムマシンとして Spanner を使用
最初の移行では、できるだけエラーやバグのない、正確なデータ転送を実現したいと考えました。MySQL テーブルから Spanner にデータを移動する際、スポット分析を行って潜在的な問題をチェックしました。Spanner によって、一致しなかったデータをワンクリックで元に戻したり、古いタイムスタンプや過去のユーザーをチェックしたりできました。ポイントインタイム リカバリ機能によって、まるでタイムマシンのような使い方が可能でした。
いつでも、どんな動画でも配信
当社はロングテールのコンテンツを扱っており、動画の人気度によって、保存する方法を変えています。特に人気のあるコンテンツはキャッシュしてすぐにアクセスできるようにし、Cloud Spanner を使用して複数のリージョンで高可用性を確保しています。一方、Cloud Spanner と同じような保証やパフォーマンスを必要としない、アプリケーションの他のコンポーネントをサポートする低容量のサテライト サービスには Cloud SQL を使用しています。
何百万人ものユーザーが動画をアップロードし続けているため、Spanner は動画のメタデータのインデックス作成およびカタログ作成サービスとしての役割も担っています。これにより、特定の動画を再生する必要があるときは、膨大なコンテンツの中からすばやく簡単にその動画を見つけることができます。ユーザーがシームレスに動画を再生できるよう、可用性と信頼性に優れたデータベースであることが非常に重要です。
Vimeo について詳しくは、当社のサイトをご覧ください。
詳しくは、Cloud Spanner の活用事例をご覧ください。
- Vimeo エンジニアリング担当シニア ディレクター Sergio Salvatore 氏