SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
Cloud Foundry:
Open Platform as a Service
    日本Cloud Foundryグループ
          車谷駿介



         内容は個人的見解を示したもので,所属先等との関係は一切ありません.
whoami
• 日本Cloud Foundryグループ
• 普段は研究開発に従事
 – Cloud FoundryひいてはPaaS
 – (勝手に)分散処理する技術
 – スマートフォン向けのシンクライアント技術




                           2
Agenda
• Platform as a Serviceの嬉しさ
• Open PaaS
• 実際にWeb AppをPaaSで動かす




                              3
Platform as a Service?
 • より汎用的なSaaS

                         アプリケーション

                   データ   ランタイム,フレームワーク

                          サーバOS

                          仮想化技術

SaaS PaaS   IaaS     ネットワーク,ストレージ,等


                                         4
Why not SaaS?
 • 制約なくアプリケーションを開発したい

                    アプリケーション

              データ   ランタイム,フレームワーク

                     サーバOS

                     仮想化技術

SaaS PaaS       ネットワーク,ストレージ,等


                                    5
Why not IaaS?
• “動作環境”はお任せしたい

                      アプリケーション

                データ   ランタイム,フレームワーク

                       サーバOS

                       仮想化技術

  PaaS   IaaS     ネットワーク,ストレージ,等


                                      6
Proprietary PaaS
•   Force.com
•   GAE
•   Azure
•   AWS Elastic Beanstalk
•   DotCloud
•   MOGOK
•   etc.

                              7
Open PaaS!
• Cloud Foundry
  – https://github.com/cloudfoundry
• OpenShift
  – https://github.com/openshift
• Cloudify
  – https://github.com/CloudifySource
• Nodester
  – https://github.com/nodester

                                        8
Why choose “Open” PaaS?
• “動作環境”を縛られたくない

               アプリケーション

         データ   ランタイム,フレームワーク

                サーバOS

                仮想化技術

  PaaS     ネットワーク,ストレージ,等


                               9
Open PaaSの言語対応状況
                   Cloud Foundry   OpenShift       Cloudify
Erlang(rebar)      ○
Java 1.6           ○ (Tomcat6)     ○ (JBoss 7.1)   ○(multiple)
.NET                                               ○
Node.js 0.4.x      ○                               △
Node.js 0.6.x      ○               ○               △
Perl 5                             ○ (mod_perl)    △
PHP 5              ○ (mod_php)     ○ (mod_php)     ○(mod_php)
Python(WSGI)       ○               ○               △
Ruby 1.8.x         ○               ○               △
Ruby 1.9.x         ○                               △
Scala(Lift,Play)   ○               △ (自力でlib読込)    △
任意言語追加                             ○ (DIY)         ○
                                                                 10
Open PaaSのRDBMS対応状況
             Cloud Foundry   OpenShift   Cloudify
HSQLDB                                   ○
MySQL        ○               ○           ○
PostgreSQL   ○               ○           ○
VoltDB                                   ○




                                                    11
Open PaaSのNoSQL対応状況
             Cloud Foundry   OpenShift   Cloudify
KVS
 Cassandra                               ○
 Memcached   ○
ドキュメント指向
 CouchDB                                 ○
 MongoDB     ○               ○           ○
 Redis       ○                           ○
グラフ
 Neo4J       ○




                                                    12
Open PaaSのその他対応状況
                 Cloud Foundry    OpenShift    Cloudify
MQ
 ActiveMQ                                      ○
 RabbitMQ        ○
大規模処理
 Hadoop                                        ○
全文検索
 Elasticsearch                                 ○
 Solr                                          ○
その他
 Worker          ○ (standalone)   ○ (worker)
 任意の拡張                            ○


                                                          13
Cloud Foundry based PaaS
• Stackato (ActiveState)
  – http://www.activestate.com/stackato
• Iron Foundry (Tier 3)
  – http://www.ironfoundry.org
• AppFog
  – http://www.appfog.com
• PaaS.io
  – http://paas.io

                                          14
必要なもの
• Cloud Foundryの動作環境
 – どこかのサービスにアカウントを用意
 – あるいは自前
• 弄り回すためのちょっとした知識
 – ランタイムやフレームワーク,DB類
 – APIs
 –癖



                       15
動作環境を自前で用意
• Micro Cloud Foundry
  – 環境構築済みのVMイメージ
• vcap/dev_setup
  – https://github.com/cloudfoundry/vcap/tree/
    master/dev_setup
  – 依存ツールの状況次第で異常終了する場合も
    • うまく行かなかったらCoffee break!
