SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Herokuではじめるチーム開発と運用

アクセス急増にもコマンド一発で対応! Herokuで手に入れるアプリケーションの拡張性

Herokuではじめるチーム開発と運用 第6回


性能を拡張するHerokuの操作-Dynoのスケーリング

 Herokuでは、処理をこなす単位(アプリケーションを動かす単位)をDynoと呼びます。このDynoをスケールアップ/スケールアウトさせる具体的な操作方法を、実行例とともに説明していきます。まず、次のコマンドで現在の状態を確認します。

$ heroku ps
=== web (Standard-1X): npm start (1)
web.1: up 2017/07/02 20:22:45 +0900 (~ 31s ago)

 現在はStandard-1xタイプのDynoが一つだけ稼働している状態です。

 Dyno は3種類(Web/Worker/One-off)ありますが、ここでは基本的にWeb Dynoについて説明していきます。Worker Dynoも原則同じですが、詳しくは「Dyno and Dyno Manager」をご覧ください。

Dynoのスケールアップ

 Dynoには割り当てられる性能に応じていくつかのタイプが用意されています(表1)。このDynoのタイプを、より高性能なものに変更することによってスケールアップを実現します。

表1 Dynoの種類(2017年6月時点)
  Dyno Type Sleeps Professional Features Memory (RAM) CPU Share Dedicated Compute
1 free yes no 512MB 1x no 1x-4x
2 hobby no no 512MB 1x no 1x-4x
3 standard-1x no yes 512MB 1x no 1x-4x
4 standard-2x no yes 1024MB 2x no 4x-8x
5 performance-m no yes 2.5GB 100% yes 11x
6 performance-l no yes 14GB 100% yes 46x

 例えば、Web Dynoのタイプをstandard-2xに変更するには、次のコマンドを実行します。

$ heroku dyno:type web=standard-2x
Scaling dynos on ⬢ glacial-badlands-10890... done
type  size         qty  cost/mo
────  ───────────  ───  ───────
web   Standard-2X  1    50

注意

 Dynoのタイプが変更された場合、Dynoは再起動されます。

Dynoのスケールアウト

 Dynoの種類のうち、standard-1x以上のもの(表1のProfessional Featuresがyesのもの)がスケールアウトに対応しています。例えば、Web Dynoの稼働数を4にするには、次のコマンドを実行します。

$ heroku ps:scale web=4
Scaling dynos... done, now running web at 4:Standard-2X
$ heroku ps
=== web (Standard-2X): npm start (4)
web.1: up 2017/07/02 20:24:39 +0900 (~ 3m ago)
web.2: up 2017/07/02 20:27:31 +0900 (~ 29s ago)
web.3: up 2017/07/02 20:27:05 +0900 (~ 55s ago)
web.4: up 2017/07/02 20:27:06 +0900 (~ 54s ago)

 スケールアップとスケールアウトを一度に行うこともできます。例えばWeb DynoのタイプをPerformance-Mに変更し、かつ稼働数を6にするには、次のコマンドを実行します。

$ heroku ps:scale web=6:performance-m
Scaling dynos... done, now running web at 6:Performance-M
$ heroku ps
=== web (Performance-M): npm start (6)
web.1: up 2017/07/02 20:31:18 +0900 (~ 12s ago)
web.2: up 2017/07/02 20:31:18 +0900 (~ 12s ago)
web.3: up 2017/07/02 20:31:18 +0900 (~ 12s ago)
web.4: up 2017/07/02 20:31:18 +0900 (~ 12s ago)
web.5: up 2017/07/02 20:31:18 +0900 (~ 12s ago)
web.6: up 2017/07/02 20:31:22 +0900 (~ 8s ago)

 また、これら一連の操作は、Heroku DashboardでWebブラウザから行うこともできます。

図3 Dynoタイプの変更操作画面例
図3 Dynoタイプの変更操作画面例

ここがポイント

 ところで、利用者からの要求を新しく起動したDynoへ振り分けるための設定はどうすればいいのでしょうか? 心配はいりません。それは自動で行われます。運用担当者がロードバランサーなどの設定変更を行う必要は無く、運用負荷を低減することができます。また、今までは性能向上に関しての説明をしてきましたが、Herokuでは同様の操作で縮退を行うことも可能です。

次のページ
Auto Scaling

この記事は参考になりましたか?

Herokuではじめるチーム開発と運用連載記事一覧

もっと読む

この記事の著者

稲葉 洋幸(株式会社セールスフォース・ドットコム)(イナバ ヒロユキ)

 株式会社セールスフォース・ドットコム プラットフォームスペシャリスト 日本ヒューレット・パッカードにてアプリ開発、インフラ構築プロジェクトのエンジニア・リーダー、製品プリセールスに従事。その後日立コンサルティングにてIT組織最適化・デジタルビジネス立ち上げのコンサルタントを経て、2016年より現職...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10321 2017/08/07 15:55

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー