DotCloudすげぇ

DotCloudというサービスを知ったので、試してみる。
対応しているサービスが素晴らしい。PHP,Perl,RubyというLL言語だけではなく、Javaとかもやってるし、HadoopMemcached,mongoDBとかもやってる。
説明はDotCloudは開発者のための優良なプラットフォームに書いてあるので、そちらを参照したほうがよいです。
ちなみにMacBook Proで試しました。

ちなみに価格は2サービスまでは、無料とのこと。さらに素敵。

https://www.dotcloud.com/accounts/register/ から登録を行う。
http://docs.dotcloud.com/#installation.html へ遷移する。
基本的に上のURLどおりに淡々と進めていく。今回は app1 という名前でディレクトリを作成。
dotcloudをinstall

$ sudo easy_install pip && sudo pip install dotcloud 

dotcloudをを実行するとAPIKeyを求められるので、貼りつけ。

$ dotcloud 
Enter your api key (You can find it at http://www.dotcloud.com/account/settings):XXXXXX

dotcloud.ymlを作成。中身は以下のとおり。これだけで、PHPMySQL、MongoDB使えるようになる。すてき。

www:
 type: php 
db:
 type: mysql
mongodb:
 type: mongodb

サンプルプログラム作成する

<?php

# Import environment settings from DotCloud
$envjson = json_decode(file_get_contents("/home/dotcloud/environment.json"),true);

# Create MySQL Connection
$mysqli = new mysqli($envjson['DOTCLOUD_DB_MYSQL_HOST'],
                     'app1user', # username
                     'app1user',       # password 
                     'app1', # db name
                     $envjson['DOTCLOUD_DB_MYSQL_PORT']);
                     
print_r($mysqli->query('SELECT now();'));
                     
?>

二つのファイルができたら、サーバへpushする。へ〜ssh+rsyncでやってるんだ。ちなみに、APIKeyやRSAのファイルはユーザRootディレクトリの.dotcloudディレクトリに格納されている。

$ dotcloud create app1
$ dotcloud push app1
sent 505 bytes  received 70 bytes  104.55 bytes/sec
total size is 556  speedup is 0.97
Deployment for "app1" triggered. Will be available in a few seconds.
2011-07-01 19:37:17 [api] Waiting for the build. (It may take a few minutes)
2011-07-01 19:37:18 [www.0] Deploying...
2011-07-01 19:37:26 [db.0] Deploying...
2011-07-01 19:37:31 [www.0] Service booted
2011-07-01 19:37:45 [db.0] Service booted
2011-07-01 19:37:45 [www.0] The build started
2011-07-01 19:37:45 [db.0] The build started
  1 www:
2011-07-01 19:37:45 [db.0] This service type does not support build method, ignoring...
2011-07-01 19:37:45 [db.0] The build finished successfully
2011-07-01 19:37:46 [www.0] Fetched code revision rsync-1309549037.07
2011-07-01 19:37:47 [www.0] Reloading nginx configuration: nginx.
2011-07-01 19:37:50 [www.0] php5-fpm: stopped
2011-07-01 19:37:50 [www.0] php5-fpm: started
2011-07-01 19:37:50 [www.0] The build finished successfully
2011-07-01 19:37:50 [api] Deploy finished

これでもろもろが作られる。すごいなぁ…
MySQLが作られているか確認。

$ dotcloud info app1.db
cluster: wolverine
config:
    mysql_password:XXXXXXXXXXXXXXX
created_at: 1309549046.4956069
ports:
-   name: ssh
    url: ssh://mysql@XXXXXXXXXXXXXXXXXX:3805
-   name: mysql
    url: mysql://root:XXXXXXXXXXXX@XXXXXXXXX:3819
state: running
type: mysql

あとは、ログインする。ログインしたあとは、普通のMySQLと同じ使い方。

$ dotcloud run app1.db -- mysql -u root -pXXXXXX

これで完了。アプリを作ったり、消したりして、うまくデプロイができなくて1時間もかかっちゃいました。(これは.dotcloudを消してAPIKeyを設定しなおして対応)普通にやれば10分でできるんじゃないか?

ちなみに、tracerouteコマンドで調べるとAmazonEC2で動かしてるらしい。
また、IPを見てみると、USにサーバがあるっぽいので、ネットワーク周りとかはまだ微妙かもしれないけど、「まずはつくってみる」というところでは十二分じゃないかなと気がします。

…やべぇ。夢中になってたら朝になっちゃった