昨日、米国東部夏時間の午前 4 時から 6 時 30 分の間に、Evernote に障害が発生いたしました。同午前 9 時 30 分までには、すべてのログインユーザーが通常通りアプリを使用できる状態へと復旧いたしました。その際、悪意ある行為を防止するため、一時的に 1 つのアカウントからのログイン試行回数を制限させていただきました。10 月 5 日米国東部夏時間の午前11時30分、ログイン試行回数の制限を解除いたしました。
この対応の結果、一部のお客様に「Evernote へログインできない」「同期ができない」「全体的な反応が遅い」「操作が重い」という問題が発生しました。
障害の原因
重要かつ複雑な移行作業
今回の障害は、ログイン、新規登録、ユーザープロファイルに関する情報を管理する大規模なデータベースを、Evernote のレガシーのバックエンド インフラストラクチャであるモノリスから移行した際に発生しました。
ここ数ヶ月の間、バックエンド インフラストラクチャの数多くの要素を、よりモダンで信頼性の高いシステムへと移行してきました。そして 10 月 4 日、最後のモノリスデータの移行が完了しました。これにより、システム全体を新しいインフラストラクチャへ移行し、Evernote のバックエンド基盤をより健全な状態にする準備が整いました。
モノリスから脱却し、より分散化されたインフラストラクチャを採用することは、Evernote チームにとって長年の目標でした。そして数ヶ月前、私たちはこの非常に大がかりな作業に踏み切ったのです。
長期的な未来を見据えた Evernote の基盤強化でお伝えしたとおり、モノリスは Java EE の古いアプリケーションで、バックエンドで Evernote の複数のエンティティのストレージと同期を担っていました。非常に動作が重く、管理が難しく、長年にわたる技術的負債も積もり積もっていました。
今回の最後の移行は、モノリスにおいて最大かつ技術的に最困難なものであり、同時に最も重要なもののひとつでもありました。この移行を経て、私たちはやっと、迅速で効果的な改善を行うための土台を整えることができたのです。
障害の詳細
サービスの中断を最小限に抑えるため、当初、米国東部夏時間の10 月 4 日午前 3 時 30 分にデータベースを移行する予定でした。しかし、移行を終えてクライアントを再接続したところ、モノリスは通常よりも多い数のインバウンドリクエストを処理し切れませんでした。そのため、残念ながらシステム全体を再起動し、徐々にトラフィックを再流入させる決断をせざる得ませんでした。
以下、当日の時系列です(時刻はすべて米国東部夏時間)。
10 月 4 日
午前 3 時 30 分
- チームが計画された移行を開始
午前 4 時 00 分
- 移行が完了。クライアントの再接続時、サーバーに多数のインバウンドリクエストが流入
- モノリスは高い負荷に対処できず
- チームは即座に対応し、クライアントからのリクエストを一時的にブロックするとともに、サーバーを再起動する決断を下す
- この間、お客様には以下の問題が発生:
- アプリの反応・操作が重い
- ノートが同期できない(同期ステータスが無効であるか、同期が一時的に中断されているというエラーメッセージ)
- ログインしていなかった場合は、Evernote にログインできない(リクエストが多すぎる旨の 429 エラー、または Evernote が一時的に利用できないというエラーメッセージ)
午前 6 時 30 分
- サーバーが回復し、チームはクライアントの接続を許可、その際ノートの保存に関する機能を優先
- この時点で、一部のお客様においては、Evernote の機能が正常に復旧
- その後 3 時間にわたり、Evernote の主要機能の大部分が復旧するまで、段階的にトラフィックを増やす対応を継続
午前 9 時 30 分
- すべてのログインユーザにおいてアプリが正常に復旧
- 引き続きシステムを保護するため、一時的に 1 つのアカウントからのログイン試行回数を制限
- この対応は、悪意ある行為者がシステムを攻撃し、安定性やお客様のデータのセキュリティを損なう危険性を排除するために実施
- ただ、この回数制限は悪意のある行為者にも正当なお客様にも同様に適用されるため、一部のお客様は Evernote にログインできず
10 月 5 日
午前 11 時 30 分
- 悪意ある行為者のみを対象とした回数制限を導入し、お客様に対する回数制限は通常の回数へ戻す
- 障害発生前と比較して、Evernote のパフォーマンスに向上が見られる
- データベース移行前に比べ、全体的なレイテンシ(遅延)が低下
- RTE ではデータベース移行前よりもエラー率が低下
現時点で障害は完全に復旧し、移行も完了 — もしまだログインや同期ができないお客様がいらっしゃいましたら、お手数ですがサポートチームまでお知らせください。直接サポートさせていただきます。
今後のプロセス
今回の障害に関し、私たちは障害が発生した原因を根本まで遡って精査し、そこから学んだことを今後の改善に生かしてまいります。今回の障害から学ぶべき点は技術的な側面にとどまらず、お客様へのコミュニケーションについても改善してまいります。私たちは、皆様へのお知らせにおいて、もっと迅速かつ明快であるべきでした。
今後、このような自体が発生した場合は、status.evernote.comを即座に更新し、皆様に状況をお伝えしてまいります。今回ステータスを更新したのは、障害が発生の 1 時間後となる午前 10 時 30 分でした。ウェブサイトに最新情報がなかったことで、多くのお客様に混乱を招き、お問い合わせいただきましたこと、深くお詫び申し上げます。
障害発生は誰にとっても喜ばしいことではありません。今回の障害は、Evernote の未来にとってエキサイティングな移行に伴う不運な出来事でした。次回は障害なしに、明るいアップデートを皆様にお知らせできればと思います。この度は誠に申し訳ございませんでした。
- フェデリコ