お知らせ
標題の通り機能がご利用できない期間がございました。ご利用のお客様にはご迷惑をおかけし誠に申し訳ございませんでした。お詫び申し上げます。本お知らせにて事象、原因、再発防止策についてご説明します。
事象
Cloud Recording機能を新規に利用するためのacquire、startが失敗する。Status Codeは502である。
期間
- 2024年5月19日 15:20 JST – 16:57 JST (1時間37分)
発生条件
- Cloud Recording Serviceの新規利用に伴うREST API呼び出し
- 日本を含むAPAC地域
※ すでに予約して動作中のCloud Recording機能は本事象の影響を受けない。
直接的な原因
Cloud Recording Serviceバックエンドシステムのリソース枯渇
根本的な原因
Cloud Recording Serviceのスケーラビリティ設計の考慮漏れ
解説
Cloud Recording ServiceはAgora社が提供する録画機能で内部のバックエンドの構造的には
- Gateway (GW): Cloud Recording REST APIの受け口機能、Worker Managerへの要求のディスパッチを行う
- Worker Manager: Cloud Recording Serviceを利用する作業員(Worker)を束ねる
- Worker: Cloud Recording Serviceを利用して録画の仕事を行う
の3要素で構成されておりREST APIによる要求に応えるためのWorkerのリソースマネジメントの責任は Worker Managerにあります。
5/19にある特定の一お客様がCloud Recording REST APIの特殊な利用法によってWorkerを保護する指示を出しWorkerが自分の仕事を終えても再利用可能な状態に遷移せずリソースとして使用中のままになっておりました。
そのため、時間の経過にともない有限のバックエンドシステムのリソースが枯渇し新規のWorkerを作り出すことが出来ずGWは新規の録画利用の要求を棄却(502 status code で応答)していた、というのが該当時間帯に起きていたことでございました。
緊急措置として最初にとったバックエンドシステムのリソースの増強速度よりもWorkerの保護によるリソースの消費速度が大きく解消に寄与しませんでした。その後に判明した原因に基づきそのお客様にその特殊な利用法によるCloud Recording利用を停止してもらいAgora社のキャパシティー設計で完全にコントロールできる状況に戻し緊急措置を完了しました。
なお、この特殊な利用法は日本のお客様の利用されていないCloud Recording機能に特化したもので日本のお客様で同様シナリオでWorkerを保護する状況は起きないことを補足致します。
根本的な原因は、そのCloud Recording機能がWorkerを保護する場合もあるということを十分考慮できておらずその結果Cloud Recordingのその他の機能の動作にまで波及してしまったというスケーラビリティ設計の考慮漏れにあるとAgora社は考えております。
再発防止策
Agora社から報告のありました再発防止策は以下の通りです。
- 【完了】緊急措置の実施による復旧
- 【対策中】QA行程におけるWorker保護に関わるテストケースの強化
- 【完了】システム監視機能の強化(Worker数とキャパシティーの関係性に注目した)
- 【対策中】Workerの保護のメカニズムを考慮したリソースマネジメント機能の改善
Workerの保護という観点が十分にスケーラビリティ設計に考慮されていなかったために生じたバックエンドシステムのリソース枯渇でしたが、上記の4番目の改善により機能間でこうしたリソースの取り合いが生ずることなくリソースマネジメントが出来るようになり、また3番目の改善によりキャパシティー増加の早期プランニングもできると考え再発防止に有効に働くものと考えております。
さいごに
ご利用のお客様にはご迷惑をおかけし誠に申し訳ございませんでした。改めてここにお詫び申し上げます。
Cloud Recording機能の可用性向上のために継続して改善して参りますので何卒よろしくお願い申し上げます。
変更履歴
日付 | 内容 |
2024/5/19 | 初版作成 |
2024/6/4 | Agora社Incident Reportの内容をもとに最新化 |