Java Cloud Service
を使い倒せ!
Developer Cloud Service
による
継続的デリバリ
⽇日本オラクル株式会社
クラウド・テクノロジー事業統括
Fusion Middleware
事業統括本部
以下の事項は
、
弊社の⼀一般的な製品の⽅方向性に関する概要を説明す
るものです
。
また
、
情報提供を唯⼀一の⽬目的とするものであり
、
いか
なる契約にも組み込むことはできません
。
以下の事項は
、
マテリア
ルやコード
、
機能を提供することをコミットメント(確約)するも
のではないため
、
購買決定を⾏行行う際の判断材料料になさらないで下さ
い
。
オラクル製品に関して記載されている機能の開発
、
リリースお
よび時期については
、
弊社の裁量量により決定されます
。
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
プロジェクトツー
ル
Developer Cloud
のHudsonビルドのアーキテクチャー
Developer Cloud Service
デプロイ
Java Cloud
Service
ビルドスレッドの
プール
(Hudsonスレーブ)
※
3同時スレッドまで
HTTP(S)
インターネット
HTTP(S)
Maven
リポジトリ
Web
コンソール
(Hudson マスター)
VM
VM
VM
VM
VM
VM
•
インターネットアクセス可能
。
アイディア次第で色々なことが可能
。
•
Java Cloudへは専用のデプロイ機能あり
Git
Maven
Developer Cloud
を活⽤用したJava Cloud Serviceの使い倒し
テクニック
1.
継続的デリバリーとテスト⾃自動化で環境をフル稼働
2.
マルチテナントでクラウド実⾏行行環境をシェアして使う
1.
継続的デリバリーとテスト⾃自動化で
Developer Cloud Service
コミットした後は⾃自動的にデプロイされた環境での⾃自動テストまで実⾏行行
Developer Cloud Service
で⾏行行う継続的デリバリー
ブランチ 1
ジョブ1
1.
パッケージ作成(mvn package)
2.
デプロイ (post build action)
Java
Cloud
Service
AP1
ブランチ 2
AP2
コミット1
コミット2
ジョブ2
1.
Webテスト
⾃自動トリガー
⾃自動トリガー
⾃自動トリガー
ブランチ 3
AP3
デプロイ
Webテスト
ポイント
•
コミット後は
Java Cloud
への
デプロイとテストまで⾃自動化
可能
•
Gitリポジトリ数に制限がない
ので
、
アプリケーションのラ
インは細かく分けられる
•
Web
上のコードレビューと
マージ機能でブランチ開発を
促進
•
デプロイ設定を作成(複数可)
–
デプロイ名とアプリケーション名
–
デプロイ先のJava Cloud Serviceの管理理サーバーの
アドレスとポート
–
タイプ:⾃自動デプロイもしくは⼿手動か
–
ジョブ名と⼿手動デプロイの場合はビルド番号
–
ジョブで⽣生成されたアーチファクト
•
デプロイアクションでデプロイ実⾏行行
–
デプロイ/再デプロイ/アンデプロイ
–
アプリケーションのスタート/ストップ
•
ジョブのPost-‐Build AcFonsにデプロイの実⾏行行を
組み⼊入れ可能
Developer Cloud Service
のデプロイ機能
マージ・リクエスト
コードレビュー機能
•
レビュー
–
ブランチに対してのレビュー
–
Developer Cloud Service
プロジェクト内のメンバー
がレビューアを複数指定
–
ソースコード上にレビューコメントを挿⼊入できる
–
レビューの中でコメントを書いて会話をシステム
上で展開
•
マージ
–
Web
のボタンからトピックブランチをターゲット
ブランチにマージ
•
メール通知をサポート
–
リクエストの作成
、
承認
、
却下
、
クローズ
、
キャ
ンセル
、
コメント追加時に通知
レビューコメントを追加
コード上に
リクエスト一覧
コードレビュー
•
Selenium IDE
を使って記録した
WebDriver
テストスクリプト
•
Developer Cloud
はXv[をサポート
。
GUI
なしのFirefoxのSelenium
WebDriver
テストが可能
Developer Cloud
でもできる⾃自動テストテクニック①
Selenium WebDriver
を利利⽤用
•
Apache JMeter
を使ってJava Cloud
Service
に簡易易な負荷テストを実⾏行行
•
Developer Cloud Service
にテストをジョ
ブとして登録し
、
いつでもテストが実
施可能に
•
jmeter-‐maven-‐plugin (h`ps://
github.com/jmeter-‐maven-‐plugin/jmeter-‐
maven-‐plugin)
を利利⽤用すればMavenから
簡単にJMeterのインストールと実⾏行行が
可能
•
JMeter
の結果ファイルをアーチファク
ト保存して結果を参照
Developer Cloud
でもできる⾃自動テストテクニック②
jmeter-‐maven-‐plugin
を利利⽤用
Java Cloud Service
WebLogic
サーバー
Developer Cloud
Service
ビルド
VM
JMeter
多重
Webリクエスト
ジョブ実行
Maven
Central
Repository
download
•
Selenium
テストで多重度度テスト
をしてみたい場合に利利⽤用
•
JMeter
のJUnitサンプラーを利利⽤用
Developer Cloud
でもできる⾃自動テストテクニック③
2.
マルチテナントでクラウド実⾏行行環境
•
コードのリポジトリやブランチが多く
なると実⾏行行環境も増やしたくなる(=
テナント化)
。
•
テナント毎にデータや設定が独⽴立立でき
ることが理理想
。
ただ
、
⼀一般的には管理理
が増えて増やすことができない
。
•
テナント毎にサーバーを⽤用意すると課
⾦金金コストが⾼高くつく
。
•
オラクル製品のマルチテナント機能と
オラクルクラウドの拡張性でソリュー
ションを⾒見見出してみます
。
クラウド開発はマルチテナント!
デプロイ
&テスト
デプロイ
&テスト
デプロイ
&テスト
リポジトリ
X
ブランチ
A
デプロイ
&テスト
デプロイ
&テスト
デプロイ
&テスト
リポジトリ
Y
ブランチ
ブランチ
B
ブランチ
C
•
Database Cloud
はDB12cのマルチテナン
ト機能を利利⽤用するのがベスト
※
High Peformance
以上のエディションが必要
–
Database Cloud
付属のWebコンソールでPDB
が誰でも簡単に追加・削除・クローン可能
•
Java Cloud
の現状バージョン
(WebLogic サーバー12.1.3)のマルチ
テナント化の⽅方法の⼀一つはコンテキス
トルートを分ける⽅方法
※ちなみに最新WebLogicサーバー12.2.1では
マルチテナントが機能として登場!
•
AP
とPDBの追加・削除に加え
、
マッピ
ング(接続設定)の管理理をいかに簡単
にするかがカギ
アプリケーション層とデータベース層のマルチテナントの
実現⽅方法
Java Cloud Service
WebLogicサーバー
Database Cloud Serivce
Oracle Database
PDB1
PDB2
AP
1-‐1
1-‐2
AP
1-‐3
AP
AP2
AP3
PDB2
ブ
ラ
ン
チ
1-‐1
ブ
ラ
ン
チ
1-‐2
ブ
ラ
ン
チ
1-‐3
ブ
ラ
ン
チ
2
ブ
ラ
ン
チ
3
テナントが増えたら環境を拡張可能
マルチテナントのイメージ
•
URL
のルートパスでテナントを分ける
SQL> show pdbs
CON_ID CON_NAME
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
2 PDB$SEED
3 PDB1
4 PDB2
5 PDB3
ブラウザ
Webアプリケーション
データベース
WebLogicサーバー
•
アプリケーションが増えるにつれ
、
データソースの数も増えて
、
使⽤用メモ
リが増加してしまう
•
データソース内の接続は空いているこ
とが多い
。
–
それぞれの接続数を個別にチューニングす
るのは⼿手間がかかる
。
WebLogic
サーバーのPDB接続⽅方法
パターン①:PDB毎にJDBCデータソースを設定
AP1
PDB1
PDB2
AP2
PDB3
AP3
•
データソースは⼀一つで済む
•
接続数のチューニングも⼀一か所
で済む
•
WebLogic
とUCPの機能を利利⽤用し
たコネクション・ラベリング・
コールバックを利利⽤用して実現
WebLogic
サーバーのPDB接続⽅方法
パターン②:単⼀一のデータソースから複数のPDBにアクセス
WebLogicサーバー
AP1
PDB1
PDB2
AP2
PDB3
AP3
•
コネクション・ラベリング・コールバックの
クラスのjarファイルをWebLogic サーバーの
$DOMAIN_HOME/lib
ディレクトリーに配置
•
データソースを作成
–
接続設定のユーザーはCDB共通ユーザーを指定
•
CREATE USER c##test_user1 IDENTIFIED BY
xxxxxx
CONTAINER=ALL;
–
データソースに対してコールバック関数を登録
•
アプリケーション内のプロパティファイルに
使⽤用したい
PDB
名を設定
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<es"));
labels.put("pdbname", appProp.get("pdbname"));
return labels;
}
}
※紙面の都合でコードは簡略化されています
pdb1.war
pdbname
=PDB1
プロパティファイル
pdb2.war
pdbname
=PDB2
プロパティファイル
•
テナント毎にビルドジョブを作成
–
設定を共通化しておけばジョブコピーで簡
単に増加可能
。
•
テナントを分けるための設定箇所
–
weblogic.xml
のcontext-‐root値でURLのルート
パスを設定
–
プロパティファイル内の接続先PDB名
–
デプロイするときのアプリケーション名
(名前は分ける必要あり)
Developer Cloud
のビルドでアプリケーションの
マルチテナント化を楽にする
pdb
1
テナントビルドジョブ
GitのコードリポジトリAをダウンロード
pdb
2
テナントビルドジョブ
<シェルステップ>
weblogic.xmlの置換
<context-‐root>$PDB
<シェルステップ>
weblogic.xmlの置換
<context-‐root>$PDB
コンパイル
コンパイル
pdb.war
pdb.war
pdb1デプロイ設定
pdb2デプロイ設定
パラメータ設定
PDB=pdb
1
パラメータ設定
PDB=pdb
2
<シェルステップ>
プロパティファイル置換
pdbname=$PDB
<シェルステップ>
プロパティファイル置換
pdbname=$PDB
3.
開発で
Java Flight Recorder(JFR)
をフル
•
Java Flight Recorder
で可視化でき
ること(例例)
–
個々のWebリクエストの実⾏行行時間
–
個々のリクエスト中のSQL⽂文と実⾏行行
時間
–
時間のかかったJavaメソッド
※Java Flight RecorderのWebLogic Server
Plugin (Unsupported)
を利利⽤用した場合
※Java Flight Recorderの利利⽤用にはJava Cloud
開発で役⽴立立つJava Flight Recorder
•
課題
–
JFR
ダンプファイルをサーバーから取得する
には慣れが必要
–
慣れている場合でも
、
ダンプファイルを取
得するのに数分かかる(障害解析のときに
は問題ないが
、
フローの⼀一部として常時取
得するには⼿手間)
–
サーバーが複数ある場合
、
それぞれから取
得が必要な場合もある
–
⾃自動テストの結果の⼀一部にダンプファイル
を残す⽅方法がない
Java Flight Recorder
を開発フローの⼀一部に⼊入れる際の課題
ノード1
WebLogic
サーバ
jcmd
JFRダンプ
WebLogic
管理コンソール
診断イメージ出力
SSH
Webブラウザ
scpダウンロード
Java Mission
Controlを使って
分析
Java
Mission
Control
JMX
1.
Webテスト実行
2.
JFRダンプファイル出力を実行
3.
JFRファイルをダウンロード
4.
オフラインで分析
•
簡単・素早くダンプ実⾏行行
–
Web
ブラウザやcurlなどを利利⽤用
•
Storage Cloud
にファイル保存
–
ダンプ実⾏行行時に⾃自動的にOracle Storage
Cloud
にダンプファイルが保存される
•
ダウンロードも簡単
–
Storage Cloud
にあるファイルをJFRダンプマ
ネージャー経由でWebダウンロード
–
ダンプリクエストのレスポンスにダウン
ロードのリンクが含まれ
、
⾃自動テスト結果
にリンクを残せられる
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は従量課金で有料です
ダンプ
ダンプ
参加登録はこちら:
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”
]
};
}
});
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