• BOSH等によって管理しつつデプロイ
  – https://github.com/cloudfoundry/bosh

                                                 16
CUI
• VMC: The VMware Cloud CLI
   – https://github.com/cloudfoundry/vmc
   – `gem install vmc [--pre]` or
     `apt-get install cloudfoundry-client`
   – `vmc help [command]`
$ vmc target http://api.cloudfoundry.com
Successfully targeted to [http://api.cloudfoundry.com]

$ vmc login
Attempting login to [http://api.cloudfoundry.com]
Email: krm@example.org
Password: ********
Successfully logged into [http://api.cloudfoundry.com]   17
適当なアプリケーションを用意
$ git clone git://github.com/cloudfoundry/vcap-test-assets.git
$ cd vcap-test-asset/java_web/java_tiny_app
$ vi ...
            protected void doGet(
                    HttpServletRequest req,
                    HttpServletResponse res)
                    throws ServletException, IOException {
                res.setContentType("text/plain");
                res.setStatus(200);
                PrintWriter out = res.getWriter();
                out.println(
                        System.getenv("VCAP_APP_HOST") +
                        ":" + System.getenv("VCAP_APP_PORT"));
                out.close(); }
                                                             ↓

                                                                 18
デプロイ
                                                              ↓
$ cd YOUR_APPS_DIR
$ mvn package
$ cd target # Java Webの場合,*.warのあるディレクトリ
$ vmc push
Would you like to deploy from the current directory? [Yn]:
Application Name: javawebmeetscf
Detected a Java Web Application, is this correct? [Yn]:
Application Deployed URL [javawebmeetscf.cloudfoundry.com]:
Memory reservation (128M, 256M, 512M, 1G, 2G) [512M]:
How many instances? [1]:
Bind existing services to 'javawebmeetscf'? [yN]:
Create services to bind to 'javawebmeetscf'? [yN]:
Would you like to save this configuration? [yN]:
                                                              ↓

                                                                  19
起動完了
                                                                             ↓
Creating Application: OK

Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (5K): OK
Push Status: OK
Staging Application 'javawebmeetscf': OK
Starting Application 'javawebmeetscf': OK

$ vmc apps
+----------------+----+---------+---------------------------------+----------+
| Application    | # | Health | URLS                              | Services |
+----------------+----+---------+---------------------------------+----------+
| javawebmeetscf | 1 | RUNNING | javawebmeetscf.cloudfoundry.com |           |
+----------------+----+---------+---------------------------------+----------+


                                                                                 20
インスタンスを増やす
$ vmc instances javawebmeetscf 2
Scaling Application instances up to 2: OK

$ vmc apps
+----------------+----+---------+---------------------------------+----------+
| Application    | # | Health | URLS                              | Services |
+----------------+----+---------+---------------------------------+----------+
| javawebmeetscf | 2 | RUNNING | javawebmeetscf.cloudfoundry.com |           |
+----------------+----+---------+---------------------------------+----------+




                                                                                 21
環境変数: VCAP_SERVICES
{
    "mongodb-1.8": [
      {
        "name": "ivanmongo", "label": "mongodb-1.8",
        "plan": "free",
        "tags": ["mongodb", "mongodb-1.8", "nosql"],
        "credentials": {
          "hostname": "172.30.48.61", "host": "172.30.48.61",
          "port": 25067,
          "username": "何らかのUUID", "password": "何らかのUUID",
          "name": "何らかのUUID",
          "db": "db" }}]}


                                                                22
環境変数: VCAP_APPLICATION
{
    "instance_id": "16進値",            "instance_index": 0,
    "name": "showenvs",
    "uris": ["showenvs.cloudfoundry.com"],
    "users": [“krm@example.org"],
    "version": "bc5c7351500267c234e659b0f978b530bc6fdf28-1",
    "start": "2012-05-24 06:45:19 +0000",
    "runtime": "ruby18",
    "state_timestamp": 1337841919,
    "port": 6539,
    "limits": {"fds": 256, "mem": 134217728, "disk": 2147483648},
    "host": "172.30.50.22"}


                                                                    23
GUI (Eclipse Extension)
• [Help]>[Eclipse Marketplace...]
  – 但し,対応プロジェクトは
    Java Web (Servlet Spec 2.5),
    Spring, Grails, Liftのみ




                                    24
接続先の設定 (1)
1. [Window]>[Show View]>[Servers]
2. “new server wizard”




               ↑ホストはlocalhostのまま


                                    25
接続先の設定(2)



    ↑必要に応じて変更




        ↓Finish



                  26
設定完了




       27
概要設定




       28
アプリケーション設定




             29
アプリケーションの管理




              30
サービスの追加




          31
Remote System View
• ファイルはインスタンス毎に独立




                        32
Cloud Foundry Explorer




                         33
アカウントの追加




           34
画面構成は概ね同じ




            35
まず知っておくべき”癖”
• ローカルのファイルシステムは非永続的
• DB等の接続先は環境変数で与えられる
 – 環境変数を直接読むように書き換え
 – Javaは少々事情が異なる(特にSpring/Play!)
• Tunnelによるデータベースの直接操作
 – 例: dump済みの既存データの流し込み
• サーバでビルドが必要な物は要注意
 – gemやnpmのパッケージ”は”よしなに取得

                                   36
cloudfoundry-runtime
• https://github.com/cloudfoundry/vcap-
  java/tree/master/cloudfoundry-runtime
  – プロパティ設定用クラスを提供するライブラリ
• たとえばpom.xmlに:
         <dependency>
             <groupId>org.cloudfoundry</groupId>
             <artifactId>cloudfoundry-runtime</artifactId>
             <version>0.8.1</version>
         </dependency>




                                                             37
Springの自動設定
• 同じタイプのサービスは1つに限定される
 – MySQL, Postgres:
  javax.sql.DataSource
 – MongoDB:
  org.springframework.data.document.mongodb.MongoDbFactory
 – Redis:
  org.springframework.data.redis.connection.RedisConnectionFactory
 – RabbitMQ:
  org.springframework.amqp.rabbit.connection.ConnectionFactory




                                                               38
Play!の自動設定
• 単一のRDBと接続
• db.*.driverをよしなに置換
 – production||prodで名前が終わる,
   バインドされた唯一のサービス
 – 唯一バインドされたサービス




                              39
Java系フレームワーク向け
     Cloud Foundryプラグイン
• Cloud Foundry Maven Plugin
  – `mvn cf:push`
• Grails Cloud Foundry Plugin
  – `grails install-plugin cloud-foundry`
  – `grails cf-*`
  – grails-app/conf/Config.groovyで設定




                                            40
サービス一覧を表示
$ vmc services

============== System Services ==============

+------------+---------+---------------------------------------+
| Service    | Version | Description                           |
+------------+---------+---------------------------------------+
| mongodb    | 1.8     | MongoDB NoSQL store                   |
| mysql      | 5.1     | MySQL database service                |
| postgresql | 9.0     | PostgreSQL database service (vFabric) |
| rabbitmq | 2.4       | RabbitMQ message queue                |
| redis      | 2.2     | Redis key-value store service         |
+------------+---------+---------------------------------------+

=========== Provisioned Services ============

+----------------+---------+
| Name           | Service |
+----------------+---------+
| mysql-e8ccf    | mysql   |
| tekito-service | mongodb |
+----------------+---------+



                                                                   41
サービスとの接続
$ gem install caldecott # ない場合
$ vmc tunnel
1: mongodb-794fd
2: postgresql-454d
3: postgresql-611ee
4: redis-47609
Which service to tunnel to?: 1
Deploying tunnel application 'caldecott'. # 初回だけ
(snip.)
Getting tunnel connection info: OK

Service connection info:
  username : 3be0e520-11ed-4af1-b005-c078bcec2da2
  password : 4de480b9-75e9-4105-9784-6fb50391cd5b
  name     : db
                                                    ↓

                                                        42
mongodump
                                                                             ↓
Starting tunnel to tekito-service on port 10001.
1: none
2: mongodump
3: mongo
4: mongorestore
Which client would you like to start?: 2
Launching 'mongodump --host localhost --port 10001 -u 20f75687-7917-4c3b-b2a7-
54d3443342f4 -p 96bdd18e-e125-4f9c-b74a-64130ab65d24 --db db'

connected to: localhost:10001
DATABASE: db       to      dump/db
         db.system.users to dump/db/system.users.bson
                   3 objects
         db.system.indexes to dump/db/system.indexes.bson
                   1 objects

krmtn@kcf-workspace:~$ ls
system.indexes.bson system.users.bson                                            43
mongorestore
Starting tunnel to tekito-service on port 10001.
1: none
2: mongorestore
3: mongodump
4: mongo
Which client would you like to start?: 2
Directory or filename to restore from: dump/db
Launching 'mongorestore --host localhost --port 10001 -u 20f75687-7917-4c3b-
b2a7-54d3443342f4 -p 96bdd18e-e125-4f9c-b74a-64130ab65d24 --db db dump/db'

connected to: localhost:10001
Thu May 24 21:11:14 dump/db/system.users.bson
Thu May 24 21:11:14         going into namespace [db.system.users]
3 objects found
Thu May 24 21:11:14 dump/db/system.indexes.bson
Thu May 24 21:11:14         going into namespace [db.system.indexes]
Thu May 24 21:11:14 { name: "_id_", ns: "db.system.users", key: { _id: 1 } }
1 objects found
                                                                               44
mongo
Starting tunnel to tekito-service on port 10001.
1: none
2: mongorestore
3: mongo
4: mongodump
Which client would you like to start?: 3
Launching 'mongo --host localhost --port 10001 -u 20f75687-
7917-4c3b-b2a7-54d3443342f4 -p 96bdd18e-e125-4f9c-b74a-
64130ab65d24 db'

MongoDB shell version: 2.0.4
connecting to: localhost:10001/db
>


                                                              45
None (SSH接続)
Starting tunnel to tekito-service on port 10001.
1: none
2: mongorestore
3: mongodump
4: mongo
Which client would you like to start?: 1
Open another shell to run command-line clients or
use a UI tool to connect using the displayed
information.
Press Ctrl-C to exit...


                                                    46
まとめ
• PaaSで実行環境やDB周りの構築から開放
• Open PaaSが続々
• CUI嫌いでも大丈夫?




                          47

Contenu connexe

Tendances

ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツShinsukeYokota
 
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)Colin Charles
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudKazuki Aranami
 
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...Insight Technology, Inc.
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングYuichi Tateno
 
刊行記念セミナー「HBase徹底入門」
刊行記念セミナー「HBase徹底入門」刊行記念セミナー「HBase徹底入門」
刊行記念セミナー「HBase徹底入門」cyberagent
 
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...Insight Technology, Inc.
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~じゅん なかざ
 
OpenStack Trove 技術解説
OpenStack Trove 技術解説OpenStack Trove 技術解説
OpenStack Trove 技術解説Toru Makabe
 
PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理Kazuki Takai
 
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介takanori suzuki
 
Cassandra Meetup Tokyo, 2016 Spring
Cassandra Meetup Tokyo, 2016 SpringCassandra Meetup Tokyo, 2016 Spring
Cassandra Meetup Tokyo, 2016 Springdatastaxjp
 
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...Insight Technology, Inc.
 
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...Insight Technology, Inc.
 
About OpenStack DBaas (trove)
About OpenStack DBaas (trove)About OpenStack DBaas (trove)
About OpenStack DBaas (trove)Ikuo Kumagai
 
ConsulとNomadで簡単クッキング
ConsulとNomadで簡単クッキングConsulとNomadで簡単クッキング
ConsulとNomadで簡単クッキングMasatomo Ito
 
OpenStack Object Storage; Overview
OpenStack Object Storage; OverviewOpenStack Object Storage; Overview
OpenStack Object Storage; Overviewirix_jp
 
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...Naoto Gohko
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 

Tendances (20)

ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
 
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
 
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
 
刊行記念セミナー「HBase徹底入門」
刊行記念セミナー「HBase徹底入門」刊行記念セミナー「HBase徹底入門」
刊行記念セミナー「HBase徹底入門」
 
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
 
OpenStack Trove 技術解説
OpenStack Trove 技術解説OpenStack Trove 技術解説
OpenStack Trove 技術解説
 
PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理
 
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
 
Cassandra Meetup Tokyo, 2016 Spring
Cassandra Meetup Tokyo, 2016 SpringCassandra Meetup Tokyo, 2016 Spring
Cassandra Meetup Tokyo, 2016 Spring
 
Cassandra Summit 2016 注目セッション報告
Cassandra Summit 2016 注目セッション報告Cassandra Summit 2016 注目セッション報告
Cassandra Summit 2016 注目セッション報告
 
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
[db tech showcase Tokyo 2017] B14: 4年連続No.1リーダー評価のストレージでDBクローンするとどんな感じ?瞬時のクロー...
 
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
 
About OpenStack DBaas (trove)
About OpenStack DBaas (trove)About OpenStack DBaas (trove)
About OpenStack DBaas (trove)
 
ConsulとNomadで簡単クッキング
ConsulとNomadで簡単クッキングConsulとNomadで簡単クッキング
ConsulとNomadで簡単クッキング
 
OpenStack Object Storage; Overview
OpenStack Object Storage; OverviewOpenStack Object Storage; Overview
OpenStack Object Storage; Overview
 
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 

En vedette

xPaaS – day in the life of a modern application developer
xPaaS – day in the life of a modern application developerxPaaS – day in the life of a modern application developer
xPaaS – day in the life of a modern application developerEric D. Schabell
 
Migrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixMigrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixRohit Kelapure
 
OpenShift, Docker, Kubernetes: The next generation of PaaS
OpenShift, Docker, Kubernetes: The next generation of PaaSOpenShift, Docker, Kubernetes: The next generation of PaaS
OpenShift, Docker, Kubernetes: The next generation of PaaSGraham Dumpleton
 
Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...
Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...
Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...OpenShift Origin
 
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overviewroundman
 
Build a PaaS with OpenShift Origin
Build a PaaS with OpenShift OriginBuild a PaaS with OpenShift Origin
Build a PaaS with OpenShift OriginSteven Pousty
 
fabric8 ... and Docker, Kubernetes & OpenShift
fabric8 ... and Docker, Kubernetes & OpenShiftfabric8 ... and Docker, Kubernetes & OpenShift
fabric8 ... and Docker, Kubernetes & OpenShiftroland.huss
 
Introduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud FoundryIntroduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud FoundryManuel Silveyra
 
Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)
Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)
Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)VMware Tanzu
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overviewcornelia davis
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来Kazuto Kusama
 

