re:InventでGremlinのWorkshopに参加してみた #reinvent

2019.12.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

オペレーション部 江口です。

先週、re:Inventの際にChaosEngineeringのMeetupに参加した記事を上げました(リンク)。そのなかで、Game Day LoungeにてGremlinのGame Dayができるという情報を得たとお伝えしました。実際はGame DayというよりはWorkshop(提示された手順に従って一人で操作を進める形式)だったのですが、 行って受けてみたのでレポートしてみたいと思います。

概要

内容としては、擬似的に用意されたECサイトに対して、Gremlinによって障害を注入する、その結果から環境について考察する、といったものでした。Workshopで実際に参考にしたドキュメントをご参考までに紹介しておきます。

https://www.gremlin.com/community/tutorials/aws-reinvent-gameday-lounge/

実行環境についてはgithubで情報が公開されているため、自分たちで環境を構築してこのWorkshopを行うことも可能です。ただし、実施には、Gremlin Proのライセンス、もしくはトライアルライセンスが必要ですのでご注意ください。当日は、Game Day Loungeに行って登録をすると、AWS模擬環境とGremlin Proのトライアルライセンスが配布される形でした。

構成

擬似環境は、下記のようにマイクロサービスで構成されたECサイト(靴下のお店)でした。各コンポーネントはKubernetes上で動作しています。

事前準備

事前準備として、攻撃対象とする各コンポーネントをGremlinに登録する、という手順が必要でした。具体的には、擬似環境内の管理用サーバで予め用意されたマニフェストファイルgremlin/daemonset.yamlを編集し、Gremlinで生成されたチームID、シークレットキーを登録。kubectl apply -f gremlin/daemonset.yamlでマニフェストを適用する、といった流れです。

シナリオ

攻撃(擬似障害)で確かめるシナリオは次の3つが用意されていました。

1. CPU負荷をかける

ホストに対してCPU負荷を掛ける。負荷が高くなった場合にオートスケールするかを確認

2. ネットワークに遅延を発生

ネットワークで遅延を擬似的に発生させる。その状態で、ECサイトで注文した際の処理(各ノードを流れる)が正しく行われるかを確認

3. コンテナのダウン

特定のコンテナを停止する。新しいコンテナが自動的に起動してサービスが継続するかを確認

感想

各シナリオの実行結果はさまざまで、想定したような動きをしてくれるシナリオもあればそうでないものもありました。「こういう障害があればこうなるはず」という仮説を、実際に確かめることができる点が良いですね。特にネットワークの遅延などは簡単にはシミュレーションしにくい点ですので、そうしたテストも行えるのは嬉しいところです。

Gremlin Proを実際に使ってみた感想ですが、攻撃については簡単でわかりやすいなと思いました。具体的には定義したシナリオを選択、ターゲットやパラメータ(例えば攻撃を何秒継続させるかなど)を指定するわけですが、特にこの辺りは迷いませんでした。

また、対象となるホストにタグ付けを行い、タグによってフィルタしてターゲットを選択できるのですが、これによって特定リージョンのホストを選ぶ、といったことができます。ということはリージョン障害などのシミュレーションができるわけで、これは非常に便利な印象です。自社でGameDayを行いたい場合に、柔軟にシナリオを作成することができると思います。

私の所属するオペレーション部では我々の提供するサービスの障害に備えたGame Dayを行いたいという話が上がっており、その上で非常に参考になるWorkshopでした。

以上、re:Inventで参加したGremlinのWorkshopのレポートでした!