1738995927
2025-02-08 05:19:00
Canva Engineeringチームは最近公開しました 死後 彼らが昨年11月に経験した停止について、APIゲートウェイの障害と事件中に学んだ教訓を詳述しました。 ブレンダン・ハンフリーズ、CanvaのCTOは、次のように認めています。
2024年11月12日、CanvaはCanva.comの可用性に影響を与える重大な停止を経験しました。 UTCの午前9時8分から午前10時頃まで、Canva.comは利用できませんでした。これは、CANVAのエディターのソフトウェア展開、ロックの問題、CDNプロバイダーであるCloudFlareのネットワークの問題など、複数の要因によりAPIゲートウェイクラスターが失敗したことによって引き起こされました。
Canvaの編集者は単一ページのアプリケーションであり、毎日複数回展開され、クライアントデバイスは階層型キャッシングシステムを使用してCloudFlareを介して新しい資産を取得します。ただし、CDNプロバイダー内のルーティングの問題により、2つの地域間のトラフィックが破壊されました。その結果、CDNで資産が利用可能になったとき、すべてのクライアントが同時にそれらをダウンロードし始めました。これにより、270000を超える保留中のリクエストが同時に完了したため、急増しました。ハンフリーズは説明します:
通常、エラーが増加すると、カナリアシステムが展開を中止します。ただし、この場合、リクエストが完了しなかったため、エラーは記録されませんでした。その結果、JavaScriptファイルに対する270,000を超えるユーザー要求が同じキャッシュストリームで待機しました。
ロリン・ホックシュタイン、Airbnbのスタッフソフトウェアエンジニアであり、Surfing Complenity Blogの著者は、停止を 飽和と回復力の物語。高い石のハイライト:
突然、新しいオブジェクトパネルはすべての待機装置に同時にロードされ、APIゲートウェイに1秒あたり150万件以上の要求が発生し、通常のピーク負荷の約3倍のサージが発生しました。この圧倒的な波により、ロードバランサーは「オーバーロードバランサー」に変換され、健康なノードを不健康なノードに変えました。 Hochsteinは付け加えます:
これは、ポジティブなフィードバックループの典型的な例です。タスクが大きいほど不健康になり、健康的なノードが受けたトラフィックが増えるほど、それらのタスクも不健康になります。
自動焦点がペースを維持できなかったため、APIゲートウェイタスクはメモリの疲労のために失敗し始め、最終的には完全な崩壊につながりました。この問題に対処するために、Canvaのチームは容量を手動で増やすことを試み、同時にノードの負荷を減らし、さまざまな結果を達成しました。 CDN層でトラフィックが完全にブロックされた場合、状況は最終的に軽減されました。ハンフリーズの詳細:
午前9時29分にUTCで、CDNのすべてのトラフィックをブロックするために、一時的なCloudFlareファイアウォールルールを追加しました。これにより、APIゲートウェイに到達するトラフィックが妨げられ、着信リクエストに圧倒されることなく新しいタスクが起動することができました。後にCanva.comをステータスページにリダイレクトして、ユーザーに事件が発生していることを明確にしました。
Canvaエンジニアは徐々にトラフィックを増やし、約20分で完全に復元しました。人気 Hackernews 糸、 ジョン・ナグル コメント:
この問題は、電力会社が「ロードテイクアップ」と呼ぶものに似ています。停電後、電源がオンになったとき、スタートアップでより多くの電力を引き出す多くの負荷があります。 (…)電源グリッドを持ち上げることは、一度にすべてではなく、セクションによって行われます。
すべての機能要件が最初に満たされ、自動化されたシステムが問題を悪化させましたが、Hochsteinは次のように強調しています。
システムの動作を適応させ、それを健康な状態に戻すために機能する方法を変えることは、インシデントレスポンダー次第でした。 (…)これは回復力の典型的な例であり、システムの動作を再構成するように行動し、元々処理するように設計されていなかった状態に入ったときです。
ハンフリーズ 結論 LinkedInです:
完全な写真は、クラウドフレア(…)の非常に有能で有益なパートナーと連携して、失われたパケット、キャッシュダイナミクス、トラフィックスパイク、スレッド競合、タスクヘッドルームを含むリベットのある物語と連携するのに時間がかかりました。
将来の同様のインシデントの可能性を最小限に抑えるために、チームは、トラフィックブロッキングと回復のためのRunbook、およびAPI Gatewayの回復力の向上など、インシデント対応プロセスの改善に焦点を当てました。
#ロック飽和CDNネットワークの問題がキャンバを倒した方法