618-Y の混沌とした実践への道を支援 | JD Cloud 技術チーム

1. 前に書く

1. カオスとは何ですか?

カオス エンジニアリングの概念は、2010 年に Netflix によって提案されました。システムに異常な状態を積極的に導入し、さまざまな圧力下でのシステムの動作に基づいて最適化戦略を決定することにより、システムの安定性を確保する新しい方法です。

カオス エンジニアリングは、複雑なシステムが本番環境での予期せぬイベントにどのように耐えられるかについての知識を構築することを目的として、分散システム上で実験を行う学問です。

2. なぜカオスが起こるのか?

カオスエンジニアリングは、欠陥、異常、または不確実な状態を意図的に導入することによって、現実世界の不完全な環境をシミュレートします。その中心となるアイデアは、障害や異常な状態を積極的に導入することでシステムの堅牢性を段階的に検証および改善し、それによって現実世界の複雑な環境に直面した際のシステムの安定性と信頼性を高めることです。その目的は、潜在的なシステムの弱点を特定し、アプリケーション システムの堅牢性と復元力を向上させ、システム障害の影響を軽減し、より良いユーザー エクスペリエンスを提供することです。

3. カオスの原理

カオス エンジニアリングは主に次の原則に従います。

1. 仮定主導: システムの動作とパフォーマンスに関する重要な仮定を明確にします。これらの仮定は、システム要件、設計上の決定、または動作環境などの側面に基づく場合があります。カオス エンジニアリングの実験は、これらの仮定を検証または反証することを目的とすべきです。
2. 実験: 欠陥のある、異常な、または不確実な状態を意図的に注入することにより、現実世界の不完全な環境をシミュレートします。安全な範囲内でシステムの応答をテストおよび観察するには、実験は制御可能で再現可能である必要があります。
3. 爆発半径の最小化: カオス実験を実施するときは、運用環境とユーザーへの悪影響を最小化することに注意を払う必要があります。実験の範囲と影響を合理的に制限し、適切なリスク管理アプローチで重要なビジネス機能を保護します。
4. 監視と測定: 実験中はシステムの警報機構が必要です。監視ツールとメトリクスを使用して実験データを収集し、システムの安定性と復元力を評価します。
5. 分析と学習: 実験結果を検討し、そこから教訓を引き出します。問題の根本原因を特定し、それに応じて改善計画と解決策を作成します。
6. 継続的改善: カオス エンジニアリングは継続的改善のプロセスです。継続的な実験、分析、修正を通じて、システムの回復力、安定性、回復可能性を向上させます。

2. Yの混沌とし​​た展開

過去 3 年間、JD Chaos Engineering は 3 つの防御線の 1 つとして、昇格前に非常に重要な役割を果たしてきました。また、Y のカオス プラクティスも、主にアプリケーション カバレッジとシーン カバレッジの 2 つの側面から継続的にアップグレードされてきました。 . 改善の方向性を明確に定め、グループカオス競技において次々と躍進と成果をあげています。



1. 探鉱段階(21年)

21 年の 618 に遡り、Y は主にパイロット プロジェクトの探索を目的としていました。カオス テスト アプリケーションの対象範囲は主に非レベル 0/1 アプリケーションに焦点を当てていました。訓練シナリオは主にネットワーク切断訓練などの単純なシナリオに焦点を当てていました。防御的な発射が開発されました。

2. 発展段階(22年)

Jingdong Chaos Engineering の 22 年間の反復アップグレードにより、ドリル シナリオとシステムの使いやすさが大幅に向上しました。Y 側は、基本的なリソースの障害から外部依存関係の障害、高度なシーンの追加に至るまで、カオス ドリル シナリオの包括的なカバーにも重点を置いています。システムの安定性を継続的に改善します。同時に、0/1レベルの基幹システムを段階的にカバーし、カオスドリル運用マニュアル、カオスドリル仕様書等を蓄積し、攻撃側としての実験と防御側としての研究開発を行い、そして責任分担が明確になります。

 
22,618 年、試験の学生はカオス訓練を実施し、訓練前、訓練中、訓練後に次の関連作業を実行しました。
1. 演習の目的を定義する: 演習の目的と期待される結果を定義します。これには、アプリケーション システムの健全性を向上させるために、実行するアプリケーション システムの範囲、実行シナリオ、アプリケーション システム監視の構成、障害シナリオの観察、問題処理メカニズムなどを決定することが含まれます。
2. 主要なコンポーネントとシナリオを特定する: システム内の主要なコンポーネントと依存関係を特定し、システムの安定性とパフォーマンスに影響を与える可能性のある一般的なシナリオを特定します。これらのシナリオには、ネットワーク障害、リソースの枯渇、高い同時実行性などが含まれる可能性があります。
3. 演習計画を作成する: 演習の時間、範囲、期間、参加者の役割と責任を含む詳細な実験計画を作成します。すべての参加者が実験計画と期待される結果を理解していることを確認してください。
4. 監視システムをセットアップする: 訓練の前に、台山市の MDC、UMP、ミドルウェア、その他の構成を確認して、アプリケーションの監視情報をさらに理解し、アプリケーションの監視情報に従って、システム障害をよりターゲットを絞ってシミュレートします。
5. 訓練シナリオの実行: ネットワーク障害、メモリ障害、CPU 障害、ミドルウェア障害などのシミュレーションなど、訓練計画に従ってカオス訓練を実行し、システムアラーム情報と研究開発の運用および保守の対応を観察し、主要な指標とイベントを記録します。 。
6. 結果のレビュー: 演習後、実験中に行われたデータと観察を収集して分析します。システムの安定性、回復可能性、異常な状態に対処する能力を評価します。既存の問題を特定し、体系的な改善計画を策定します。
7. 改善と最適化:訓練結果と分析に基づいて、改善計画を策定し、対応策を講じます。これには、バグの修正、システムの耐障害性の向上、リソース使用率の最適化などが含まれる場合があります。学んだ教訓は必ず文書化して、今後の訓練や作戦に活用できるようにしてください。
8. 定期的な訓練と継続的な改善: 正規化されたカオス訓練を通じて、システムの継続的な安定性と柔軟性を確保します。

