イベント配信はSpotifyにおける重要なコンポーネントである。配信されるイベントには、ユーザに関する情報やユーザの行動、同社の現在のビジネスを支える数百におよびシステムの運用ログが含まれている。現在のイベント配信システムはGoogle Cloudプラットフォーム上で運用されており、2019年第1四半期末には世界中でピーク時800万イベント/秒以上を処理している。システム全体では、1日あたり350TBのデータがフローした計算になる。クラウドでのイベント配信システム運用が2年半を経過したことから、Bartosz Janota、Robert Stephenson両氏は、同社のこの成果と、スタックをクラウド上に移行したことによって同社が達成したシステムの革新と単純化について論じたブログ記事を公開した。
2015年、Spotifyが自社のインフラストラクチャのGoogleプラットフォームへの移行を決定したとき、イベント配信システムを再設計してクラウドに適応させなければならないことは明白だった。チームが現在のクラウド上のパブリッシュ/サブスクライブベースのイベント配信システムを設計開発し、デプロイして、運用レベルへのスケールアップするまでには、およそ1年を要している。この移行を成功させるためにチームは、イベントのプロデュースおよびコンシューム用のインターフェースに旧システムとの互換性を維持することによって、両システムの並行稼働を可能にした。当初はステージ形式のロールアウトを予定していたが、最終的にはすべてのトラフィック用に新システムを1日でロールアウトし、正常に動作させることができた。以前のKafkaベースのシステムは、2017年2月に停止している。
これほどの大量のイベントを処理可能なシステムを構築するにあたって、Janota、Stephenson両氏は、いくつかの方針と戦略を立案し、必要と考える大きな決断を下した。大量のイベントがビジネスクリティカルなデータの妨げとなることを防止するため、エントリポイントにおいてイベントタイプによる分類を行い、イベントストリームを可能な限り早く分離できるようにした。イベントの各タイプには独自のPub-Subトピック、ETLプロセス(Extract/Transform/Load)、最終的なストレージのロケーションを設定することで、各タイプを別々にデリバリ可能とした。さらに、インシデント時には処理とリソースの優先順位付けを可能にして、最も重要なイベントタイプを最初に処理できるように配慮した。イベントタイプを分離することによって、遅延(lateness)よりも活性状態(liveness)を優先させることも可能になった。あるイベントタイプに問題が発生したり、あるいはブロックされた場合でも、他のイベントは分離されているのでコンシュームが可能である。
システムはおよそ15のマイクロサービスで構成され、2,500のVMにデプロイされている。これにより、それぞれのサービスが個別に動作し、必要ならばリプレースすることも可能になった。サービスの一部は自動スケール機能を備えているが、これらすべてのインスタンスにおける最大の課題は、状態が常に変化することだ。システム全体のデプロイには3時間を要している。これはつまり、システムは頻繁なイテレーションが可能なように設計されてはいるが、かなり長いイテレーションサイクルが必要であるということであり、システムの問題点のひとつとなっている。
システムはGDPR以前に設計されたため、規則施行時には準拠のために多くの時間を費やす必要があった。現在、個人データを扱うシステムを設計する場合には、GDPRは常に最大の関心事となっている。
この作業を通じてチームが学んだのは、データの増加はサービストラフィックよりも桁違いに早い、ということだ。アクティブなユーザの増加は、エンジニアとチームの拡大という形で組織の成長を生み出し、新たな機能の導入と運用を促進する。これがデータの増大を引き起こし、さらにはそこからより多くの洞察を得るために、データエンジニアやデータサイエンティストの増員の必要性を生み出す。洞察が増えることで機能はさらに増え、成長が続くのだ。
その他に採用した戦略としては、ビジネスのコアではない問題に対してマネージドサービスを使用すること、新たなアイデアを試す場合にはフェールファーストとより早い復帰の準備をすること、などがある。
このシリーズの次のブログ記事で、Janota、Stephenson両氏は、次世代のイベント配信の開発について説明する予定である。
2019年にヴィリニュスで開催されたBig Data Conferenceでのプレゼンテーションでは、Nelson Arapé氏が、Soptifyのイベント配信システムの進化とその過程で得た教訓について論じている。
また、QCon London 2017でIgor Maravic氏は、イベント配信システムの概要と運用面の重点について講演を行った。氏が2016年に公開した3部のブログ記事では、システムをクラウドに移行した状況について説明している。