クラウドプラットフォーム「Heroku」の活用
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)