はじめまして! BIGLOBE 基盤本部 クラウド技術部 2020年度新入社員の佐藤 竣介です。(今年で2年目です)
私は現在業務として、Amazon Web Services (AWS)の利活用を推進するために、社内でさまざまなAWS勉強会を開催しています。 知識が足りないことが多々あるので、先輩方に何度も質問しながら勉強会の運営をしています。
私が運営してきた勉強会の中で、特に好評だった障害対応訓練×エンジニア交流会について紹介します!
最近はクラウドの利活用を全社的に推進している弊社ですが、オンプレミスとクラウドでは考慮すべき点が異なるので、古い知識に引きずられて障害発生時の原因特定に時間がかかってしまう可能性があります。 またコロナ禍でリモートワークが増え、エンジニア間の交流が減少し、いざという時に相談すべき相手を把握しづらくなってきています。
そこで上記の課題を解決するために、AWSを使った障害対応訓練を実施したうえで、訓練での対応を題材にして参加者がディスカッションをするエンジニア交流会を開催することで、相互理解を深めました。
障害対応訓練 | |
---|---|
目的 | 障害対応の方法を学んでいただくこと(もし、今後同じような障害が発生しても対応できること) |
内容 | AWS上の本物っぽい障害に対し、ペアで障害復旧を目指す |
時間 | 1時間30分 |
実施方法 | 2人1組 |
参加者の技術レベル | 技術力問わず |
もちろん、コロナ禍なのでオンライン開催です!
環境の準備や資料作成、当日の司会を、当時新人だった私が担当させていただきました。その中で感じた、障害対応訓練×エンジニア交流会を行う4つのメリットについてご紹介します!
準備した環境
今回の訓練では、下記のような一般的なWebサービスの構成を準備しました。
EC2上にはWordPressをインストールし、ウェブブラウザーから見られるように設定した後、わざと障害を発生させ、見られない状況にしてあります。参加者のゴールは、障害対応を実施しWordPressの画面を見られるようにすることです。
過去の事例をもとに、今回は下記の障害を発生させました。
- EC2 t系インスタンスのCPUクレジット枯渇
- RDSのSecurity Groupの設定を全て削除
- RDSへのコネクション数増加による、コネクション溢れ
過去の障害事例とまったく同じ状況を再現することはとても難しいのですが、本物の障害のようだと感じられるように設定を工夫しました。
例えばRDSのコネクション溢れの原因はRDSへのコネクション増加としていますが、複数環境の全てのRDSに対してコネクションを増加させるのは大変です。 そこでコネクション数を増加させるのではなく、RDSの同時接続数の設定を1にして、すぐにコネクションあふれが発生するように工夫しています。
4つのメリット
私が実際に企画から運営まで担当した中で感じた4つのメリットについてご紹介します!
AWSなら簡単に準備できる
勉強会を実施する上で地味にとても大変なのが、参加人数分の環境を準備することです。
AWS CloudFormationとAWS Cloud9を使えばたちどころに環境を作成できるだけでなく、障害を発生させることまでできてしまいます。
なおCloudFormationには複数アカウントに環境を作成するStackSetsという機能がありますが、今回は環境作成後に障害を発生させる必要があったのでCloud9を使っています。
AWS CloudFormationで環境構築
CloudFormationはテンプレートファイルを事前に作成しておくことで、簡単に環境を構築できるサービスです。
テンプレートファイルの書き方は勉強する必要がありますが、一度書いておけば何度でも使いまわせるので後々大変楽になります。 CloudFormationはAWSマネジメントコンソール、もしくはCLIから起動します。
AWS Cloud9を使用し複数環境に障害を発生させる
参加者はペアになって障害対応に取り組みます。他のペアの環境に影響が及ばないようにするために、ペアにつき1つのAWSアカウントを準備し、環境を構築しました。
今回は環境構築後にあえて障害を発生させる必要があります。障害を発生させるために、外部からそれぞれの環境にログインすることもできますが、 参加人数が増えるほど、運営の手間が増えてしまいます…。
AWSアカウントに何度もログインし直すのは少し面倒ですよね。そこで、Cloud9を活用することにしました。
まず管理アカウントのIAM Userが複数のハンズオンアカウントにスイッチできるように設定します。その後Cloud9のプロファイルを設定し、他の環境にスイッチして作業できるようにします。
こうすることで、Cloud9から複数のAWSアカウントに対してCloudFormationや障害を発生させるためのCLIコマンドを実行できるようになります。
この設定をするとしないとでは作業効率が全然違いました。 少し面倒ですが、事前に設定しておくと便利です。
以上のようにAWSでは参加者用の環境の準備が簡単に行えます!
障害について理解している人が増える
弊社では障害の発生原因やその対処について積極的に共有しています。しかし、実際に自分が体験していないと、同じ障害が発生した際に自分がうまく対応できるか不安が残ってしまいます。
そこで、今回のような障害対応訓練を実施することで、障害を他人事ではなく自分事に昇華させ、障害について深く理解をしている人を増やすことがとても大切です。
実際に参加者から、障害事例について知っていたのに対応できなかった、という感想がありました。障害を自分で体験することはとても大切であると感じました。
横のつながりができる
コロナ禍になる前はオフラインで勉強会が盛んに開催されたり、全員が出社していたので、誰が何について詳しいかなんとなく把握できていたそうです。
いざというときに頼れる人を知っておくことがとても重要です。コロナ禍の影響によりリモートワークが増えている状況では、部署を超えた交流をあえて作っていく必要があります。
今回はペア作業で障害対応に取り組むだけでなく、訓練後にエンジニア交流会を開催し、誰がどのような対応をして、どのような知識を持っているかについて理解する場を設けました。
障害に限ったことではなく、日々の業務を行う中でも部署を超えたつながりがあることはとても大切だと感じました。
ゲーム感覚で楽しみながら安全に障害を体験できる
今回実施したのはあくまで障害対応 ”訓練” であり、間違った対応をしてしまったとしても事業に影響が出るわけではありません。 よって、自由にトライ&エラーができる環境の中で、障害について学ぶことができます。
復旧の重圧がなく実施できる障害対応は、いわば「謎解きゲーム」のようなものかなと思います。 過去にあった障害について、安全に楽しく障害の発生原因を突き止めながら、障害についての理解を深めることができます。
以上が障害対応訓練、エンジニア交流会を開催して私が感じたメリットになります。
アンケート結果
ここまでで4つメリットをご紹介させていただきましたが、参加者が満足していなければ成功とは言えません。 そこで参加者にアンケートを実施したところ、下記のように高い満足度を得ることができました!
また、たくさんの嬉しいコメントがありました。
- 大変有益な内容だったので、継続的に実施して欲しい!
- リモートだと部門外の方との関わりが少なくなるので、非常に有益でした
- ノーヒントだったのがよかった
- 理不尽さの無い課題で手ごたえがあった!
- クレジットなど普段は気を付けてるのにいざとなると気が回らないことがわかり 良い反省点となった
特に、最後のコメントに障害対応訓練の手ごたえを感じました。訓練の目的の1つが、今後同じような障害が発生しても対応できることです。「事例については知っていたものの、障害について気づけなかった」という経験が、実際の障害対応に役立つことは間違い無いと思います。
今後もさまざまな障害を取り入れ、こうした訓練を行うことで、BIGLOBEの品質向上に貢献できるように日々精進していきたいと思います。
最後に
高い満足度に強い手ごたえを感じています。改めて障害事例を実際に体験してみることやコロナ禍ではより密接にコミュニケーションを取る必要があると感じました。
今回新人として障害対応訓練に携わらせていただきましたが、環境の準備から障害を発生させるまでの間に、たくさんの知識を深めることができました。最初から教える側に回ることは大きな苦労もありますが、その分自分に足りていない知識が浮き彫りになるので、大変勉強になります。
障害対応訓練は開催する側も、受講する側もとても学びが多い勉強会です。 メリットがたくさんの障害対応訓練×エンジニア交流会の開催をぜひぜひ検討してみてはいかがでしょうか?
「まず先に、AWSのことをもっと知りたいな」と感じられた方は、以前ご紹介させていただいた記事を参考に、AWSのハンズオンを行ってみることをオススメします。 ぜひこちらも覗いていってください!
※Amazon Web Servicesは、米国その他の諸国における、 Amazon.com ,Inc. またはその関連会社の商標です。