integrated cloud applications and platform services ......oracleとjavaは、oracle*corporaon*...
TRANSCRIPT
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Java Cloud Serviceを使い倒せ! Developer Cloud Serviceによる 継続的デリバリ
⽇日本オラクル株式会社 クラウド・テクノロジー事業統括 Fusion Middleware事業統括本部
関屋 信彦
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
以下の事項は、弊社の⼀一般的な製品の⽅方向性に関する概要を説明するものです。また、情報提供を唯⼀一の⽬目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を⾏行行う際の判断材料料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量量により決定されます。
2
OracleとJavaは、Oracle CorporaFon 及びその⼦子会社、関連会社の⽶米国及びその他の国における登録商標です。 ⽂文中の社名、商品名等は各社の商標または登録商標である場合があります。
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 3
Oracle Developer Cloud Service キーワード⼀一覧
コード開発
• (privateの) Gitリポジトリ • マージ・リクエスト • IDEから簡単接続 • GitHub連携 • Oracle OTN Mavenリポジトリ
ビルド(Hudson)
• シェル • Maven • Ant • Gradle • Selenium • (privateの)Maven リポジトリ
実行環境連携
• Java Cloud Serviceへデプロイ • ApplicaAon Container Cloudへデプロイ(予定)
便利機能
• Webhooks • メール通知 • デフォルト・コード・レビューア
• プロジェクト & メンバー登録 • Wiki • Issues
プロジェクトツール
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 4
Developer CloudのHudsonビルドのアーキテクチャー
Developer Cloud Service デプロイJava Cloud Service
ビルドスレッドのプール
(Hudsonスレーブ) ※3同時スレッドまで HTTP(S)
インターネット
HTTP(S)
Maven リポジトリ
Webコンソール (Hudson マスター)
VM VM VM
VMVMVM
• インターネットアクセス可能。アイディア次第で色々なことが可能。 • Java Cloudへは専用のデプロイ機能あり • Java CloudへはHTTP(S)が通るのでJava Cloud 上のアプリケーションのテストが可能
Git Maven
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Developer Cloudを活⽤用したJava Cloud Serviceの使い倒し テクニック
1. 継続的デリバリーとテスト⾃自動化で環境をフル稼働
2. マルチテナントでクラウド実⾏行行環境をシェアして使う
3. 開発でJava Flight Recorderをフル活⽤用する⽅方法
5
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
1. 継続的デリバリーとテスト⾃自動化で環境をフル稼働
6
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Developer Cloud Service
7
コミットした後は⾃自動的にデプロイされた環境での⾃自動テストまで実⾏行行Developer Cloud Serviceで⾏行行う継続的デリバリー
ブランチ 1
ジョブ11. パッケージ作成(mvn package)2. デプロイ (post build action)
Java Cloud Service
AP1
ブランチ 2 AP2
コミット1 コミット2
ジョブ21. Webテスト
⾃自動トリガー ⾃自動トリガー
⾃自動トリガー
ブランチ 3 AP3
デプロイ
Webテスト
ポイント• コミット後はJava Cloudへのデプロイとテストまで⾃自動化可能• Gitリポジトリ数に制限がないので、アプリケーションのラインは細かく分けられる• Web上のコードレビューとマージ機能でブランチ開発を促進
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• デプロイ設定を作成(複数可) – デプロイ名とアプリケーション名 – デプロイ先のJava Cloud Serviceの管理理サーバーのアドレスとポート
– タイプ:⾃自動デプロイもしくは⼿手動か – ジョブ名と⼿手動デプロイの場合はビルド番号 – ジョブで⽣生成されたアーチファクト
• デプロイアクションでデプロイ実⾏行行 – デプロイ/再デプロイ/アンデプロイ – アプリケーションのスタート/ストップ
• ジョブのPost-‐Build AcFonsにデプロイの実⾏行行を組み⼊入れ可能
8
Developer Cloud Serviceのデプロイ機能 Java Cloud Serviceにデプロイ
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
マージ・リクエスト コードレビュー機能
• レビュー – ブランチに対してのレビュー – Developer Cloud Serviceプロジェクト内のメンバーがレビューアを複数指定
– ソースコード上にレビューコメントを挿⼊入できる – レビューの中でコメントを書いて会話をシステム上で展開
• マージ – Webのボタンからトピックブランチをターゲットブランチにマージ
• メール通知をサポート – リクエストの作成、承認、却下、クローズ、キャンセル、コメント追加時に通知 コード上に
レビューコメントを追加
9
リクエスト一覧
コードレビュー
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• Selenium IDEを使って記録したWebDriverテストスクリプト • Developer CloudはXv[をサポート。GUIなしのFirefoxのSelenium WebDriverテストが可能
10
Developer Cloudでもできる⾃自動テストテクニック① Selenium WebDriverを利利⽤用
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• Apache JMeterを使ってJava Cloud Serviceに簡易易な負荷テストを実⾏行行
• Developer Cloud Serviceにテストをジョブとして登録し、いつでもテストが実施可能に
• jmeter-‐maven-‐plugin (h`ps://github.com/jmeter-‐maven-‐plugin/jmeter-‐maven-‐plugin)を利利⽤用すればMavenから簡単にJMeterのインストールと実⾏行行が可能
• JMeterの結果ファイルをアーチファクト保存して結果を参照
11
Developer Cloudでもできる⾃自動テストテクニック② jmeter-‐maven-‐plugin を利利⽤用
Java Cloud Service
WebLogic サーバー
Developer Cloud Service
ビルドVM
JMeter
多重 Webリクエスト
ジョブ実行
Maven Central
Repository
download
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• Seleniumテストで多重度度テストをしてみたい場合に利利⽤用 • JMeterのJUnitサンプラーを利利⽤用
12
Developer Cloudでもできる⾃自動テストテクニック③ JMeter + Selenium
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
2. マルチテナントでクラウド実⾏行行環境をチーム内でシェア
13
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• コードのリポジトリやブランチが多くなると実⾏行行環境も増やしたくなる(=テナント化)。
• テナント毎にデータや設定が独⽴立立できることが理理想。ただ、⼀一般的には管理理が増えて増やすことができない。
• テナント毎にサーバーを⽤用意すると課⾦金金コストが⾼高くつく。
• オラクル製品のマルチテナント機能とオラクルクラウドの拡張性でソリューションを⾒見見出してみます。
14
クラウド開発はマルチテナント!
デプロイ&テスト
デプロイ&テスト
デプロイ&テスト
リポジトリX ブランチA デプロイ
&テスト
デプロイ&テスト
デプロイ&テスト
リポジトリY ブランチ
ブランチB
ブランチC
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• Database CloudはDB12cのマルチテナント機能を利利⽤用するのがベスト ※High Peformance以上のエディションが必要 – Database Cloud付属のWebコンソールでPDBが誰でも簡単に追加・削除・クローン可能
• Java Cloudの現状バージョン(WebLogic サーバー12.1.3)のマルチテナント化の⽅方法の⼀一つはコンテキストルートを分ける⽅方法 ※ちなみに最新WebLogicサーバー12.2.1ではマルチテナントが機能として登場!
• APとPDBの追加・削除に加え、マッピング(接続設定)の管理理をいかに簡単にするかがカギ
15
アプリケーション層とデータベース層のマルチテナントの 実現⽅方法
Java Cloud Service WebLogicサーバー
Database Cloud Serivce Oracle Database
PDB1 PDB2
AP 1-‐1
AP 1-‐2
AP 1-‐3 AP2 AP3
PDB2
ブランチ1-‐1
ブランチ1-‐2
ブランチ1-‐3
ブランチ 2
ブランチ 3
テナントが増えたら環境を拡張可能
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
マルチテナントのイメージ• URLのルートパスでテナントを分ける
16
SQL> show pdbs CON_ID CON_NAME -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ 2 PDB$SEED 3 PDB1 4 PDB2 5 PDB3
ブラウザ Webアプリケーション データベース
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
WebLogicサーバー• アプリケーションが増えるにつれ、データソースの数も増えて、使⽤用メモリが増加してしまう
• データソース内の接続は空いていることが多い。 – それぞれの接続数を個別にチューニングするのは⼿手間がかかる。
17
WebLogicサーバーのPDB接続⽅方法 パターン①:PDB毎にJDBCデータソースを設定
AP1 PDB1
PDB2AP2
PDB3AP3
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• データソースは⼀一つで済む • 接続数のチューニングも⼀一か所で済む • WebLogicとUCPの機能を利利⽤用したコネクション・ラベリング・コールバックを利利⽤用して実現
18
WebLogicサーバーのPDB接続⽅方法 パターン②:単⼀一のデータソースから複数のPDBにアクセス
WebLogicサーバー
AP1 PDB1
PDB2AP2
PDB3AP3
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• コネクション・ラベリング・コールバックのクラスのjarファイルをWebLogic サーバーの$DOMAIN_HOME/libディレクトリーに配置
• データソースを作成 – 接続設定のユーザーはCDB共通ユーザーを指定 • CREATE USER c##test_user1 IDENTIFIED BY xxxxxx CONTAINER=ALL;
– データソースに対してコールバック関数を登録 • アプリケーション内のプロパティファイルに使⽤用したいPDB名を設定
19
UCPコネクション・ラベリング・コールバックの設定⽅方法import oracle.ucp.jdbc.ConnecAonLabelingCallback; import oracle.ucp.jdbc.LabelableConnecAon; public class PDBSwitchLabelingCallback implements ConnecAonLabelingCallback { public boolean configure(ProperAes reqLabels, Object conn) { String valStr = (String) reqLabels.get("pdbname"); Statement s = ((ConnecFon) conn).createStatement(); s.executeUpdate("ALTER SESSION SET CONTAINER = " + valStr); LabelableConnecFon lconn = (LabelableConnecFon) conn; lconn.applyConnecFonLabel("pdbname", valStr); ……………………….. } public ProperAes getRequestedLabels() { ProperFes labels = new ProperAes(); ProperFes appProp = new ProperAes(); appProp.load(Thread.currentThread().getContextClassLoader() .getResourceAsStream("app.proper
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
Java Cloud Service
• テナント毎にビルドジョブを作成 – 設定を共通化しておけばジョブコピーで簡単に増加可能。
• テナントを分けるための設定箇所 – weblogic.xmlのcontext-‐root値でURLのルートパスを設定
– プロパティファイル内の接続先PDB名 – デプロイするときのアプリケーション名(名前は分ける必要あり)
20
Developer Cloudのビルドでアプリケーションの マルチテナント化を楽にする
pdb1テナントビルドジョブ
GitのコードリポジトリAをダウンロード
pdb2テナントビルドジョブ
weblogic.xmlの置換 $PDB
weblogic.xmlの置換 $PDB
コンパイル コンパイル
pdb.war pdb.war
pdb1 pdb2
pdb1デプロイ設定 pdb2デプロイ設定
パラメータ設定 PDB=pdb1
パラメータ設定PDB=pdb2
プロパティファイル置換
pdbname=$PDB
プロパティファイル置換
pdbname=$PDB
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
3. 開発でJava Flight Recorder(JFR)をフル活⽤用する⽅方法
21
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• Java Flight Recorderで可視化できること(例例) – 個々のWebリクエストの実⾏行行時間 – 個々のリクエスト中のSQL⽂文と実⾏行行時間 – 時間のかかったJavaメソッド
※Java Flight RecorderのWebLogic Server Plugin (Unsupported)を利利⽤用した場合
※Java Flight Recorderの利利⽤用にはJava Cloud Service のエディションがEnterprise EdiFon以上である必要があります。
22
開発で役⽴立立つJava Flight Recorder
キャプチャされたサーブレットリクエストの統計
キャプチャされたSQL実行の統計
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 23
リクエストの詳細を把握可能
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• 課題 – JFRダンプファイルをサーバーから取得するには慣れが必要
– 慣れている場合でも、ダンプファイルを取得するのに数分かかる(障害解析のときには問題ないが、フローの⼀一部として常時取得するには⼿手間)
– サーバーが複数ある場合、それぞれから取得が必要な場合もある
– ⾃自動テストの結果の⼀一部にダンプファイルを残す⽅方法がない
24
Java Flight Recorderを開発フローの⼀一部に⼊入れる際の課題
ノード1
WebLogicサーバjcmd
JFRダンプWebLogic 管理コンソール 診断イメージ出力
SSH
Webブラウザ
scpダウンロード
Java Mission Controlを使って分析
Java Mission Control JMX
Java Flight Recorderのダンプ出力時のアクセス
1. Webテスト実行 2. JFRダンプファイル出力を実行 3. JFRファイルをダウンロード 4. オフラインで分析
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
• 簡単・素早くダンプ実⾏行行 – Webブラウザやcurlなどを利利⽤用
• Storage Cloudにファイル保存 – ダンプ実⾏行行時に⾃自動的にOracle Storage Cloudにダンプファイルが保存される
• ダウンロードも簡単 – Storage CloudにあるファイルをJFRダンプマネージャー経由でWebダウンロード
– ダンプリクエストのレスポンスにダウンロードのリンクが含まれ、⾃自動テスト結果にリンクを残せられる
25
JFRダンプマネージャー(⾃自作実験ツール) +Oracle Storage Cloud Service
Java Cloud ノード1
WebLogicサーバ1
WebLogic 管理サーバ
Java Cloud ノード2 WebLogicサーバ2
JFRダンプマネージャー
Developer Cloud ジョブ
ダンプ指示
Storage Cloud
img
img
img img
ダンプ指示
ブラウザからダウンロード
REST
REST
img… WebLogic診断イメージファイル(JFRダンプを含む)
アップロード
ダウンロード
img
GitHubで公開予定※Storage Cloudは従量課金で有料です
ダンプ
ダンプ
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 26
参加登録はこちら:http://ora.cl/91T
クラウド・テクノロジーを語ろう
第1回 Meetup 2016年年1⽉月29⽇日 19:00〜~@オラクル⻘青⼭山センター
var community = React.createClass({init : function(){
return {date : “2016-‐‑‒1-‐‑‒29”,location : “OAC”,goal : [
“Learn”,“Connect”,“Have Fun”
]};
}});
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 27
Oracle Cloud ラーニング・サブスクリプション
【ご注意】 Oracle Plauorm as a Service (PaaS) ラーニング・サブスクリプションの最小購入ユーザー数は 5 です。 本特別価格は、2015 年 12 月 31 日までにご購入される方に対して適用されます。また、他の割引契約、またはキャンペーンと併用することはできません。
定価: 116,856 円 (税込)
特別価格: 58,428 円 (税込) 1ユーザー/1年間利用可能
Oracle Cloud (PaaS) の導入から運用まで、クラウドを活用するために必要なスキルを身につけた "Cloud Ready" なエンジニアを育成するための学習プラットフォーム
l Oracle Cloud Service の活用に必要なスキルを学習できるビデオ・トレーニングl 製品アップデートに応じて最新のコンテンツに更新l 1年間のサブスクリプション形式
ただいま 無償体験版公開中!
Oracle Cloud インスタンスの作成やクラウド上の Oracle Database, WebLogic Server の
起動方法など、技術者が円滑に Oracle Cloud (PaaS) をはじめるためのポイントを学
習できる『Gevng Started』を視聴可能
アクセスはこちらからeducaFon.oracle.co.jp/cls_paas
Oracle Placorm as a Service ラーニング・サブスクリプション 多彩な Oracle PaaS の活用方法をトータルにカバー。す
べての Oracle PaaS 技術者にオススメします!
学習内容:
【対応サービス】Database Cloud, Java Cloud, Business Intelligence Cloud, Process Cloud, Mobile Cloud, IntegraFon Cloud, Documents Cloud, Messaging Cloud, Internet Of Things Cloud, SOA Cloud, Database Backup Cloud, Developer Cloud
• Oracle Cloud Plauorm as a Service の使用方法• Oracle PaaS の多様なサービスを活用する利点• Oracle PaaS の運用管理• Oracle PaaS を使ったアプリケーションの開発とデプロイ• 既存のアプリケーションの Oracle PaaS への移行 など
DBCSとJCSは 日本語講義 視聴可能
50% Off
-
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 28