今更ですが最近bash芸にはまりつつあるエンジニアの九岡です。bashで連想配列を使ったオブジェクト指向プログラミングをやろう!と思ったら、Macのbashは連想配列に未対応のバージョン3系…。個人的にbashに期待しているポータビリティが損なわれてしまうので諦めました。:sweat: それでは、昨日に引き続き、re:Invent 2015に参加した際に見つけた注目サービスの続編をお届けします!
AppNeta
AppNetaはWebアプリケーション向けのフルスタックのモニタリングサービスです。
- Webアプリケーション向けのパフォーマンスモニタリングサービスTraceView
- 合成監視(Synthetic Monitoring)サービスAppView
- ネットワークのトラフィック分析サービスFlowView
- ネットワークのエラーモニタリングサービスPathView
などの機能を提供しています。
恐らく最も使われそうなTraceViewは、Webアプリ向けのいわゆるAPMです。アプリケーションサーバ視点のレスポンスタイムの内訳(アプリケーションサーバ、フレームワーク、データベースアクセス)や、エンドユーザ視点でのレスポンスタイムの内訳(ネットワーク、サーバ、DOM処理、ページレンダリングにかかった時間)などを、リクエストからドリルダウンすることで、パフォーマンスチューニングの参考になる情報を得ることができます。
AppViewはWebサイトのパフォーマンスをユーザ目線で監視することができます。具体的には、Seleniumのテストシナリオ(ワークフローと呼ばれているようです)のようなものを作成、それを様々なリージョンから定期実行して、各ページにおいてどの国からアクセスしたとき何にどれくらいの時間がかかったのか、を分析することができます。サービスが海外展開したとき、リージョンをまたがるようなパフォーマンス上の問題を発見するような場合にも使えそうです。
クラウドワークスではAPMとしてNewRelicを使っているのですが、AppNetaはNewRelicが提供しているような機能を一通り提供しているようです。TraceViewはNewRelic APM、AppViewはNewRelic Syntheticsに対応していると思われます。FlowViewとPathViewのようなネットワークのモニタリングも必要、ということになったらAppNetaに移行するのもありかもしれません。
Ruxit
RuxitはNewRelicやAppNeta同様、Webアプリケーション向けのパフォーマンスモニタリングサービスです。基本的な機能はAPM、合成監視で特筆すべきものはなさそうなのですが、障害発生時に原因を提案してくれる機能が面白いです。また、NewRelicやAppNetaとは違って1ホスト/1時間単位の課金なので、オートスケーリングを多用するような環境だとコスト削減効果がありそうです。
Batchly
Batchlyは、画像処理や動画変換などをはじめとするバッチ処理を行うためのAWSリソースを効率的にプロビジョニングしてくれるサービスです。バッチ処理向け、という切り口が個人的には目新しいです。
AWSアカウントを接続して、リージョン、VPC、VPCサブネットとSLA(最大所要時間やコスト)、処理内容を指定すると、最もコスト対効果の高いインスタンスタイプを選んでスポットインスタンスを作成、監視、エラーハンドリングを行ない、SLAを担保しつつインフラ費用を抑える…ということをやってくれるようです。
スポットインスタンスを使ってバッチ処理の仕組みを組むということ自体は難しくないと思いますが、ケーススタディを読む限りでは費用対効果が最大になるようなアルゴリズムを持っているところが強みなようです。
後編に続きます。