## Memo
## Abstract
最近のアプリケーションは、様々な機能をクラウドサービスに依存する、クラウドベースのプログラミングモデルに移行しつつある。このような「クラウドネイティブ」の実践は、アプリケーションのデプロイを大幅に簡素化し、クラウドの利点(可用性など)を実現する。その一方で、不透明なクラウドや予測可能性の低いインターネット接続の故障モデルに対処するための信頼性という新たな課題も生じている。
本稿では、このような信頼性の課題について議論する。我々は、クラウドバックアップされたアプリケーションを一般的な過渡故障に対して脆弱にするバグの分類法を開発した。RESTコールの相互作用の一時的なエラーの(誤った)処理が、アプリケーションの正しさに悪影響を及ぼす可能性があることを示す。
クラウドバックアップされたアプリケーションの基本SDKユーティリティとして、Rainmakerという「プッシュボタン式」信頼性テストツールを構築することで、この課題に対処する第一歩を踏み出します。Rainmakerは、クラウドベースの故障モデルの下で、開発者が新しいポリシー、オラクル、テストケースを書くことなく、無数のエラーを予測することを支援します。Rainmakerは既存のテストスイートと直接連携し、既存のテスト環境にプラグアンドプレイで対応します。Rainmakerはアプリケーションとクラウドサービス間の相互作用に故障を注入します。これはRESTレイヤーで行われるため、テスト対象のアプリケーションからは透過的です。さらに重要なのは、分類された様々なバグパターンをカバーする自動故障注入ポリシーと、既存の社内ソフトウェアテストを受け入れる自動オラクルがエンコードされていることです。現在までに、Rainmakerは人気のある11のクラウドバックアップされたアプリケーションで73のバグ(55が確認され、51が修正された)を検出している。