3. 成長期(23歳)

22年間の実戦総括を経て、618Yは23年間でアプリケーションカバレッジの向上推進に注力し、最終的に小売TOP1の99.68%に到達した。実践戦略 グループの要件に従ってシステムが推奨する 9 つの主要シナリオの完了に優先順位を付け、同時にいくつかの特定のシナリオを的を絞った方法で選択し、システム監視を改善し、最終的にアプリケーションの健全性スコアをレベル 0/1 にします> 95点、ハイリスク項目はクリア。キャンペーン期間中に各システムの性能が基準に達し、無線事故が発生しました段階的な結果を達成するには、チームメンバーが各段階で次の原則を厳密に遵守し、各訓練を高い基準で扱うという事実が不可欠です。

1. 目標主導: それぞれの演習に明確な目標と期待される結果があることを確認して、その有効性と価値を評価できるようにします。
2. 漸進的な反復: 訓練シナリオの複雑さと課題を徐々に増やし、チームが変化に適応し、システムの堅牢性を徐々に向上できるようにします。
3. 継続的な学習: 演習の結果とフィードバックを定期的にレビューし、各実験ケース、問題、課題を記録し、学んだ教訓に従って分類および分析し、レビューの結果に基づいて調整と改善を行います。
4. 経験の継承: 要約された経験と教訓、および成功した実験事例に基づいて、ベスト プラクティス ガイドを策定します。これらには、チームがカオス訓練をより適切に実行できるようにするための訓練計画、シナリオ選択、実行計画、モニタリング、研究開発の問題処理メカニズムなどが含まれます。
5. チーム間のコラボレーション: カオスドリルは、開発、運用保守、テスト、その他のチームと緊密に連携し、カオスエンジニアリング構築チームと何度もコミュニケーションをとって、アプリケーションシステムの安定性と堅牢性を共同で促進します。

3. カオステストと従来のテストの違い

カオス エンジニアリングは、システムについて新しい洞察を得るのに役立つ実験手法です。これは、機能テストや統合テストなどの既知のプロパティをテストする既存の方法とは根本的に異なります。カオス エンジニアリングは、システムについてより多くの新しい認識を獲得できるように設計された実験手法であり、通常、複雑なシステムに対してより広い認識空間を開きます。

従来のテストは、特定の条件を与えることを目的としており、システムは特定のバイナリ結果を出力しますが、既知のシステム属性の可能な値をテストするだけです。

カオス エンジニアリングの考え方は、積極的に欠陥を見つけることであり、探索的です。ダウングレード計画は計画どおりに作成されていましたが、ノードがシャットダウンされたときに上流のサービス障害がトリガーされ、雪崩が発生しました。障害挿入や事前計画では検出できませんでした。

4番目、裏面に書きます

カオス エンジニアリングは、技術アーキテクチャの回復力を向上させるための複雑な技術的手段であり、初期段階で障害を摘み取ること、つまり混乱を引き起こす前に障害を特定することを目的としています。積極的に障害を作成することで、さまざまなストレス下でシステムの動作をテストし、障害の問題を特定して修正し、重大な結果を回避します。

新しいシステム機能の継続的な立ち上げや依存関係の変更などにより、システムに未知の障害が連続して発生する可能性があるため、カオスエンジニアリングの実践において最も重要なことは持続可能であることです。カオス実験の現場では、カオスエンジニアリングの価値が常に発揮されています。



著者: JD Retail 李金平馬春栄

出典: JD Cloud 開発者コミュニティ



MyBatis-Flex の MyBatis-Plus 盗用に関する明確化 Chrome の代替品であると主張する Arc ブラウザ 1.0 が正式にリリース OpenAI が Android バージョンを正式にリリース ChatGPT VS Code で名前の難読化圧縮が最適化され、組み込み JS が 20% 削減されました。 LK-99: 最初の室温常圧超伝導体? マスク氏は「ゼロ元で購入」し、@x Twitter アカウントを強奪したPython 運営委員会は PEP 703 提案を受け入れる予定で、 グローバル インタープリタ ロックをオプションにする . システムのオープンソースで無料のパケット キャプチャ ソフトウェアへのアクセス数Stack Overflow大幅に下落し、マスク氏はLLMに取って代わられたと述べた
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4090830/blog/10092147