bounscale 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,29 +1,162 @@
1
- # Bounscale
2
-
3
- TODO: Write a gem description
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- gem 'bounscale'
10
-
11
- And then execute:
12
-
13
- $ bundle
14
-
15
- Or install it yourself as:
16
-
17
- $ gem install bounscale
18
-
19
- ## Usage
20
-
21
- TODO: Write usage instructions here
22
-
23
- ## Contributing
24
-
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
1
+ # Bounscale
2
+ Bounscaleは、HerokuへデプロイされたRailsアプリケーションをオートスケールする環境を提供するアドオンです。
3
+
4
+ Bounscaleを追加することによって次のような利点を得ることができます。
5
+
6
+ 1. レスポンスの低下を抑えます。
7
+
8
+ 2. アプリケーションへの負荷に合わせて最適なDyno数の調整を行うことによりコストを抑えることができます。
9
+
10
+ Bounscaleはgemのbounscaleにより、RackMiddlewareからアプリケーションの状態を取得してオートスケールを実現しています。
11
+
12
+ ## サポート環境
13
+ __Application__
14
+
15
+ * 動作確認済
16
+ * Rails 2.3 or 3.0 or 3.2
17
+ * 仕組み上はRackに対応していれば利用可能です
18
+
19
+ __Heroku Stack__
20
+
21
+ * Ceder Stack
22
+
23
+ Ruby 1.9.2 or 1.9.3
24
+
25
+ ## はじめに
26
+
27
+ プロジェクトのGemfileに以下を追加します。
28
+
29
+ ```Gemfile
30
+ gem 'bounscale'
31
+ ```
32
+
33
+ Rails2の場合はconfig/environment.rbに以下を追加します。
34
+ (Rails3の場合は不要)
35
+
36
+ ```config/environment.rb
37
+ config.gem 'bounscale'
38
+ ```
39
+
40
+ ## アドオンのインストール
41
+
42
+ アドオンを追加するために以下のコマンドを入力します。
43
+
44
+ ```
45
+ $ heroku addons:add bounscale
46
+ ```
47
+
48
+ ## Bounscale初期設定
49
+
50
+ Herokuのアプリケーション画面へ移動し、AddonsにBounscaleが追加されていることを確認します。
51
+
52
+ 確認を行った後に、Bounscaleアドオンをクリックします。
53
+
54
+ ![sample01](https://s3.amazonaws.com/bounscale/sample01.png)
55
+
56
+ Bounscaleボタンをクリック後、以下のような画面が表示されます。
57
+ 次に、3つの入力を行なってください。
58
+
59
+ 1. API Key
60
+
61
+ HerokuアカウントのAPIキーを入力してください。
62
+
63
+ APIキーの取得については、heroku dashboard画面で
64
+ `Account > API Key > Show API Keyボタン`
65
+ を押すことで入手できます。
66
+
67
+ 2. Web URL
68
+
69
+ アプリケーションの監視するURLを入力してください。
70
+
71
+ 3. Time Zone
72
+
73
+ 現在地のタイムゾーンを選択してください。
74
+
75
+ 入力後、Saveボタンを押してください。
76
+
77
+ ![sample02](https://s3.amazonaws.com/bounscale/sample02.png)
78
+
79
+ BounscaleのTop画面が表示されれば完了となります。
80
+
81
+ 設定完了後の初期状態はデータがないため、グラフが表示されません。
82
+ 5~10分程度待つとアプリケーションのデータを取得してグラフが表示され始めます。
83
+
84
+ ![sample03](https://s3.amazonaws.com/bounscale/sample03.png)
85
+
86
+ ## オートスケール設定
87
+
88
+ オートスケール設定画面は、オートスケールに関する各種設定値を指定することで、適切にオートスケールが行われるように制御する画面です。
89
+
90
+ ![sample04](https://s3.amazonaws.com/bounscale/sample04.png)
91
+
92
+ ### (a)Auto Scale
93
+ _Auto Scale_ではオートスケールのオンオフを設定することができます。有効(enable)の場合、グラフのデータを取得し、高負荷の条件を満たすとオートスケールが実施されます。無効(disable)の場合、グラフのデータを取得しますが、オートスケールは一切実施されません。
94
+
95
+ 使い始めはひとまず無効を指定し、収集されたグラフに基づき、適切な閾値を指定できた後で、有効に設定する事をお勧めします。
96
+
97
+ ### (b)Dyno Limit
98
+ _Dyno limit_ではオートスケールにより変更されるDyno数の範囲を設定することができます。Dynoの最小値は、どれだけ負荷が少なくても、指定値よりもDynoが少なくなることはありません。Dynoの最大値は、どれだけ負荷が小さくても、指定値よりもDynoが大きくなる事はありません。
99
+
100
+ 最小値は最低限の性能を確保するための数値を指定してください。また、最大値はコストに合わせて数値を指定してください。また、current dynoは今現在のDyno数を表しています。
101
+
102
+ ### (c)Response Time
103
+ Bounscaleのスケールアウトは2つの指標値が両方高負荷状態になった場合に実行されます。
104
+
105
+ 指標値"ResponseTime"はBounscaleから該当のURLに実際にHTTPリクエストを発行したレスポンスタイムです。この指標値はアプリケーションの負荷を測定するために最重要な項目であるため、必ず利用する指標値となります。*Response Time*をクリックすると、レスポンスタイムを監視しているURLの設定を行うことができます。
106
+
107
+ アプリケーションの中で平均的なレスポンスタイムを返却するURLを指定する事をお勧めします。
108
+
109
+ ### (d)オプショナル指標値
110
+ セレクトボックスで2つ目のオプショナル指標値を選択します。オプショナル指標値には以下のものがあります。
111
+
112
+ * Busyness[%]
113
+
114
+ 一定時間あたりのDynoが処理するリクエスト処理時間、待ち時間を計測し、その比率を0%から100%で表す指標値です。
115
+
116
+ 例えば、10秒間に6秒間リクエスト処理を行い、4秒間リクエスト待ちのとき、出力は60[%]となります。
117
+
118
+ * CPU[ms]
119
+
120
+ CPUの使用時間を表す指標値です。
121
+
122
+ * Memory[MB]
123
+
124
+ メモリの使用量を表す指標値です。
125
+
126
+ * Throughput[response/min]
127
+
128
+ 1分間あたりに返すレスポンス数を表す指標値です。
129
+
130
+ ### (e)(f)グラフ
131
+ _グラフ_では、スケールアウトする閾値を選択することができます。固定の指標値であるResponseTimeの閾値は左のつまみで設定することができます。
132
+ また、オプショナルの指標値であるCPUの閾値は右のつまみで設定することができます。2つの指標値の設定した閾値の両方が超えるとスケールアウトしてアプリケーションへの負荷を低減させます。
133
+
134
+ ### (g)Interval
135
+ _Interval_では、データを取得するスパンを設定することができます。短いほど急激にDynoの数が増減します。
136
+
137
+ ### (h)ScaleIn
138
+ Bounscaleのスケールインはレスポンスタイム単体が一定の閾値を下回った場合に実行されます。_ScaleIn_で、スケールインするレスポンスタイムを設定することができます。この値はできるだけ小さく指定する事をお勧めします。アプリケーションへの負荷が十分に収まっていない状態でスケールインする事を防ぐためです。
139
+
140
+ ### (i)Saveボタン
141
+ 設定完了後Saveボタンを押します。
142
+
143
+ ## 運用開始後
144
+
145
+ 実際の運用を始めた後は _Dyno History_ 画面を参照し、定常的に下記のガイドラインを参考にしてオートスケールの設定を最適化していってください。
146
+
147
+ ![sample04](https://s3.amazonaws.com/bounscale/sample07.png)
148
+
149
+ * 十分なレスポンスタイムが維持されているか確認します。
150
+ * レスポンスタイムが不十分な場合、そのタイミングでDynoの数が増加しているか確認します。
151
+ * 増加していない場合は閾値及びオプショナル指標値を適切に調整します。
152
+ * Dynoが増えているにも関わらずレスポンスタイムが改善しない場合は、Bounscaleでは対応できません。
153
+ * アプリケーション以外(DBサーバなど)がボトルネックになっている可能性を調査します。
154
+ * 負荷が高くない状況でオートスケールが実行されている場合も、閾値及びオプショナル指標値を適切に調整してください。
155
+
156
+ ## サポート
157
+
158
+ 不明点、動作不良などを発見された場合、issuesに登録をお願い致します。
159
+
160
+ それではあなたのアプリケーションがストレスから開放されることを。
161
+
162
+ DTS Corporation.
@@ -1,4 +1,4 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  module Bounscale
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
data/lib/bounscale.rb CHANGED
@@ -13,4 +13,10 @@ require "bounscale/writer/base"
13
13
  require "bounscale/writer/heroku_writer"
14
14
 
15
15
  require "bounscale/middlerware"
16
- require "bounscale/railtie" if defined?(Rails::Railtie)
16
+
17
+ if defined?(Rails::Railtie)
18
+ require "bounscale/railtie"
19
+ else
20
+ config = Rails.configuration
21
+ config.middleware.use Bounscale::Middleware
22
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bounscale
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - DTS Corporation
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-06-26 00:00:00 Z
18
+ date: 2013-07-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json