En vedette (12)

OpenShift y PostgreSQL
OpenShift y PostgreSQLOpenShift y PostgreSQL
OpenShift y PostgreSQL
 
xPaaS – day in the life of a modern application developer
xPaaS – day in the life of a modern application developerxPaaS – day in the life of a modern application developer
xPaaS – day in the life of a modern application developer
 
Migrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixMigrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMix
 
OpenShift, Docker, Kubernetes: The next generation of PaaS
OpenShift, Docker, Kubernetes: The next generation of PaaSOpenShift, Docker, Kubernetes: The next generation of PaaS
OpenShift, Docker, Kubernetes: The next generation of PaaS
 
Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...
Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...
Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...
 
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overview
 
Build a PaaS with OpenShift Origin
Build a PaaS with OpenShift OriginBuild a PaaS with OpenShift Origin
Build a PaaS with OpenShift Origin
 
fabric8 ... and Docker, Kubernetes & OpenShift
fabric8 ... and Docker, Kubernetes & OpenShiftfabric8 ... and Docker, Kubernetes & OpenShift
fabric8 ... and Docker, Kubernetes & OpenShift
 
Introduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud FoundryIntroduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud Foundry
 
Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)
Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)
Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overview
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 

Similaire à Cloud Foundry: Open Platform as a Service

LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係Hiraku Komuro
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe APImaruyama097
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APImaruyama097
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...Naoto Gohko
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingTakuya ASADA
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStackKimihiko Kitase
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows AzureMicrosoft
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Wayロフト くん
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
20140927 azure pack_slideshare
20140927 azure pack_slideshare20140927 azure pack_slideshare
20140927 azure pack_slideshareOsamu Takazoe
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会axsh co., LTD.
 
Cloudってどんなもの?
Cloudってどんなもの?Cloudってどんなもの?
Cloudってどんなもの?Kazuto Kusama
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2Dell TechCenter Japan
 
Windows on aws最新情報
Windows on aws最新情報Windows on aws最新情報
Windows on aws最新情報Genta Watanabe
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集Couchbase Japan KK
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureA 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureGoAzure
 

Similaire à Cloud Foundry: Open Platform as a Service (20)

LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe API
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meeting
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
20140927 azure pack_slideshare
20140927 azure pack_slideshare20140927 azure pack_slideshare
20140927 azure pack_slideshare
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
 
Cloudってどんなもの?
Cloudってどんなもの?Cloudってどんなもの?
Cloudってどんなもの?
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2
 
Windows on aws最新情報
Windows on aws最新情報Windows on aws最新情報
Windows on aws最新情報
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureA 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
 

