※2016年9月1日16時に一部内容を修正しました。
平素は、rakumo をご利用いただき、誠にありがとうございます。
rakumo サポート担当でございます。
この度は障害の発生によって、rakumo カレンダーを一時的にご利用できない状態となり、ご利用のお客様には多大なご迷惑をおかけいたしまして誠に申し訳ございませんでした。
謹んでお詫びを申し上げます。
障害に関しては、rakumo カレンダーで利用する Google Calendar API のアクセス超過が原因でございましたが、当日 8月29日 に復旧をいたしましたので、現在は正常にご利用できます。
今回の障害の詳細と再発防止に関しまして、次の通りご報告を申し上げます。遅くなりまして申し訳ございません。
弊社としましては、今後同じ事態が起こらぬよう対策を講じてまいりますので、今後とも変わらぬご愛顧を賜りますようお願い申し上げます。
障害の詳細
● 発生の時間帯
2016年 8月29日 14時20分頃から、同日16時20分頃まで
※日本時間
● 対象サービス
rakumo カレンダー
● 事象
rakumo カレンダーから Google カレンダーの予定を一切読み込めない状況となり、「アクセスできないカレンダーです」という文言が表示され、予定を確認できない状況となりました。
● 原因
発生の時間帯において 、rakumo カレンダーが利用する Google Calendar API のリクエストの制限数(500万リクエスト/日)を超えたことによって、rakumo カレンダーと Google カレンダーの 連携処理が全て停止したことが原因です。
rakumo カレンダーでは、予定の閲覧や編集をするために、Google カレンダーのアクセス権限情報(ACL)の同期を処理しています。Google Calendar API によって、定期的または特定のユーザーアクションに連動してバックグラウンドで同期の処理がされます。
8月27日から8月29日まで、カレンダーが無効なユーザーの ACL をこの API がリクエストした時、HTTP 503 エラーが返されるようになりました。通常の場合、上記リクエスト時には HTTP 404 のようなクライアントエラーが返され、同期の処理は直ちに中断されます。しかし、今回 HTTP 503 という一時的なエラーステータスが返されたことによって、一時的な負荷や障害として API は自動リトライの処理をしました。通常では HTTP503エラーの返却時においても、リトライに寄って成功する例も多くあります。しかしながら、このエラー状態が長時間続き、繰り返し大量にリトライ処理がされたことによって、通常よりも著しく多い API アクセスがされる状況となりました。この結果として、rakumo カレンダーに割り当てられた Google Calendar API の一日当たりの利用制限数 (500万リクエスト/日) を超過したため、rakumo カレンダーとGoogle カレンダーの 連携処理が全て停止する事態となった次第でございます。
● 復旧
8月29日16時頃、Google Calendar API の一日当たりの利用制限数をリセットして、本 API を再び利用できる状態といたしました。
修正: 8月29日16時頃、Google Calendar API の一日の利用数がリセットされて、本 API を再び利用できる状態となりました。
再発防止の対策
本日8月31日までに次の 4 つの対策を実施しております。ただし、状況を注視し、対策に関する調整を継続して実施いたします。
■ 8月29日21時頃
[1]Google Calendar API の一日当たりの利用制限数 (500万リクエスト/日) を超過したとき、API のエラーに対するリトライの回数を制限
修正:[1]Google Calendar API の一日当たりの利用制限数 (500万リクエスト/日) を超過しないために、API のエラーに対するリトライの回数を制限
[2]カレンダーが無効なユーザーの自動同期の処理をしないために、プログラムを調整
[3] リクエスト数を抑制するために、rakumo カレンダーの「非表示」ユーザーの ACLを自動同期の対象から除外
■ 8月30日 14時頃
[4] リクエスト数およびエラー数の監視強化
9月以降の今後の予定
[5] Googleへの負荷を軽減するために、バックグラウンドでのリクエストレートを調整
加えて、以下を中・長期的な対策として検討しています。
・Google Calendar API へのリクエスト数を減らすための中規模から大規模な調整
・Google Calendar API の一日当たりの利用制限数の増加を、Googleに申請
・緊急時の予備 Quota を実施 (異なるクライアントを使った接続→OAuth2 の同意画面を表示)
本件につきまして、ご不明な点がありましたら、お問い合わせフォームよりお知らせくださいませ。
最後になりますが、お客様には大変なご迷惑とご不便をおかけしましたことを深くお詫び申し上げます。
今後とも rakumo を何卒よろしくお願い申し上げます。
2016年 8月31日
rakumo サポート担当