APM(アプリケーションパフォーマンスマネジメント)という手法 | 24/7の仕事が好きな社長ブログ @nariken

APM(アプリケーションパフォーマンスマネジメント)という手法

従来からサーバ監視の有用性はサービスクオリティを上げるうえで広く認知されてきました。
そしてこの分野も進歩していて今ではサーバより上のレイヤとなるアプリケーションを
管理するAPMという手法についてここ数年で様々なアプローチが取られてきています。

APMそのものについては
・サイトとしての機能がしっかりと動いているのか
・レスポンスは早く返せているか
・機能の遷移(プロセス)において遅延している箇所は無いか
をチェックし改善プロセスを作っていくというものです。

システムのリリースによって改修ポイントとは違う箇所にエラーが発生するという
ケースもよくあるので、それらの対策としても有効な手段です。

実現するには各社提供の専用ツールを利用するか、独自でスクリプトを書くなど
様々な方法が取られています。

従来型の監視では、
死活監視と呼ばれるサーバ自体の稼動状態や
HTTP,DNSといったミドルウェアのレイヤでの応答監視を
行うケースが主流でした。
また、定点観測を行いレスポンスタイムを取得し、遅延が発生してきたタイミングで
キャパシティの増加を検討するといった内容でした。

この場合、
・外部APIサーバの応答が悪くなっている
・クレジット決済会社との通信がエラーになっていた
という内容のエラーを検知することが出来ません。
なぜなら再現するにあたってはサイト機能をユーザが操作するように
順序を追って行う必要があるからです。
※例えばサイトへのログインやカートへ商品を入れるといったアクションですね


よって単一のミドルウェアやURLのレスポンスを見るだけではなく、
ECサイトであればカートへ商品を入れ、その後決済処理が正常に行われ
ユーザへメールが送信されているかといったユーザ視点による監視が必要になってきています。


それらのアプリケーションレイヤまでは
アラート発生後に切り分けを行うタイミングで確認するというやり方をとっていましたが、
昨今ではクロスオーバーといった用語も使われるようになってきており、
サーバ上でどの様なシステムや機能が稼動しているかを意識し、監視・運用することが
求められています。


またトレンドではソーシャルゲームのようにリッチコンテンツとして作りこまれている
アプリケーションについてもこれらの遷移を意識した監視を行うことが可能となってきています。
Facebookページのレスポンスチェックなどもおもしろいですね。

ここ最近はやはりリリース後のスピード感、いかにはやくユーザからの要望を
元に機能として組み込めるかというのは重要なファクタになってきています。
その上でAPMという手法は欠かすことが出来ないものになってくると思います。


後はAPMを実施するサーバ自体の監視も忘れずに。