Sportifyクライアントはピーク時に最大秒間150万回のイベントを生成し、全ては彼らのEvent Delivery Systemにより取り扱われている。このシステムは遅延を予測可能にすることと、イベントを消失することがないように設計されており、Igor Maravic氏は最近のQCon Londonでの彼の発表において、このシステムの高レベルの概要と鍵となるオペレーション上の側面について説明した。
250以上のイベント種別が異なるクライアントにより生成され、イベントのサイズは数バイトから数kBにばらついている。イベントのいくつかは厳格に消失してはならない要件を持っている。例えばロイヤリティ計算に用いているイベントがあり、システムを単純化するために個々の要件に関係なくイベントを100%配信するように設計されている。全てのイベントは毎時バケットに格納され、バケットは特定の日と時間の全てのイベントを含んでいる。各イベントは受信時刻が刻まれ、それにより正しいバケットに格納されることを保証している。
SportifyのソフトウェアエンジニアであるMaravic氏は、全てのイベントの配信を保証するだけでは十分でないことを強調した。設計要件が実際に満たされているかどうかを確認するための監視が必要不可欠なのである。彼らのEvent Delivery Systemは多くのマイクロサービスが協調する複雑な分散システムである。どの部分に最適化が必要そうかを見たり、インシデントが発生したときに実際の問題を発見しやすくしたり、データ配信における問題を発見したりするために、各コンポーネントは監視されている。彼らは監視に関する3つの種別が存在するとしている。
- システムの一般的な稼働状態のためのシステム監視。CPU、メモリ使用量など。
- 時系列の状態を確認するためのデータ監視。これによりデータが遅延要件に対応して配信されていることを保証できる。
- イベント配信における完全性のためのデータ消失監視。このために彼らは全ての入力と全ての出力を監視するツールを構築し、データ消失や他の配信に関する問題を見つけられるようになっている。
Maravic氏は、システムが常時稼働しているのにも関わらず、オペレーションチームは存在しないと述べた。その替わりにサービスを構築する開発者がオペレーションの責任も持っており、彼はこれが良い開発者から偉大な開発者になることを後押ししている良い事例であると考えている。
Maravic氏は性能に関する数値を含めたアーキテクチャに関する更に詳細な情報についての一連のブログ記事も執筆した。
Rate this Article
- Editor Review
- Chief Editor Action