BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Expediaにおけるサイトのレジリエンス向上への取り組みとカオステストの導入 - QCon SFでの講演より

Expediaにおけるサイトのレジリエンス向上への取り組みとカオステストの導入 - QCon SFでの講演より

原文(投稿日:2017/11/19)へのリンク

QCon SFにおいて、Sahar Samiei、Willie Wheeler両氏が“Expedia's Journey Toward Site Resiliency”と題したプレゼンテーションを行い、Expediaでのレジリエンステストに関するプラクティスのコミュニティ構築について論じた。結果は概ね望ましいものだった – 運用システムでは5月15日以降、NetflixのChaos Monkeyが毎日実行されるようになり、4つのTier 1サービスパイプラインにレジリエンステストが追加された。また、レジリエントなサービスを開発することの価値に関する組織の意識にも向上が見られた。

ExpediaのシニアプロダクトマネージャであるSamiei氏の講演は、Expediaが2016年に87.7億ドルの収益を上げた、11番目に大きなインターネット企業であることの紹介から始まった。計画外のサイト停止による損失を“大雑把に計算した”結果によると、稼働時間99.9%(潜在的損失は8,770万ドル)からサイト可用性99.9%(同877万ドル)に移行できれば、およそ8,000万ドルの収益の違いが生じる。

[Expediaサイトの]稼働を維持すれば、年間数千万ドルの収益を守ることができるのです。

Expediaには“テストと学習”の文化があり、プロダクトや機能の定常的な繰り返しが同社のイノベーションである。レジリエンスは必ずしも一級市民として扱われてはいない – 優先順位上の競合が多過ぎる、レジリエンスに対して大きな誤解がある、チームの自律性が学習とツーリングの効果的な普及を困難にしている、といった点が問題となっている。

これらの問題に対処するため、同社のアプリケーションエンジニアであるWheeler氏は、Expedia社内に共有学習空間を作ることによってレジリエンスに関する情報共有を促進し、“レジリエンスチャンピオン”を生み出すに至った経緯について説明した。改善を追跡可能にする上で基盤となるレジリエンスデータの収集と公開には、非常に多くの努力が払われている。

Expediaのような巨大組織では、多数のツールやプラットフォームが使用されており、採用を進める上で問題となる可能性がある。Wheeler氏は、中核となる原則に集中することが個々のツールよりも重要である点を論じた上で、自身のチームが定義した“レジリエンスエンジニアリング・ライフサイクル”を公開した。

  1. レジリエンス向上の恩恵を受けるサービスの優先順位設定
  2. 脆弱性の調査
  3. レジリエンスパターンの適用
  4. テスト環境でのレジリエンス試験の実施
  5. 運用環境でのレジリエンス試験の実施(以降では“カオステスト”と呼ぶ)

ExpediaのサービスはTier 1(必須)、Tier 2(重要)、Tier 3(あれば便利)に分類されている。インシデント数や現在の可用性といったサービスのレジリエンスに関する情報の共有と公開には、スコアカードとレポートを使用する。このような階層型のサービス分類とスコアカード情報の組み合わせによって、投資収益率を最大化するためのレジリエンステストの優先順位設定が可能になった。

Resilience testing in dev, test and production

脆弱性の調査はインタラクティブなテストによって – Gremlinカオステストツールセットを使用するなどの方法で – 実施された。サービスのレジリエンスの定義には成熟度モデルを採用した – インスタンス損失への耐性、依存関係損失への耐性、AZ損失への耐性、リージョン損失への耐性、等々。脆弱性が特定され、理解されると、対処のために一連のレジリエンスパターンが適用された。

  • 自動スケーリング
  • レート制限
  • サーキットブレーカ – NetflixのHystrixによるサービス保護など
  • バルクヘッド(隔壁席) – Michael Nygard氏の著書“Release It!”で有名
  • マルチジオグラフィック・デプロイメント – マルチゾーン、マルチリージョンなど
  • データベースフェイルオーバ

レジリエンスの試験は、継続的デリバリパイプラインに追加してテストを使って行われた。運用環境での試験には、NetflixのSimian ArmyChaos Monkeyを使用した。Expediaの中核的な価値観である自主性と、改善を目的としたい(つまり、何かを壊すことは避けたい)レジリエンスチームの希望のため、各サービスの管理者がレジリエンステストのホワイトリストに“オプトイン”する方式とした。それぞれのサービスがコアとなるヘルスチェックとメトリクスを公開し、それらを攻撃前、攻撃中、攻撃後に検査した。

Anatomy of a resilience test

レジリエンステストの結果は概ね良好だった – Chaos Monkeyは5月15日以降、運用環境で毎日実行されている。4つのティア1サービスパイプラインにレジリエンステストが追加された。組織としての意識が向上した。レジリエンスの実践コミュニティが65名を越えるアクティブメンバによって確立した。課題に関しては、開発チームによる関与の確立は、チームの能力的な制限によってかなり難しくなっている。また、Expediaのサービスを改善しようという動きは、依然としてレジリエンス改善のニーズよりも大きなものになっている。

2018年、Experidaのレジリエンスエンジニアリングはオートメーション、具体的にはサービスメッシュ/プロキシベースのテスト可能性(LinkerdあるいはEnvoyを使用)、サービスディスカバリ経由のテスト、観察可能性の向上に重点を置くことを論じて、Samiei、Wheeler両氏は自身の講演を終えた。最大の目標は、自動化によるレジリエンスエンジニアリングのコスト削減だ。

Sahar Samiei氏とWillie Wheeler氏の講演“Expedia's Journey Toward Site Resiliency”のスライド資料(PPTX、25MB)は、QCon SFのWebサイトにある。この講演を含むQCon SFの講演のビデオは、今後数ヶ月間にわたってInfoQで公開される予定だ。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT