2014の16日目の記事です。8日目ではkazuchikaさんよりApigee製のAPI負荷ツールapibの紹介がありました。この記事ではapibに加えてBoomというGolang製の類似ツールを簡単に紹介し、様々なマイクロWebフレームワークに対して両者を使ってみます。Bench(ab)と同じくリクエスト回数を指定した計測レスポンス時間がヒストグラム表示されるソースコードがコンパクトインストールGolang環境がセットアップされているものとします。[URL]その他オプションはboomコマンドで閲覧できます。[URL]その他オプションはapibコマンドで閲覧できます。複数のプログラミング言語のマイクロフレームワークを用いて単純なWebAPIを作成して負荷テストツールを実行してみます。ExpressNode.jsのスタンダードなWAFです。APIに特化しています。Lab製のWAFです。自由度の高いExpressや類似フレームワークに対して、ある程度統制を効かせてコードをクリーンに保とうという意識を感じます。WebAPIのルーティングも可読性が高いです。日本ではあまり知られていないように思いますが、小売系の他npm、Mozillaなどtech系企業のユースケースも目立ちます。Sinatra言わずと知れたマイクロフレームワークです。フォロワーのWAFが大量に出たのがわかるミニマルな記法です。WEBRickは遅かったためThinに変更しています。Espressoespresso/espresso速度が売りのマイクロフレームワークです。こちらもSinatraに合わせてThinに変更しています。期待してなかったのですが検討しています。Framework恐らくPythonで最もミニマルなWAFで個人的にもよく使っています。WSGIに対応していてアプリケーションサーバをFacebook製のTornadoに変更しました。Scottyscotty-web/scottySinatraに影響を受けたHaskellのマイクロWebフレームワークです。Haskellの中では最も親しみやすい印象でした。この記法でこの性能はいい感じです。MartiniMartiniDIの仕組みをもったGoのマイクロフレームワークです。通常の設定だと標準出力にログが出て速度がやや遅くなったのでzishe/app.goを参考にログを消しています。Golangの人気がうかがえる速度です。beegoastaxie/beegoMartiniよりリッチなGoのフレームワークです。マイクロフレームワークかと思っていたらフルスタックとのこと。フルスタックかつ高性能と謳っています。beego.Run()}注意この記事はフレームワークの性能を表すものではありません。以下のようにフレームワーク周辺領域での選択やアプリやミドルウェアの構成による影響が大きく、何をもって"フレームワークの性能"と定めるか容易には決められないからです。ディスクやネットワークのIO。その性能もORMやコネクタに左右されます。シリアライズやバリデーションなど入れ替え可能な関連ライブラリPythonのWSGIやRubyのRackのようにWebサーバとWebアプリケーションフレームワーク間の統一インタフェースが提供されている場合、Webサーバの選択が性能に大きく影響します。ルーティングを辞書でなく配列に格納してマッチングするWAFの場合、探索の計算量がO(N)となるため登録されているルーティングが多くなると性能が劣化してしまいます。APIとしては不完全です。感想WebAPIの負荷テストツールを使うことで新たなフレームワークを試すのが楽しくなりました。APIを実装する敷居が低くなったということです。APIが組み込まれたソフトウェアも目立つようになりました。ソフトウェアのWebAPIがこの記事で使ったようなマイクロフレームワークで実装されていることもあります。APIを持つのが当たり前になり、誰もがコードから簡単に操作できる自由な世界が訪れるといいですね。Lion)でvert.xを動かす方法を説明します。(1)月別アーカイブ参加グループプログラミングテクノロジーPythonはてなブログをはじめよう!slowqueryさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。