第10回JAWS-UG金沢メインセッションレポート
JAWS-UG上越妙高の植木さん、実体験に基づくAWS運用を披露
2016年06月13日 07時00分更新
運用チームに引き渡す前の段階で障害対応を視野に入れた徹底試験を
多くの場合、システム開発の現場では「まず動くものを作る」ことが優先されていると思う。もちろんその後に負荷試験などで動作速度や耐障害性もチェックされることと思うが、その手法に関して開発チームと運用チームが連携する必要があるようだ。植木さんが働くクラスメソッド社では、運用チームで蓄積した知見を開発チームにフィードバックし、引き渡し前の試験方法について見直しを行なったとのこと。
まず負荷試験についてだが、仕様で見込まれている負荷だけではなく、その10倍程度の負荷をかけた試験を行なうよう開発チームに依頼。多くの場合、負荷を高めていく段階でRDSが着いてこなくなるので、チューニングを煮詰めてもらう。さらに、負荷試験だけではなく限界試験も実施する。システムがどの程度の負荷に耐えられるのか、ボトルネックとなるコンポーネントはどれなのかを事前に把握しておくことで、障害発生時に障害ポイントの目安をつけやすくなる。Webサービス系の負荷試験で注目すべきは、トップページとランディングページ。一番アクセスが多いので、アクセス集中で障害の引き金になることが多いためだ。
「クラスメソッドではJMeterを使って負荷試験を行なうフルボッコ(fullbok)というCloudFormationテンプレートを公開しています。こういったものも活用して、どの程度の負荷に耐えられるか、ボトルネックはどこなのかをリリース前に確認してください」(植木さん)
障害試験については、サーバーが止まってもサービスが止まらないことをまずは確認する。同様にDBのフェイルオーバー時の動作についても試験が必要だ。DBに障害が発生してフェイルオーバーする際、DBのIPアドレスが変わることがある。それでもアプリケーションがきちんとDBに再接続できるかどうか、これも実際にチェックしておくことが重要だ。
「あとは障害発生時の検知と、その通知が機能するかどうかの確認ですね。サーバ停止やDBフェイルオーバーの試験の際に、それらを障害としてきちんと検知できているか。適切な通知が行なわれるかどうか。通知については、通知内容の文面までチェックするのを忘れないようにしてください」(植木さん)
実際に過去にあった例として、障害通知メール内にサーバの内部IPアドレスしか書かれておらず、どこのサーバで障害が発生しているのか特定できないものがあったという。ネームタグを使うなど、どこのサーバでどのような障害が起きているのかがわかる文面になっていることを確認しておこう。検知の項で述べたように、重要度がわかるかどうかもここでチェックしておくこと。
引き渡し前にはオペレーショントレーニングを兼ねて、担当者が手順書通りに実際に障害を想定した対応を行なうことも勧められた。手順書を書いているのはシステムを熟知した開発者であり、彼らにとってわかりきった前提が書かれていなかったりすることも少なくない。こうした抜けや漏れをなくすために、実際に作業をして確かめるのだ。他にも、必要なログ機能がオンになっているかどうか、構成図が所定の場所に置かれているかどうかなど、受け入れチェックリストを作成しておくことを植木さんは勧めている。
「それから、Trusted Advisorをリリース前に必ずチェックしてください。REDのない状態で引き継いで、運用開始後も定期的に見てREDをなくしてください」(植木さん)
植木さんはTrusted Advisorを使っている人がいるかどうか会場に尋ねてみたが、ほとんど手が挙がらなかった。これに対して植木さんは「セキュリティ面から耐障害性までチェックしてくれるので、これでチェックしてREDがないことを、受け入れの最低条件にしてほしい」と語った。その上で最後に、次のように締めくくった。
「システムはリリースして利用が開始されてからが本当のスタートですが、そのためにはリリース前から入念な準備が必要です。リリース前のチェックをしっかりやっているサービスは、実際に運用に入ってからもほとんど障害なく安定して運用できています。備えあれば憂いなし、障害が起きて慌てる前に打てる手を打っておきましょう」(植木さん)
この連載の記事
-
第17回
デジタル
年末のJAWS-UG名古屋はre:Inventの振り返りLT(ただしLong Talk) -
第16回
デジタル
AWS IoTでトイレ予約システムを作った中村さんの戦い -
第15回
デジタル
CMSをフレームワークとして活用し、クイックスタートを実現しよう -
第14回
デジタル
クラウドはアジャイル開発本来の力を引き出し、エンジニアの在り方も変える -
第13回
デジタル
ライター重森が体験したJAWS Festa 東海道 2016熱狂の1日 -
第12回
デジタル
「マイル手帳」のバックエンドをServerless Frameworkで構築 -
第11回
デジタル
しずおかオンラインの榊原さん、VPC内のLambdaの苦労を語る -
第10回
デジタル
しずおかランチ開発で得たLambdaとElasticsearch連携時の認証テク -
第9回
デジタル
サーバーレス事例たっぷりのJAWS-UG東海道 in 浜松 -
第8回
デジタル
8月27日、JAWS-UG東海道 in 浜松に行きまーす! -
第7回
デジタル
10月22日は名古屋へ!JAWS Festa 東海道 2016の申し込み開始 - この連載の一覧へ