Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

構築・運用の必須知識! Herokuアプリケーションの実行プラットフォーム「Dyno」を徹底的に理解する

Herokuでスタート! はじめてのPaaSアプリケーション開発 第4回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/12/24 14:00

 前回はHeroku上でデータベース(PostgreSQL)を使用したアプリケーションを作成する方法について解説しました。今回はアプリケーション開発から少し離れて、Herokuの中心的概念である「Dyno」について詳細に説明します。

目次

Dynoとは

 Dynoとは、Herokuアプリケーションが実際に実行されるプラットフォームのことです。その実体は、Amazon EC2の巨大インスタンス上で動作する軽量Linuxコンテナです。

 ベースとなるOSはUbuntuであり、ユーザーの作成したアプリケーションはすべてDyno上で実行されます。

 大きな特徴として、Dynoのファイルシステムは揮発性であることが挙げられます。例えば、ブラウザからアップロードしたファイルをDynoのディスク上に保存しても、そのファイルはDynoがシャットダウンした際に失われます。

 Dynoは常にHerokuのDynoManagerによって監視されており、毎日1度は再起動されます。データを保存する際には必ずHeroku Postgresなどの外部ストレージを利用します。

 また、DynoはHerokuの課金のための単位でもあり、DynoのサイジングをどのようにするかはHerokuを運用する上で大きなポイントになります。

Dynoの種類と料金

料金体系は最新情報をご確認ください

 Herokuから、2015年6月より料金体系が変更されると発表がありました。以下の説明は、本稿執筆時点での情報に基づいてに書かれています。最新の料金はこちらでご確認ください。

 

 現在Dynoには1X、2X、PXという3種類のサイズがあります。

名称 メモリ CPUシェア マルチテナント 処理能力 価格/時間
1X 512MB 1x yes 1x-4x 0.05米ドル
2X 1,024MB 2x yes 4x-8x 0.10米ドル
PX 6GB 100% no 40x 0.80米ドル

 Dynoサイズによって、メモリ容量とCPUの処理能力が異なります。1X、2Xはマルチテナント、つまり1台のEC2上で複数のコンテナが共存するモデルです。一方PXは、ホストを1つのコンテナで占有するモデルとなっています。

 Dynoの価格はDyno Hourという概念に基づいて設定されています。1X Dynoが1時間起動している状態を「1Dyno Hourを消費する」といい、1Dyno Hourの料金は0.05米ドルです。

 2X Dyno、PX Dynoの価格はそれぞれ1時間あたり0.1米ドルと0.8米ドルですが、Dyno Hourの考え方では以下のように説明されます[1]

  • 2X Dynoを1時間起動していると2Dyno Hourを消費する
  • PX Dynoを1時間起動していると16Dyno Hourを消費する

[1] ちなみに、1時間以下の使用時間も割合をかけて算出されます。

 なぜ、こういう考え方をするかというと、Herokuでは1つのアプリケーションにつき750Dyno Hourの無料枠があるからです。

 例えば、2X Dyno 2台を1か月間動かしたとします。1か月は24時間 × 31日で744時間です。2X Dynoは1時間につき2Dyno Hourを消費するので、1台あたり1488Dyno Hourの消費、それが2台で合計2976Dyno Hourの消費です。

24 × 31 × 2 × 2 = 2976 Dyno Hour

 ただし、750Dyno Hourの無料枠があるので、2976から750を引いた111.3米ドルがこの場合の料金です。

(2976 - 750) × $0.05 = $111.3

 無料枠はアプリケーションごとに提供されるので、1X Dyno 1台で運用しているアプリケーションの場合は1か月あたりのDyno Hourの消費が最大で744Dyno Hourとなり、無料枠の中で収まって料金が発生しません。

 1X Dyno1台のみの運用にはいろいろと制限事項があるので、本番運用ではお勧めできませんが、開発環境やテスト環境をAdd-Onまで含めて無料枠内で構築することは実際に可能です。

 750時間の無料枠はどのような組み合わせで使用しても構いません。例えば、PX Dyno10台を4時間だけ起動していた場合、

16 × 10 × 4 = 640 Dyno Hour

 の消費となりますが、それ以外の時間の起動台数を0としておけば無料枠内で収まります。

 筆者は負荷テストなどで100Dynoを同時起動してテストを行うことがたまにありますが、短時間の利用なのでほとんど料金は発生していません。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 小西 俊司(コニシ シュンジ)

    株式会社Giveryに所属するエンジニア。CODEプロジェクトというエンジニアの成長を促進するプラットフォーム開発のテックリード。Herokuも使った新しいプロダクトを今秋リリース予定。

バックナンバー

連載:Herokuでスタート! はじめてのPaaSアプリケーション開発
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5