Cloud Foundry x Wagby

1,541 views

Published on

Spring Day 2016 (Japan) presentation

Published in: Software
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,541
On SlideShare
0
From Embeds
0
Number of Embeds
1,304
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Cloud Foundry x Wagby

  1. 1. Cloud Foundry x Wagby 12:00 – 13:00 ROOM 1-4 株式会社ジャスミンソフト 贄 良則
  2. 2. 結論 • WagbyでビルドしたWebアプリケーション (war) は Cloud Foundry で動作する。 • 本格的な運用に際しては、次のサービスを別途、 契約する必要がある。 • データベース • ログ保管 • バイナリファイル保存 • 全文検索(のインデックス) • 多くのアプリケーションをスケーラブルに安定運用 させたいという大企業にメリットがある。 2
  3. 3. ジャスミンソフトの紹介 3
  4. 4. 今のジャスミンソフト • 超高速開発ツール「Wagby」の開発に注力する パッケージベンダー。 • 社員6名、うち開発者は3名。(+ 役員1名) • 創業から15年が経過。Wagbyの販売から10年目。 • 直販をせず、全国で20社のパートナーと協業体制 を敷く。 4 Wagby の開発者を募集しています! “日本発の「超高速開発ツール」で、世界で勝負したい...だと...?”
  5. 5. 社史 年月 出来事 2001.03 沖縄県の第三セクター方式で運営されていた「株式会社トロピカルテクノ センター」という研究施設の情報開発部員が独立。社員4名 (+役員1名) 。 2004.10 沖縄振興開発金融公庫からの出資受け入れ。資本金5,000万円。 2006.05 Wagby 発表。東京での営業活動を本格化する。 2011.11 Wagby ユーザ会の設立。 2012.03 日経コンピュータ特集記事「超高速開発が日本を救う」で紹介される。 2012.06 第一回目の Wagby Developer Day を開催。以降、毎年開催。 2013.08 超高速開発コミュニティ設立。発起人として参加。 2016.05 ガートナー社「Cool Vendors in Application Development, 2016」に選出。 2016.11 Wagby Developer Day 2016 開催。コクヨ、Pivotalとの連携を発表。 5
  6. 6. Wagbyの紹介 6
  7. 7. Wagby (ワグビィ) とは 7 視点 説明 概要 Web ベースのエンタープライズアプリケーションをノンプログラミング で超高速に開発するツールです。設計情報から業務ルール、画面、 データベーススキーマなど、すべてを自動生成します。 メリット 詳細設計から単体テストまでの工数を大幅に削減することに加え、 実際に動作するシステムを使ってレビューすることで、要件の修正も すぐに反映できるようになります。 実装技術 Java (Spring / Hibernate) + JSP (HTML, JavaScript, CSS) 出荷開始 2006年5月 バージョン 7 導入実績 318社 (2016.11現在) 用途 基幹業務全般。(多くのユーザ/大量データ/トランザクション) 特徴 設計情報からソースコードを自動生成する製品は他にもあるが、生 成コードを自由にカスタマイズできるため柔軟性がある。
  8. 8. 開発の流れ 8 設計 自動生成 実行 Webブラウザ上で設計情報を 入力。データ定義、関連、計 算式、入力チェックなど、す べての要件を備えています。 設計情報DB(リポジトリ) ビルドによってJavaコードを 完全自動生成。このコードは カスタマイズが可能なように デザインされています。 Webベースの本格的な画面と 機能を実現します。ワークフ ロー、全文検索、地図連携等、 多くのニーズを満たします。
  9. 9. クラウド環境でWagbyを 動作させる方法 9
  10. 10. 3つのアプローチ Linux Shell Script Docker Cloud Foundry 形態 IaaS IaaS PaaS 動作環境 Cent OS 6 Dockerを起動できるOS OSを意識しない 概要 Shell Script を使い、wagbyapp の転送とTomcatの起動、停止 を行う。 Java,データベースなど必要 なミドルウェアをインストール する Dockerfile を用意する。 Dockerコマンドで仮想コンテ ナを実行する。 cfコマンドを使ってwagbyapp の転送とTomcatの起動、停 止を行う。 メリット WagbyDesignerから操作でき る。 標準技術である。 デメリット Shell Script の保守性に難があ る。カスタマイズが難しく、OS のバージョンに縛られる。 その技術を学ぶ必要がある。 将来 Shell Script 本体をWagby代理 店に移譲済み。運用はWagby 代理店が行っている。 技術資料はWDD2014で公 開済み。協業の話は現在、 なし。 各社と協業して運用体制を 構築できないか、検討中。 10
  11. 11. Cloud Foundryとは 11
  12. 12. Platform as a Service(PaaS) • ソフトウェアを構築および稼動させるための土台と なるプラットフォームを、インターネット経由のサー ビスとして提供する。 • 従来は、サーバを運用する場合、通信回線やサー バマシンが必要となった。また、サーバマシン内の OSやデータベース等のソフトウェアも準備する必 要があった。 • これらをインターネット上のサービスとして、ソフト ウェアを実行する環境を提供する。 12
  13. 13. Cloud Foundryとは • オープンソースのPlatform as a Service(PaaS)ソフトウェ ア • Pivotal、EMC、VMWare、IBM、HP、SAP、NTT、Fujitsu等が参 加するCloud Foundry Foundationにて開発されている。 • ソースコードのライセンスはApache License 2.0 • Wagbyが使用しているJavaだけでなく、Ruby, Node.js, Scala, Go, Python, PHPといった多くの言語をサポー トしている。 • MySQLやPostgreSQLといった複数のサービスに対応。 • 特定のベンダにロックインされることなく、使うことがで きる。 13
  14. 14. IaaS(Infrastructure as a Service)利 用との比較 • IaaSとは、通信回線、マシンをインターネットで提供す るサービス。 • 提供事業者としては、さくらのVPSやAmazonEC2などが あげられる。 • IaaS環境にWagbyをインストールする場合 • OSのインストールと設定(ファイアウォールやサービスへの登 録など) • 各種ミドルウェアのインストールと設定(データベースソフトの インストールなど) • Wagbyで生成したウェブアプリケーションを運用マシンに転 送し、実行する。 • PaaSではこれらの設定を自動的もしくは簡単に行える。 14
  15. 15. Wagbyが生成したウェブ アプリケーションの実行 15
  16. 16. Pivotal Web Services • 今回はCloud Foundryのサービスを提供しているPivotal Web Servicesのfree trialを紹介。 • クレジットカードの登録なしで、$87まで無料で試用できる。[2016.11月現在] • 2GBメモリのアプリを2か月間利用する使用料に相当 16
  17. 17. Pivotal Cloud Foundry • 提供しているPivotalは2013年にEMC、ヴィエムウェ ア、GEの出資により設立された会社。 • 商用版のCloud Foundry(以下PCF)を提供している。 • オープンソース版のCloud Foundryと比べると、エ ンタープライズ向けにサービスやツール、加えてサ ポートなどが充実している。 • Pivotal Cloud FoundryをPublic Cloudにて提供して いるサービスがPivotal Web Servicesである。 17
  18. 18. PCF Dev • PCFを開発用としてローカルマシンでも実行できる。 • 仮想マシンイメージを配布している。 18
  19. 19. Pivotal Web Serviceのアカウント を作成する • 作成手順の詳細は下記ページを参照 • https://github.com/Pivotal-Japan/cf- workshop/blob/master/pivotal-web-services.md • おおまかな手順: • 氏名、メールアドレス、パスワードの入力 • アクティベーションメールの確認 • Free Trialの開始、携帯番号を入力し、SMSに送られる Verification Codeを確認 • Cloud Foundry CLIのインストール • コマンドラインで操作するツール。このツールを用いて、ウェブアプリ ケーションのデプロイや起動、停止等を行う。 19
  20. 20. Pivotal Web Serviceのアカウント を作成する • https://run.pivotal.io/ にアクセスし、SIGN UP FOR FREEをクリックする。 20
  21. 21. Pivotal Web Serviceのアカウント を作成する • Create accountをクリックする。 21
  22. 22. Pivotal Web Serviceのアカウント を作成する • First name, Last name(氏名)、Email address、Passwordを入力する。 • Sign Upをクリック 22
  23. 23. Pivotal Web Serviceのアカウント を作成する • 確認のためのメールが送られる。 23
  24. 24. Pivotal Web Serviceのアカウント を作成する • メールを受信し、Verify your email addressのリンクをク リックする。 24
  25. 25. Pivotal Web Serviceのアカウント を作成する • 「I Have read and agree to the Terms of Service for Pivotal Web Services」に チェックを入れる。 • 「Next: Claim Your Trial」を クリック 25
  26. 26. Pivotal Web Serviceのアカウント を作成する • CountryにJapanを指定 • Mobile Numberに携帯電 話の番号を入力 • Send me my codeをクリッ ク • SMSでverification codeが 送付されます。 26
  27. 27. Pivotal Web Serviceのアカウント を作成する • SMSでverification codeが送付されます。 27
  28. 28. Pivotal Web Serviceのアカウント を作成する • verification codeを入力し て、Submitボタンを押しま す。 28
  29. 29. Pivotal Web Serviceのアカウント を作成する • Organization名を入力して、 Start Free Trialをクリック • Organization名はプロジェ クト名に相当する。 • イニシャルなどを使って、 グローバルで一意な名前 にする。 29
  30. 30. Pivotal Web Serviceのアカウント を作成する • コンソール画面が表示さ れる。 30
  31. 31. Cloud Foundry CLIのインストール • 左側のToolsリンクをクリッ ク 31
  32. 32. Cloud Foundry CLIのインストール • Download and Install the CLIの株のリストボッ クスから、使用するOSを 選択し、ダウンロードボ タンをクリック • インストーラがダウン ロードされる。 32
  33. 33. Cloud Foundry CLIのインストール • インストーラを実行する。Nextをクリック 33
  34. 34. Cloud Foundry CLIのインストール • インストールフォルダの指定。Nextをクリック 34
  35. 35. Cloud Foundry CLIのインストール • インストール前の確認。Installをクリック 35
  36. 36. Cloud Foundry CLIのインストール • インストール完了。Finishをクリック 36
  37. 37. Cloud Foundry CLIのインストール • cf loginコマンドでログオンする。 37
  38. 38. Pivotal Web Servicesへcfコマンド でログオン • インストールしたCloud Foundry CLIにてログオン を行う。 • Cloud Foundry の操作は、 cfコマンドを使います。 • 一度ログオンすると、ロ グオンは開発機のシャッ トダウンなど行っても、保 持されます。 • アプリケーションのデプ ロイ(push)以外は管理画 面からできます。 38 $ cf login -a api.run.pivotal.io API endpoint: api.run.pivotal.io Email> [メールアドレス] Password> [パスワード] Authenticating... OK Targeted org [Organization名] Targeted space development API endpoint: https://api.run.pivotal.io (API version: 2.63.0) User: [メールアドレス] Org: [Organization名] Space: development
  39. 39. アプリケーションのデプロイ • 下記の手順で行う。 • manifest.ymlの作成 • アプリケーション本体のWARファイルの作成 • アプリケーションのデプロイ 39
  40. 40. manifest.ymlの作成 • ウェブアプリケーションの実行に関する情報を記述する。 • 今回は下記の内容を指定する。 • env以下は環境変数 • CATALINA_OPTSはウェブアプリケーション起動時のオプション。wagbyappbinsetenv.bat の記述と同様。 • java.security.auth.login.configのパスは、運用サーバ上の絶対パスを指定している。 • JBP_CONFIG_TOMCATは使用するTomcatのバージョン。WagbyR7.10ではTomcat8を用い ているので、8.0の最新を使うように指定している。 40 env: CATALINA_OPTS: -Djava.security.auth.login.config=/home/vcap/app/.java-buildpack/tomcat/webapps/ROOT/W EB-INF/app_jaas.config -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dsun.nio.cs.map=x- windows-iso2022jp/ISO-2022-JP -Duser.timezone=Asia/Tokyo JBP_CONFIG_TOMCAT: '[tomcat: { version: 8.0.+ }]'
  41. 41. アプリケーションのデプロイ • WARファイルwagby-demo.warを作成する。[省略] • cfコマンドを実行する。 • 弊社環境で5分ほどかかった。 41 cf push wagby -p wagby-demo.war -f manifest.yml –b java_buildpack
  42. 42. アプリケーションのデプロイ 42 $ cf push wagby -p wagby-demo.war -f manifest.yml -b java_buildpack Using manifest file manifest.yml Creating app wagby in org murajasmine / space development as mura@jasminesoft.co.jp... OK Using route wagby.cfapps.io Binding wagby.cfapps.io to wagby... OK Uploading wagby... Uploading app files from: C:cygwin64tmpunzipped-app159773815 Uploading 16.6M, 13427 files Done uploading OK Starting app wagby in org murajasmine / space development as mura@jasminesoft.co.jp... Downloading java_buildpack... Downloaded java_buildpack Creating container Successfully created container Downloading app package... Downloaded app package (87.2M) Staging... -----> Java Buildpack Version: v3.10 (offline) | https://github.com/cloudfoundry/java- buildpack.git#193d6b7 -----> Downloading Open Jdk JRE 1.8.0_111 from https://java- buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_111.tar.gz (found in cache) Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.1s) -----> Downloading Open JDK Like Memory Calculator 2.0.2_RELEASE from https://java-bui ldpack.cloudfoundry.org/memory-calculator/trusty/x86_64/memory-calculator-2.0.2_REL EASE.tar.gz (found in cache) Memory Settings: -Xss349K -Xms681574K -XX:MetaspaceSize=104857K -Xmx681574K - XX:MaxMetaspaceSize=104857K -----> Downloading Spring Auto Reconfiguration 1.10.0_RELEASE from https://java- buildpack.cloudfoundry.org/auto-reconfiguration/auto-reconfiguration- 1.10.0_RELEASE.jar (found in cache) Modifying /WEB-INF/web.xml for Auto Reconfiguration -----> Downloading Tomcat Instance 8.0.38 from https://java- buildpack.cloudfoundry.org/tomcat/tomcat-8.0.38.tar.gz (found in cache) Expanding Tomcat Instance to .java-buildpack/tomcat (0.1s) -----> Downloading Tomcat Lifecycle Support 2.5.0_RELEASE from https://java- buildpack.cloudfoundry.org/tomcat-lifecycle-support/tomcat-lifecycle-support- 2.5.0_RELEASE.jar (found in cache) -----> Downloading Tomcat Logging Support 2.5.0_RELEASE from https://java- buildpack.cloudfoundry.org/tomcat-logging-support/tomcat-logging-support- 2.5.0_RELEASE.jar (found in cache) -----> Downloading Tomcat Access Logging Support 2.5.0_RELEASE from https://java- buildpack.cloudfoundry.org/tomcat-access-logging-support/tomcat-access-logging- support-2.5.0_RELEASE.jar (found in cache) Exit status 0 Staging complete
  43. 43. アプリケーションのデプロイ 43 Uploading droplet, build artifacts cache... Uploading build artifacts cache... Uploading droplet... Uploaded build artifacts cache (108B) Uploaded droplet (133.5M) Uploading complete Destroying container Successfully destroyed container 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 1 of 1 instances running App started OK App wagby was started using this command `CALCULATED_MEMORY=$($PWD/.java-build pack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.2_RELEASE -memorySizes= metaspace:64m..,stack:228k.. -memoryWeights=heap:65,metaspace:10,native:15,stack:10 -memoryInitials=heap:100%,metaspace:100% -stackThreads=300 -totMemory=$MEMORY _LIMIT) && JAVA_HOME=$PWD/.java-buildpack/open_jdk_jre JAVA_OPTS="-Djava.io.tm pdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjav a.sh $CALCULATED_MEMORY -Djava.endorsed.dirs=$PWD/.java-buildpack/tomcat/endors ed -Daccess.logging.enabled=false -Dhttp.port=$PORT" exec $PWD/.java-buildpack/tomca t/bin/catalina.sh run` Showing health and status for app wagby in org murajasmine / space development as mura@jasminesoft.co.jp... OK requested state: started instances: 1/1 usage: 1G x 1 instances urls: wagby.cfapps.io last uploaded: Wed Nov 2 10:35:21 UTC 2016 stack: cflinuxfs2 buildpack: java_buildpack state since cpu memory disk details #0 running 2016-11-02 07:38:32 PM 150.8% 637M of 1G 307.7M of 1G
  44. 44. Webページにアクセスする 44
  45. 45. cfコマンド 45
  46. 46. cfコマンドの使い方 • 下記ページに使い方の詳細の日本語版が用意されている。 • http://cli.cloudfoundry.org/ja-JP/cf/ • 以下、代表的なコマンドを紹介する。 46
  47. 47. アプリケーションのデプロイ(cf push) • cf push APP_NAME [-p PATH] [-f MANIFEST_PATH] • APP_NAME:アプリケーション名、cfコマンドでこの アプリケーションを指定する際に使われる。また、 ホスト名のデフォルト値となる。 • -p PATH:アプリ・ディレクトリーまたはアプリ・ディレ クトリーの内容の zip ファイルへのパス。WARファ イルを指定する。 • -f MANIFEST_PATH:マニフェストファイルへのパス • マニフェストファイルの詳細は後程説明する。 47
  48. 48. アプリケーションのデプロイ(cf push) • cf push APP_NAME ... [-b BUILDPACK_NAME] • -b BUILDPACK_NAME:ビルドパックを指定する。 • WagbyのようなJavaを用いる場合はjava_buildpack を指定する。この場合デフォルトのバージョンの java_buildpackを用いる。 • 任意のjava_buildpackを用いる場合、下記のように 指定する。 • https://github.com/cloudfoundry/java- buildpack.git#v3.1.0 • 指定がない場合はアップロードしたアプリケーショ ンから自動的に判断されるが、若干時間がかかる。 48
  49. 49. アプリケーションのデプロイ(cf push) • cf push APP_NAME ... [-t TIMEOUT] [--no-start] • -t TIMEOUT: CLI がアプリケーションの開始を待つ 最大時間 (秒) 。起動に時間がかかる場合、起動 に失敗してしまう。この場合は数字を増やす。 • --no-start:プッシュ後に自動的にアプリを開始しな い。 • cf start APP_NAMEで起動できる。 49
  50. 50. アプリケーションのデプロイ(cf push) • cf push APP_NAME ... [--hostname HOST] [-- random-route] • --hostname HOST:ホスト名を任意に指定する。 • ホスト名はPivotal Web Services全体で一意になる必要 がある。 • --random-route:ホスト名をランダムに決定する。こ のオプションを指定することで重複しないホスト名 が割り当てられる。 50
  51. 51. アプリケーションのデプロイ(cf push) • cf push APP_NAME ... [-i NUM_INSTANCES] [-k DISK] [-m MEMORY] • -i NUM_INSTANCES :インスタンスの数 • Wagbyでは、複数インスタンス起動する場合クラスタ設定が必要 • -k DISK:ディスク制限 (例: 256M、1024M、1G) • -m MEMORY:メモリー制限 (例: 256M、1024M、1G) • 運用中にメモリ制限を超えると、自動的にアプリケーションを再起 動する。 • -m 2Gを指定したときに、アプリケーションのデプロイ時に下記のよ うなエラーが発生することがあった。Trialのため? • Error restarting application: Server error, status code: 500, error code: 10001, message: An unknown error occurred. • -m 1Gでpushしたのち、cf scaleコマンドで後程増やすとうまくいった。 51
  52. 52. アプリケーションのインスタンス数、ディ スク制限、メモリ制限の変更(cf scale) • cf scale APP_NAME [-i NUM_INSTANCES] [-k DISK] [-m MEMORY] • -i NUM_INSTANCES :インスタンスの数 • -k DISK:ディスク制限 (例: 256M、1024M、1G) • -m MEMORY:メモリー制限 (例: 256M、1024M、 1G) • cf scaleコマンドを実行すると、上記の制限を変更し、 再起動します。 52
  53. 53. マニフェストファイル • 環境変数やcf pushで指定するオプションなどを記 述できる。 • cf pushのみで実行するとデフォルトのマニフェスト ファイル(カレントディレクトリのmanifest.yml)を読み 込む 53
  54. 54. マニフェストファイルの例 54 name: wagby path: wagby-demo.war buildpack: java_buildpack memory: 1G env: CATALINA_OPTS: -Djava.security.auth.login.config=/home/vcap/app/.java-buildp ack/tomcat/webapps/ROOT/WEB-INF/app_jaas.config -Dorg.apache.jasper.compil er.Parser.STRICT_QUOTE_ESCAPING=false -Dsun.nio.cs.map=x-windows-iso2022jp/ ISO-2022-JP -Duser.timezone=Asia/Tokyo JBP_CONFIG_TOMCAT: '[tomcat: { version: 8.0.+ }]' JBP_CONFIG_OPEN_JDK_JRE: '{jre: { version: 1.8.0_111 }}'
  55. 55. アプリケーションを確認(cf apps) 55 $ cf apps Getting apps in org murajasmine / space development as mura@jasminesoft.co.jp... OK name requested state instances memory disk urls wagby started 1/1 1G 1G wagby.cfapps.io
  56. 56. アプリケーションの詳細を確認(cf app APP_NAME) 56 Showing health and status for app wagby in org murajasmine / space development as mura@jasmin esoft.co.jp... OK requested state: started instances: 1/1 usage: 1G x 1 instances urls: wagby.cfapps.io last uploaded: Fri Nov 4 02:48:32 UTC 2016 stack: cflinuxfs2 buildpack: java_buildpack state since cpu memory disk details #0 running 2016-11-04 11:51:28 AM 5.9% 702.7M of 1G 307.7M of 1G
  57. 57. アプリケーションの削除、開始、停止、再起動 • cf delete APP_NAME:アプリケーションの削除 • cf start APP_NAME:アプリケーションの開始 • cf stop APP_NAME:アプリケーションの停止 • cf restart APP_NAME:アプリケーションの再起動 57
  58. 58. サーバのログ取得(cf logs APP_NAME) • cf logsコマンドで、コンソールに出力されるメッセー ジを確認できます。 58 $ cf logs wagby --recent | head Connected, dumping recent logs for app wagby in org murajasmine / space development as mura@ jasminesoft.co.jp... 2016-11-02T19:33:29.36+0900 [API/1] OUT Created app with guid xxxxxxxx-xxxx-xxxx-xxxx-xxxxx xxxxxxx2016-11-02T19:33:33.99+0900 [API/5] OUT Updated app with guid xxxxxxxx-xxxx-xxxx-xx xx-xxxxxxxxxxxx ({"route"=>"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", :verb=>"add", :relation=>"rout es", :related_guid=>"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}) 2016-11-02T19:35:57.17+0900 [API/3] OUT Updated app with guid xxxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx ({"state"=>"STARTED"}) 2016-11-02T19:35:57.56+0900 [STG/0] OUT Downloading java_buildpack... 2016-11-02T19:35:57.63+0900 [STG/0] OUT Downloaded java_buildpack
  59. 59. サーバにssh接続(cf ssh APP_NAME) • cf sshコマンドで、サーバにsshログオンすることが できます。 59 C:Usersmura>cf ssh wagby vcap@77bd9cc9-0ee3-4c58-7ba3-61885172c84a:~$ ls app logs staging_info.yml tmp vcap@77bd9cc9-0ee3-4c58-7ba3-61885172c84a:~$ ls -l total 16 drwxr-xr-x 48 vcap root 4096 Nov 2 10:36 app drwxr-xr-x 2 vcap vcap 4096 Nov 2 10:36 logs -rw-r--r-- 1 vcap vcap 680 Nov 2 10:36 staging_info.yml drwxr-xr-x 2 vcap vcap 4096 Nov 2 10:36 tmp vcap@77bd9cc9-0ee3-4c58-7ba3-61885172c84a:~$
  60. 60. サーバにscp,sftp接続 • cf ssh-codeコマンドで一時的なsshパスワードを取 得することで、scpやsftpも行うことができる。 • 詳しくは下記URLを参考 • https://docs.cloudfoundry.org/devguide/deploy- apps/ssh-apps.html 60
  61. 61. サーバ内のフォルダ構成 • /home/vcap/appフォルダ内にデプロイしたウェブアプリケーショ ンが格納されている。また、実行時に作成されるファイルも出力 される。 • app/WEB-INF/dataフォルダにHSQLDBのデータベースファイルが ある。 • app/.java-buildpack内にJDKやTomcat等のファイルがある。 • cf push時に自動的に設定されたファイル • .java-buildpack内にWagby関連のファイルがある。 • exportフォルダ:インポート・エクスポート画面使うエクスポートファイル • upload_dirフォルダ:ファイル項目にてアップロードしたファイル • tomcat/logsフォルダ:system.log等のログファイル 61
  62. 62. 注意する点 • アプリケーションを停止や再起動すると、ディスク の内容はすべて消える。 • アプリケーションを起動したときは、最初にpushし たときの状態となる。よって、停止する前にscpコマ ンド等でデータベースファイル等をバックアップす る必要がある。 • 外部データベースを用いることで、アプリケーションを停 止しても情報が保持される。 62
  63. 63. 外部データベースを使 用したウェブアプリケー ション 63
  64. 64. 概要 • データベースのサービスを作成する。 • サービスをアプリケーションにbindする。 • アプリケーションのデプロイ(cf push)を行う。 64
  65. 65. サービス • Cloud Foundryでは、データベースやメッセージ キューなどをサービスとして提供している。 • サービスの契約によってデータベースが作成され、 すぐに利用できる状態となる。 • アプリケーションのデプロイ時に、データベースの サーバ名やアカウント、パスワード等の設定が自 動的に反映される。 • サービスはPivotalとは別の会社(サービス提供者) が提供している。 65
  66. 66. サービス • Pivotal Web Servicesで提供されているサービスは 下記ページに説明がある。 • https://console.run.pivotal.io/marketplace 66
  67. 67. マーケットプレイス • cf marketplaceコマンドで作成できるサービスの一覧が表示される。 • cleardbがMySQL、elephantsqlがPostgreSQLを提供しているサービス • plansはそれぞれデータベースサイズ等の制限。*がついているプランは有料 67 $ cf marketplace service plans description ... cleardb spark, boost*, amp*, shock* Highly available MySQL for your Apps. ... elephantsql turtle, panda*, hippo*, elephant* PostgreSQL as a Service ...
  68. 68. マーケットプレイス 68 $ cf marketplace -s cleardb service plan description free or paid spark Great for getting started and developing your apps free boost Best for light production or staging your applications paid amp For apps with moderate data requirements paid shock Designed for apps where you need real MySQL reliability, power and throughput paid
  69. 69. サービスの作成(cf create-service ) • cf create-service cleardb spark mysql • 最初の引数がサービス名(cleardb) • 次の引数がプラン名(spark) • 最後の引数が任意のサービス名。 69
  70. 70. サービスの確認(cf services) • cf servicesコマンドで作成したサービスを確認できる。 70 $ cf services Getting services in org murajasmine / space development as mura@jasminesoft.co. jp... OK name service plan bound apps last operation mysql cleardb spark create succeeded
  71. 71. アプリケーションにサービスを割り当て • cf bind-service APP_NAME SERVICE_NAME • アプリケーションにサービスを割り当てる。 • manifest.yml内に下記のように指定することで、デプロ イ時に割り当てることができる。 71 service: - mysql
  72. 72. アプリケーションのデプロイ(cf push) • cf push時にデータベースの設定が自動的に反映され る。但し、データベースの接続設定を下記にて指定し ていること。 • SpringのCloudConfig • SpringのCloud Profile • Springのapplication context内にbeanとして設定 • 詳しくは下記を参照 • https://docs.cloudfoundry.org/buildpacks/java/spring- service-bindings.html • Wagbyはデータベースの接続設定は、context.xmlに 書いており、上記方法に合致しないため、このままで は使えない。 • 今回は動作確認として、手動で設定した。 72
  73. 73. Wagbyアプリケーションでの現状の手順 • データベースのサービスの作成 • サービスをアプリケーションにbindする。 • 仮のアプリケーションをデプロイし、データベース の接続情報を取得する。 • 取得方法は下記ドキュメントを参考 • https://docs.cloudfoundry.org/devguide/services/migrat e-db.html • データベースの接続情報を反映したアプリケーショ ンをデプロイ 73
  74. 74. データベースのサービスを作成する • cf create-service cleardb spark mysql 74
  75. 75. 仮のアプリケーションをデプロイする • cf push • manifest.ymlは下記の通り 75 name: wagby path: wagby-demo.war buildpack: java_buildpack memory: 1G env: CATALINA_OPTS: -Djava.security.auth.login.config=/home/vcap/app/.java-buildpack/tomcat/web apps/ROOT/WEB-INF/app_jaas.config -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPIN G=false -Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP -Duser.timezone=Asia/Tokyo JBP_CONFIG_TOMCAT: '[tomcat: { version: 8.0.+ }]' JBP_CONFIG_OPEN_JDK_JRE: '{jre: { version: 1.8.0_111 }}' service: - mysql
  76. 76. データベースの接続情報を確認 • cf envコマンドでVCAP_SERVICES環境変数を確認する。 76 $ cf env Wagby System-Provided: { "VCAP_SERVICES": { "cleardb": [ { "credentials": { "hostname": "us-cdbr-iron-east-04.cleardb.net", "jdbcUrl": "jdbc:mysql://us-cdbr-iron-east-04.cleardb.net/ad_7bd06a4032699f7?user=b67e03b16dd79au0026password=73173b9e", "name": "ad_7bd06a4032699f7", "password": “xxxxxxxx", "port": "3306", "uri": "mysql://b67e03b16dd79a:73173b9e@us-cdbr-iron-east-04.cleardb.net:3306/ad_7bd06a4032699f7?reconnect=true", "username": "b67e03b16dd79a" }, ...
  77. 77. データベースの接続情報を確認 • "hostname": "us-cdbr-iron-east-04.cleardb.net“ • ホスト名 • "name": "ad_7bd06a4032699f7“ • データベース名 • "password": " xxxxxxxx “ • パスワード • "port": "3306“ • ポート番号 • "username": "b67e03b16dd79a“ • ユーザ名 77
  78. 78. データベース情報を設定する • WagbyDesignerにて、データベース情報を設定し、ビル ドする。 • 環境 - データベース - メインにて、下記を設定 • データベース:MySQL • 接続URL:jdbc:mysql://us-cdbr-iron-east- 04.cleardb.net/ad_7bd06a4032699f7?useUnicode=true&char acterEncoding=utf8&relaxautoCommit=true&zeroDateTimeB ehavior=convertToNull • ユーザ名:b67e03b16dd79a • パスワード:xxxxxxxx • MySQLのJDBCドライバを配置する。 • ROOTデプロイとする。 • 環境 - プロジェクト情報 - プロジェクト識別子を未指定 78
  79. 79. データベースの初期化 • ビルド後、開発機にてinit_db.batを実行する。 • 開発機からcleardbに直接アクセスし、初期テーブ ルを作成する。 79
  80. 80. WARファイルの作成 • 同様の手順でwagby-demo.warファイルを作成する。 • 内蔵データベースを使用した場合と、下記が異な る。 • hsqldb.jarの代わりに、MySQLのJDBCドライバを WEB-INFlibにコピーする。 • context.xmlに記述する接続情報が、MySQLとなっ ている。 80
  81. 81. アプリケーションをデプロイする。 • cf push • マニフェストファイルは「仮のアプリケーションをデ プロイする」と同様 81
  82. 82. 今後の課題 82
  83. 83. WARファイル作成の自動化 • 今回はWARファイルを手動で作成したが、これを Wagby側で自動的に作成する仕組みを検討したい。 • また、cf push等のコマンド実行をWagbyDesigner上 で行うといったことも検討する。 83
  84. 84. 外部データベース設定の自動化 • Wagbyのデータベース設定をSpring Frameworkの 流儀に合う方法(CloudConfig等)に改善する。 • ウェブアプリケーションの起動時に VCAP_SERVICES 環境変数を解析して context.xml に反映するスクリ プトを作成する方法も考えられる。 • 標準的な方法ではないため、好ましくないか? 84
  85. 85. ローカルファイルの扱い • export, upload_dir, tomcat/logsといったローカル ファイルは、アプリケーションを停止すると消えてし まう。 • これらの扱いを検討中 • ログを扱う専用サービスを利用する。 • ファイルはネットワークストレージサービスにアップロー ドする。 85
  86. 86. 再び、結論 • WagbyでビルドしたWebアプリケーション (war) は Cloud Foundry で動作する。 • 本格的な運用に際しては、次のサービスを別途、 契約する必要がある。 • データベース • ログ保管 • バイナリファイル保存 • 全文検索(のインデックス) • 多くのアプリケーションをスケーラブルに安定運用 させたいという大企業にメリットがある。 86

×