Cloud Foundry: Open Platform as a Service

  • 1. Cloud Foundry: Open Platform as a Service 日本Cloud Foundryグループ 車谷駿介 内容は個人的見解を示したもので,所属先等との関係は一切ありません.
  • 2. whoami • 日本Cloud Foundryグループ • 普段は研究開発に従事 – Cloud FoundryひいてはPaaS – (勝手に)分散処理する技術 – スマートフォン向けのシンクライアント技術 2
  • 3. Agenda • Platform as a Serviceの嬉しさ • Open PaaS • 実際にWeb AppをPaaSで動かす 3
  • 4. Platform as a Service? • より汎用的なSaaS アプリケーション データ ランタイム,フレームワーク サーバOS 仮想化技術 SaaS PaaS IaaS ネットワーク,ストレージ,等 4
  • 5. Why not SaaS? • 制約なくアプリケーションを開発したい アプリケーション データ ランタイム,フレームワーク サーバOS 仮想化技術 SaaS PaaS ネットワーク,ストレージ,等 5
  • 6. Why not IaaS? • “動作環境”はお任せしたい アプリケーション データ ランタイム,フレームワーク サーバOS 仮想化技術 PaaS IaaS ネットワーク,ストレージ,等 6
  • 7. Proprietary PaaS • Force.com • GAE • Azure • AWS Elastic Beanstalk • DotCloud • MOGOK • etc. 7
  • 8. Open PaaS! • Cloud Foundry – https://github.com/cloudfoundry • OpenShift – https://github.com/openshift • Cloudify – https://github.com/CloudifySource • Nodester – https://github.com/nodester 8
  • 9. Why choose “Open” PaaS? • “動作環境”を縛られたくない アプリケーション データ ランタイム,フレームワーク サーバOS 仮想化技術 PaaS ネットワーク,ストレージ,等 9
  • 10. Open PaaSの言語対応状況 Cloud Foundry OpenShift Cloudify Erlang(rebar) ○ Java 1.6 ○ (Tomcat6) ○ (JBoss 7.1) ○(multiple) .NET ○ Node.js 0.4.x ○ △ Node.js 0.6.x ○ ○ △ Perl 5 ○ (mod_perl) △ PHP 5 ○ (mod_php) ○ (mod_php) ○(mod_php) Python(WSGI) ○ ○ △ Ruby 1.8.x ○ ○ △ Ruby 1.9.x ○ △ Scala(Lift,Play) ○ △ (自力でlib読込) △ 任意言語追加 ○ (DIY) ○ 10
  • 11. Open PaaSのRDBMS対応状況 Cloud Foundry OpenShift Cloudify HSQLDB ○ MySQL ○ ○ ○ PostgreSQL ○ ○ ○ VoltDB ○ 11
  • 12. Open PaaSのNoSQL対応状況 Cloud Foundry OpenShift Cloudify KVS Cassandra ○ Memcached ○ ドキュメント指向 CouchDB ○ MongoDB ○ ○ ○ Redis ○ ○ グラフ Neo4J ○ 12
  • 13. Open PaaSのその他対応状況 Cloud Foundry OpenShift Cloudify MQ ActiveMQ ○ RabbitMQ ○ 大規模処理 Hadoop ○ 全文検索 Elasticsearch ○ Solr ○ その他 Worker ○ (standalone) ○ (worker) 任意の拡張 ○ 13
  • 14. Cloud Foundry based PaaS • Stackato (ActiveState) – http://www.activestate.com/stackato • Iron Foundry (Tier 3) – http://www.ironfoundry.org • AppFog – http://www.appfog.com • PaaS.io – http://paas.io 14
  • 15. 必要なもの • Cloud Foundryの動作環境 – どこかのサービスにアカウントを用意 – あるいは自前 • 弄り回すためのちょっとした知識 – ランタイムやフレームワーク,DB類 – APIs –癖 15
  • 16. 動作環境を自前で用意 • Micro Cloud Foundry – 環境構築済みのVMイメージ • vcap/dev_setup – https://github.com/cloudfoundry/vcap/tree/ master/dev_setup – 依存ツールの状況次第で異常終了する場合も • うまく行かなかったらCoffee break! • BOSH等によって管理しつつデプロイ – https://github.com/cloudfoundry/bosh 16
  • 17. CUI • VMC: The VMware Cloud CLI – https://github.com/cloudfoundry/vmc – `gem install vmc [--pre]` or `apt-get install cloudfoundry-client` – `vmc help [command]` $ vmc target http://api.cloudfoundry.com Successfully targeted to [http://api.cloudfoundry.com] $ vmc login Attempting login to [http://api.cloudfoundry.com] Email: krm@example.org Password: ******** Successfully logged into [http://api.cloudfoundry.com] 17
  • 18. 適当なアプリケーションを用意 $ git clone git://github.com/cloudfoundry/vcap-test-assets.git $ cd vcap-test-asset/java_web/java_tiny_app $ vi ... protected void doGet( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); res.setStatus(200); PrintWriter out = res.getWriter(); out.println( System.getenv("VCAP_APP_HOST") + ":" + System.getenv("VCAP_APP_PORT")); out.close(); } ↓ 18
  • 19. デプロイ ↓ $ cd YOUR_APPS_DIR $ mvn package $ cd target # Java Webの場合,*.warのあるディレクトリ $ vmc push Would you like to deploy from the current directory? [Yn]: Application Name: javawebmeetscf Detected a Java Web Application, is this correct? [Yn]: Application Deployed URL [javawebmeetscf.cloudfoundry.com]: Memory reservation (128M, 256M, 512M, 1G, 2G) [512M]: How many instances? [1]: Bind existing services to 'javawebmeetscf'? [yN]: Create services to bind to 'javawebmeetscf'? [yN]: Would you like to save this configuration? [yN]: ↓ 19
  • 20. 起動完了 ↓ Creating Application: OK Uploading Application: Checking for available resources: OK Packing application: OK Uploading (5K): OK Push Status: OK Staging Application 'javawebmeetscf': OK Starting Application 'javawebmeetscf': OK $ vmc apps +----------------+----+---------+---------------------------------+----------+ | Application | # | Health | URLS | Services | +----------------+----+---------+---------------------------------+----------+ | javawebmeetscf | 1 | RUNNING | javawebmeetscf.cloudfoundry.com | | +----------------+----+---------+---------------------------------+----------+ 20
  • 21. インスタンスを増やす $ vmc instances javawebmeetscf 2 Scaling Application instances up to 2: OK $ vmc apps +----------------+----+---------+---------------------------------+----------+ | Application | # | Health | URLS | Services | +----------------+----+---------+---------------------------------+----------+ | javawebmeetscf | 2 | RUNNING | javawebmeetscf.cloudfoundry.com | | +----------------+----+---------+---------------------------------+----------+ 21
  • 22. 環境変数: VCAP_SERVICES { "mongodb-1.8": [ { "name": "ivanmongo", "label": "mongodb-1.8", "plan": "free", "tags": ["mongodb", "mongodb-1.8", "nosql"], "credentials": { "hostname": "172.30.48.61", "host": "172.30.48.61", "port": 25067, "username": "何らかのUUID", "password": "何らかのUUID", "name": "何らかのUUID", "db": "db" }}]} 22
  • 23. 環境変数: VCAP_APPLICATION { "instance_id": "16進値", "instance_index": 0, "name": "showenvs", "uris": ["showenvs.cloudfoundry.com"], "users": [“krm@example.org"], "version": "bc5c7351500267c234e659b0f978b530bc6fdf28-1", "start": "2012-05-24 06:45:19 +0000", "runtime": "ruby18", "state_timestamp": 1337841919, "port": 6539, "limits": {"fds": 256, "mem": 134217728, "disk": 2147483648}, "host": "172.30.50.22"} 23
  • 24. GUI (Eclipse Extension) • [Help]>[Eclipse Marketplace...] – 但し,対応プロジェクトは Java Web (Servlet Spec 2.5), Spring, Grails, Liftのみ 24
  • 25. 接続先の設定 (1) 1. [Window]>[Show View]>[Servers] 2. “new server wizard” ↑ホストはlocalhostのまま 25
  • 26. 接続先の設定(2) ↑必要に応じて変更 ↓Finish 26
  • 32. Remote System View • ファイルはインスタンス毎に独立 32
  • 36. まず知っておくべき”癖” • ローカルのファイルシステムは非永続的 • DB等の接続先は環境変数で与えられる – 環境変数を直接読むように書き換え – Javaは少々事情が異なる(特にSpring/Play!) • Tunnelによるデータベースの直接操作 – 例: dump済みの既存データの流し込み • サーバでビルドが必要な物は要注意 – gemやnpmのパッケージ”は”よしなに取得 36
  • 37. cloudfoundry-runtime • https://github.com/cloudfoundry/vcap- java/tree/master/cloudfoundry-runtime – プロパティ設定用クラスを提供するライブラリ • たとえばpom.xmlに: <dependency> <groupId>org.cloudfoundry</groupId> <artifactId>cloudfoundry-runtime</artifactId> <version>0.8.1</version> </dependency> 37
  • 38. Springの自動設定 • 同じタイプのサービスは1つに限定される – MySQL, Postgres: javax.sql.DataSource – MongoDB: org.springframework.data.document.mongodb.MongoDbFactory – Redis: org.springframework.data.redis.connection.RedisConnectionFactory – RabbitMQ: org.springframework.amqp.rabbit.connection.ConnectionFactory 38
  • 39. Play!の自動設定 • 単一のRDBと接続 • db.*.driverをよしなに置換 – production||prodで名前が終わる, バインドされた唯一のサービス – 唯一バインドされたサービス 39
  • 40. Java系フレームワーク向け Cloud Foundryプラグイン • Cloud Foundry Maven Plugin – `mvn cf:push` • Grails Cloud Foundry Plugin – `grails install-plugin cloud-foundry` – `grails cf-*` – grails-app/conf/Config.groovyで設定 40
  • 41. サービス一覧を表示 $ vmc services ============== System Services ============== +------------+---------+---------------------------------------+ | Service | Version | Description | +------------+---------+---------------------------------------+ | mongodb | 1.8 | MongoDB NoSQL store | | mysql | 5.1 | MySQL database service | | postgresql | 9.0 | PostgreSQL database service (vFabric) | | rabbitmq | 2.4 | RabbitMQ message queue | | redis | 2.2 | Redis key-value store service | +------------+---------+---------------------------------------+ =========== Provisioned Services ============ +----------------+---------+ | Name | Service | +----------------+---------+ | mysql-e8ccf | mysql | | tekito-service | mongodb | +----------------+---------+ 41
  • 42. サービスとの接続 $ gem install caldecott # ない場合 $ vmc tunnel 1: mongodb-794fd 2: postgresql-454d 3: postgresql-611ee 4: redis-47609 Which service to tunnel to?: 1 Deploying tunnel application 'caldecott'. # 初回だけ (snip.) Getting tunnel connection info: OK Service connection info: username : 3be0e520-11ed-4af1-b005-c078bcec2da2 password : 4de480b9-75e9-4105-9784-6fb50391cd5b name : db ↓ 42
  • 43. mongodump ↓ Starting tunnel to tekito-service on port 10001. 1: none 2: mongodump 3: mongo 4: mongorestore Which client would you like to start?: 2 Launching 'mongodump --host localhost --port 10001 -u 20f75687-7917-4c3b-b2a7- 54d3443342f4 -p 96bdd18e-e125-4f9c-b74a-64130ab65d24 --db db' connected to: localhost:10001 DATABASE: db to dump/db db.system.users to dump/db/system.users.bson 3 objects db.system.indexes to dump/db/system.indexes.bson 1 objects krmtn@kcf-workspace:~$ ls system.indexes.bson system.users.bson 43
  • 44. mongorestore Starting tunnel to tekito-service on port 10001. 1: none 2: mongorestore 3: mongodump 4: mongo Which client would you like to start?: 2 Directory or filename to restore from: dump/db Launching 'mongorestore --host localhost --port 10001 -u 20f75687-7917-4c3b- b2a7-54d3443342f4 -p 96bdd18e-e125-4f9c-b74a-64130ab65d24 --db db dump/db' connected to: localhost:10001 Thu May 24 21:11:14 dump/db/system.users.bson Thu May 24 21:11:14 going into namespace [db.system.users] 3 objects found Thu May 24 21:11:14 dump/db/system.indexes.bson Thu May 24 21:11:14 going into namespace [db.system.indexes] Thu May 24 21:11:14 { name: "_id_", ns: "db.system.users", key: { _id: 1 } } 1 objects found 44
  • 45. mongo Starting tunnel to tekito-service on port 10001. 1: none 2: mongorestore 3: mongo 4: mongodump Which client would you like to start?: 3 Launching 'mongo --host localhost --port 10001 -u 20f75687- 7917-4c3b-b2a7-54d3443342f4 -p 96bdd18e-e125-4f9c-b74a- 64130ab65d24 db' MongoDB shell version: 2.0.4 connecting to: localhost:10001/db > 45
  • 46. None (SSH接続) Starting tunnel to tekito-service on port 10001. 1: none 2: mongorestore 3: mongodump 4: mongo Which client would you like to start?: 1 Open another shell to run command-line clients or use a UI tool to connect using the displayed information. Press Ctrl-C to exit... 46
  • 47. まとめ • PaaSで実行環境やDB周りの構築から開放 • Open PaaSが続々 • CUI嫌いでも大丈夫? 47