クラウドプラットフォーム「Heroku」の活用

2011年3月23日(水)
安達 輝雄(あだち てるお)

herokuを利用する環境を整備する

herokuの特徴・機能を理解したところで実際に利用してみましょう。

まずは、herokuを利用するための以下のような環境を、ローカルの開発環境に準備する必要があります。

  • gitが利用可能
    • sshの鍵が設定されている
  • Ruby(1.8.6以上)が利用可能

開発環境の準備は開発環境のOSごとに異なりますので、以下を参考にしてください。

Windowsの場合:http://devcenter.heroku.com/articles/windows

Linux/Mac OS Xの場合:http://devcenter.heroku.com/articles/quickstartの “Prerequisites”を参照

まずは、Herokuのサービスサイト(https://api.heroku.com/signup)にてユーザー登録を行う必要があります。メールアドレスを登録すると確認メールが送信されてきます。

そのメール本文中のURLをクリックして、パスワードを入力するだけで登録が完了します。

ユーザー登録が完了したら、Herokuを利用するためにgemをインストールする必要があります。以下のコマンドでインストールしてください。

$ gem install heroku

Herokuの操作は基本的にインストールしたgemのコマンドを利用します。動作確認のために登録しているアプリ一覧を表示する以下のコマンドを実行してください

$ heroku list
  Enter your Heroku credentials.
  Email: your_email@example.com
  Password: xxxx
  Resource not found

※以降の作業でssh鍵のパスフレーズを聞かれる事がありますが、その際は適宜入力してください。

初めてこのコマンドを実行する場合は、アカウントの認証が行われます。ユーザー登録時に入力したメールアドレスとパスワードを入力してください。パスワード入力後に“Resource not found” と表示されますが、これは、まだherokuに登録したウェブサービスが存在しないために表示されます。以上で動作確認は終了です。

Webアプリケーションを動かす

今回はサンプルウェブサービスとして、Ruby製のCMS/BlogであるLokka(http://lokka.org/)をheroku上で動かしてみましょう。

まずは、lokkaのソースコードをローカルにダウンロードします。

$ git clone git@github.com:interu/lokka.git ./lokka
$ cd lokka/

herokuにWebアプリケーションを追加するために以下のコマンドを実行します。引数に名前を入力すると指定した名前でアプリケーションを登録する事が可能ですが、今回は指定せずにランダムな名前になるようにします。

$ heroku create

gitのコマンドを利用し、herokuにlokkaのソースコードをデプロイします。

$ git push heroku master

続いて、lokkaを動かすために初期化を行います。この初期化はlokkaを動かす上で必要な処理です。もし、稼働させるサンプルアプリケーションがRuby on Railsのものであれば、migrationのようなものと考えてもらえると分かりやすいかと思います。

$ heroku rake db:set

以上の作業で、heroku上でlokkaを稼働させる事ができました。動作確認のためにブラウザでアクセスしてみましょう。

$ heroku open

もしブラウザが開かない場合は、以下のコマンドを実行し、表示される“Web URL”にアクセスしてください。

$ heroku info
  === young-summer-704
  Web URL:        http://young-summer-704.heroku.com/
  Git Repo:       git@heroku.com:young-summer-704.git
  Dynos:          1
  Workers:        0
  Stack:          bamboo-ree-1.8.7
  Data size:      (empty)
  Addons:         Basic Logging, Shared Database 5MB
  Owner:          email@example.com

図1:サンプルアプリの初期画面(クリックで拡大)

以上がheroku上でlokkaを動かすための手順となります。herokuへWebアプリケーションをデプロイする基本な流れは、他のWebアプリケーションでもほとんど同じなので、ぜひお試しください。

heroku利用で運用作業が容易に

サンプルアプリケーションであるlokkaを動かしてみる事で、herokuでサービスを動かす事がいかに簡単な事かを体感していただけたかと思います。

Webアプリケーションを稼働させるまでの容易性だけでなく、他にも以下のような運用作業のそれぞれを、コマンド1つで実現できる仕組みが提供されています。

  • Webアプリケーションのバージョンアップ(release)
  • リリース管理機能(release / rollback)
  • メンテナンス画面への切り替え(maintenance)
  • データベースのバックアップ取得(pgbackups)
  • データベースのリストア(pgbackups:restore)
  • ログの確認(logs)
  • 実行プロセスであるdyno数の変更(dynos)
  • バックグラウンドジョブであるworker数の変更(workers)
  • アプリケーションの再起動(restart)

※括弧内の英文字列がコマンドとなります。詳細についてはこちらを参照してください。

最近では、Heroku上で稼働するWebアプリケーションのバージョンなどを管理し、もしバグの含まれるアプリケーションをリリースしてしまった場合に、以前の状態に切り戻せたりできるようにするリリース管理機能が提供開始されるなど、Webアプリケーションの運用を楽にできるような仕組みも順次強化されてきています。

このように運用負荷を抑え、スモールスタートできる仕組みをHerokuをはじめとするPaaS/IaaSが提供しはじめた事で、「継続性」と「保守性」の高さを実現できるARCが実践可能となりました。

次回は、よりherokuを活用するために必要となるアドオン機能を紹介していきます。

【参考文献】
セールスフォース・ドットコムがRuby on Rails採用へ。Herokuを買収で。Dreamforce'10

(アクセス:2011.2)

著者
安達 輝雄(あだち てるお)
TIS株式会社

TIS株式会社の「SonicGarden」にて、Ruby On Rails製の社内SNS「SKIP」の開発や、youRoomをはじめとするSonicGardenが提供するウェブサービス全般の運用/保守を手がける。
主な著作:クラウドAmazon EC2/S3のすべて(2009,日経BP社)など。ブログはこちら  
Twitter:@interu(http://twitter.com/interu
 

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています