Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 150 lines (111 sloc) 8.88 kb

Note: Instructions in English are available here

CLOUDFOUNDRYハンズオンセミナー

実習 1 (5 to 30分)

 このエクセサイズでは、ハンズオンを始める前にあらかじめ準備しておかなければならないことを実施いたします。

VMC

ターミナルで'vmc'コマンドを実行してみてください。もし、ターミナルに以下の文字が表示さえるようでしたら、次のステップに進みください。

vmc: command not found

次のステップに進みください。

  1. ターミナルでruby -v を実行してください。Rubyバージョン1.9.2もしくは1.8.7が必要になります。Rubyのインストールは以下を参考にしてください。
  2. sudo gem install vmc -Vを実行してください。

SpringSource Tool Suite (STS)の場合

  1. http://www.springsource.org/spring-tool-suite-download にブラウザアクセスしてください。
  2. バージョン3.0.0以降をダウンロードしてください。
  3. unzip後、インストーラを起動し、環境に応じて各オプションの設定を行ってください。

CloudFoundry Pluginのインストール

STSのHelp > Aboutで、CloudFoundryのiconがないこを確認する。

  1. Help> Eclipse Marketplace にアクセスしてください。
  2. "CloudFoundry"で検索してください。
  3. STSにインストール、その後、STSを再起動してください。

Gitツールのインストール

  1. http://git-scm.com/downloads にブラウザアクセスをしてください。
  2. このブラウザの説明に従って'Git'をインストールしてください。

Mavenのインストール

  1. ターミナルにてmvn --version を実行してください。
  2. このチュートリアルでは3.0.3以降のMavenを推奨いたします。
  3. もし、Mavenがインストールされていなければ、STSにも含まれています。

ボーナス:

既にMicro Cloud Foundryがダウンロードされているなら、セットアップしてみてください。

実習 2 (20分)

Wローカル環境でのアプリケーション動作 (10分)

  1. https://github.com/ericbottard/spring-social-showcase からGit Cloneコマンドにてアプリケーションをコピーしてください。
  2. ローカル環境でテストしてください。 (mvn tomcat:run もしは STSにて"Import as Maven project"を実行し、新しく作成したvFabric tcServerにドラック&ドロップしてください。

.クラウド環境でのアプリケーション動作(10分)

  1. http://cloudfoundry.com でアカウント作成 ("Sign up for cloud foundry")
    1. emailアドレスがアカウントになります。
    2. サインアップ後、送られてきたemailにパスワードが記述されています。パスワードは変更可能です。
    3. サインアップ時には、本セッションで割り当てられたプロモートコードを利用してください。
  2. CloudFoundryへのアプリケーションのデプロイは、vmc pushコマンドを利用してください。アプリケーションサービスはPostgreSQL serviceをバインディングしてください。
  3. Look Ma! I'm in the Cloud!

ヒント:

  • 最初にアプリケーションのビルドが必要です。(mvn package)
  • ビルドの結果はtarget/に出力されます。
  • vmc を動作させるためのカレントディレクトリを指定します。--path xxxx のオプションを使う事で実行場所を指定できます。 - vmcでアプリ名など必要な設定を行います。

ボーナス:

一度、アプリケーション及びサービスを削除し、STSを使って再度アプリケーションを展開してください。

実習 3 (10分)

以下のコマンドを実行してください。

  • vmc apps (展開されているアプリケーション名の表示)
  • vmc scale your_app_name
  • vmc services (利用可能なサービス名の表示)
  • vmc stats your_app_name
  • vmc logs your_app_name
  • vmc help

ボーナス:

  • vmc filesを実行してください。
  • WEB-INFのディレクトリを参照し、何が変更されているか調査してください。

実習 4 (15分)

実習4を始めるにあたり、https://github.com/ericbottard/hands-on-cloudfoundry のコードをコピーしてスケルトンとしてご利用ください。いくつかコードがコメントアウトされているとこは、コメントを削除し、次のステップに進んでください。わからないところは、遠慮なくRepoやTwitterを使って質問してください。 もう一度、STSを使ってコピーされたプロジェクトをMavenプロジェクトとしてインポートします。

  1. 環境変数を表示するwebアプリを作成します。。
  2. まずはローカルにデプロイ、その後、CloudFoundryにデプロイします。。
  3. "VCAP_*"で変数を参照します。
  4. 次に自分で作成したアプリケーションにサービスをバインドします。
  5. その後、VCAP_SERVICESの環境変数はどのようになっているか確認してください。

ボーナス:

同じようにRuby on Rails、sinatraもしくはnode.jsでも実施してみてください。

ヒント: sinatraでの例を以下に記述します。

require 'rubygems'
require 'sinatra'
get '/' do
    s = ''
      ENV.each{|k, v| s += "#{k} = #{v}<br>"}
    s
end

実習 5 (15分)

  1. 最初のデータソースをembedded H2 DBに設定します。(もしくは、自分の環境にあったその他のDBでも構いません).
  2. Databaseが使えるようにPersonControllerクラスを改修します。
  3. ローカル環境にデプロイしなさい。
  4. PostgreSQLサービスを使ったCloud Foundryのアプリケーションとしてデプロイしましょう。アプリケーションはなにも変更せずに動作いたします。

ヒント:

  • Springは、EmbeddedDatabaseFactory`を利用することにより、簡単にembeddedデータベースを作成することができます。
  • Personsレコードを保存しているデータを読み込む場合。そのときのjdbcTemplate.query(sql, parameters, BeanPropertyRowMapper)を確認してください。
  • Personsレコードを新しく永続化する場合、TjdbcTemplate.update(sql, new BeanPropertySqlParameterSource) を確認してください。

ボーナス:

DataSourceをインジェクションするときのログ出力を確認します。ローカルにてどのような処理がされていますか?、また、CloudFoundry上ではどうでしょうか?

実習 6 (15分)

1.さらにもう一つデータストアを追加します。(embedded H2) 2. 二つのデータストアが使えるようにCopyControllerを改修いたします。 3. ローカル環境にデプロイしてください。 4. Cloud Foundry上にデプロイしてください。ログを見ながら何が違うか比較してください。

ヒント:

  • アプリケーションのスタート/ストップの操作を行ってみてください。

実習 7 (20分)

  1. もし、クラスに@Configurationを利用している場合は、二つのデータソースを削除します。
  2. context-ex7.xmlにて、'default'と'cloud'の二つのプロファイルを作成します。
  3. default'プロファイルの中に二つのローカルデータソースをを宣言します。その宣言の中で、<jdbc: /> namesplaceを利用することができます。
  4. この場合 <cloud:xxx /> namespace.を利用します。 ###ボーナス:

XML関連の情報を削除し、その代わりに@Configuration`を利用してみてください。

ヒント:

  • プロファイル情報をもとに@Profile()を使って設定を行ってください。
  • @Configurationで定義したクラス内で、CloudEnvironment をインジェクションすることができます。
  • relational servicesに関する情報を得るためには、serviceInfoType と同様な RdbmsServiceInfo.classにあるcloudEnvironment.getServiceInfo(String name, Class<T> serviceInfoType)を使うことができます。
Something went wrong with that request. Please try again.