Java Cloud Service を使い倒せ! Developer Cloud Service による継続的デリバリ 日本オラクル株式会社 クラウド テクノロジー事業統括 Fusion Middleware 事業統括本部 関屋信彦
以下の事項は 弊社の 一般的な製品の 方向性に関する概要を説明するものです また 情報提供を唯 一の 目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を 行行う際の判断材料料になさらないで下さい オラクル製品に関して記載されている機能の開発 リリースおよび時期については 弊社の裁量量により決定されます Oracle と Java は Oracle CorporaFon 及びその 子会社 関連会社の 米国及びその他の国における登録商標です 文中の社名 商品名等は各社の商標または登録商標である場合があります 2
Oracle Developer Cloud Service キーワード 一覧 コード開発 ビルド (Hudson) 実行環境連携 便利機能 プロジェクトツール (private の ) Git リポジトリ マージ リクエスト IDE から簡単接続 GitHub 連携 Oracle OTN Maven リポジトリ シェル Maven Ant Gradle Selenium (private の ) Maven リポジトリ Java Cloud Service へデプロイ ApplicaAon Container Cloud へデプロイ ( 予定 ) Webhooks メール通知 デフォルト コード レビューア プロジェクト & メンバー登録 Wiki Issues 3
Developer Cloud の Hudson ビルドのアーキテクチャー Developer Cloud Service Web コンソール (Hudson マスター ) デプロイ ビルドスレッドのプール (Hudson スレーブ ) 3 同時スレッドまで HTTP(S) Java Cloud Service VM VM VM Git Maven VM VM VM HTTP(S) インターネット インターネットアクセス可能 アイディア次第で色々なことが可能 Java Cloud へは専用のデプロイ機能あり Java Cloud へは HTTP(S) が通るので Java Cloud 上のアプリケーションのテストが可能 Maven リポジトリ 4
Developer Cloud を活 用した Java Cloud Service の使い倒しテクニック 1. 継続的デリバリーとテスト 自動化で環境をフル稼働 2. マルチテナントでクラウド実 行行環境をシェアして使う 3. 開発で Java Flight Recorder をフル活 用する 方法 5
1. 継続的デリバリーとテスト 自動化で環境をフル稼働 6
Developer Cloud Serviceで 行行う継続的デリバリー コミットした後は 自動的にデプロイされた環境での 自動テストまで実 行行 ポイント コミット後は Java Cloud へのデプロイとテストまで 自動化可能 Git リポジトリ数に制限がないので アプリケーションのラインは細かく分けられる Web 上のコードレビューとマージ機能でブランチ開発を促進 Developer Cloud Service コミット1 コミット2 ブランチ 1 自動トリガー 自動トリガー ジョブ1 1. パッケージ作成 (mvn package) デプロイ 2. デプロイ (post build action) 自動トリガー Webテスト ジョブ2 1. Webテスト ブランチ 2 ブランチ 3 Java Cloud Service AP1 AP2 AP3 7
Developer Cloud Service のデプロイ機能 Java Cloud Service にデプロイ デプロイ設定を作成 ( 複数可 ) デプロイ名とアプリケーション名 デプロイ先の Java Cloud Service の管理理サーバーのアドレスとポート タイプ : 自動デプロイもしくは 手動か ジョブ名と 手動デプロイの場合はビルド番号 ジョブで 生成されたアーチファクト デプロイアクションでデプロイ実 行行 デプロイ / 再デプロイ / アンデプロイ アプリケーションのスタート / ストップ ジョブの Post- Build AcFons にデプロイの実 行行を組み 入れ可能 8
マージ リクエストコードレビュー機能 レビュー ブランチに対してのレビュー Developer Cloud Service プロジェクト内のメンバーがレビューアを複数指定 ソースコード上にレビューコメントを挿 入できる レビューの中でコメントを書いて会話をシステム上で展開 マージ Web のボタンからトピックブランチをターゲットブランチにマージ リクエスト一覧 コードレビュー メール通知をサポート リクエストの作成 承認 却下 クローズ キャンセル コメント追加時に通知 コード上にレビューコメントを追加 9
Developer Cloud でもできる 自動テストテクニック 1 Selenium WebDriver を利利 用 Selenium IDE を使って記録した WebDriver テストスクリプト Developer Cloud は Xv[ をサポート GUI なしの Firefox の Selenium WebDriver テストが可能 10
Developer Cloud でもできる 自動テストテクニック 2 jmeter- maven- plugin を利利 用 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 Service JMeter ビルド VM ジョブ実行 Java Cloud Service 多重 Webリクエスト download Maven Central Repository WebLogic サーバー 11
Developer Cloud でもできる 自動テストテクニック 3 JMeter + Selenium Selenium テストで多重度度テストをしてみたい場合に利利 用 JMeter の JUnit サンプラーを利利 用 12
2. マルチテナントでクラウド実 行行環境をチーム内でシェア 13
クラウド開発はマルチテナント! コードのリポジトリやブランチが多くなると実 行行環境も増やしたくなる (= テナント化 ) リポジトリ X ブランチ A デプロイ & テスト デプロイ & テスト テナント毎にデータや設定が独 立立できることが理理想 ただ 一般的には管理理が増えて増やすことができない テナント毎にサーバーを 用意すると課 金金コストが 高くつく オラクル製品のマルチテナント機能とオラクルクラウドの拡張性でソリューションを 見見出してみます ブランチ B ブランチ C リポジトリ Y ブランチ デプロイ & テスト デプロイ & テスト デプロイ & テスト デプロイ & テスト 14
アプリケーション層とデータベース層のマルチテナントの実現 方法 Database Cloud は DB12c のマルチテナント機能を利利 用するのがベスト High Peformance 以上のエディションが必要 Database Cloud 付属の Web コンソールで PDB が誰でも簡単に追加 削除 クローン可能 Java Cloud の現状バージョン (WebLogic サーバー 12.1.3) のマルチテナント化の 方法の 一つはコンテキストルートを分ける 方法 ちなみに最新 WebLogic サーバー 12.2.1 ではマルチテナントが機能として登場! AP と PDB の追加 削除に加え マッピング ( 接続設定 ) の管理理をいかに簡単にするかがカギ AP 1-1 ブランチ 1-1 Database Cloud Serivce Oracle Database PDB1 AP 1-2 Java Cloud Service WebLogic サーバー ブランチ 1-2 テナントが増えたら環境を拡張可能 AP 1-3 ブランチ 1-3 PDB2 AP2 ブランチ 2 PDB2 AP3 ブランチ 3 15
マルチテナントのイメージ URL のルートパスでテナントを分ける ブラウザ Web アプリケーションデータベース SQL> show pdbs CON_ID CON_NAME - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 PDB$SEED 3 PDB1 4 PDB2 5 PDB3 16
WebLogic サーバーの PDB 接続 方法パターン 1:PDB 毎に JDBC データソースを設定 アプリケーションが増えるにつれ データソースの数も増えて 使 用メモリが増加してしまう データソース内の接続は空いていることが多い それぞれの接続数を個別にチューニングするのは 手間がかかる AP1 AP2 WebLogic サーバー PDB1 PDB2 AP3 PDB3 17
WebLogic サーバーの PDB 接続 方法パターン 2: 単 一のデータソースから複数の PDB にアクセス データソースは 一つで済む 接続数のチューニングも 一か所で済む WebLogic と UCP の機能を利利 用したコネクション ラベリング コールバックを利利 用して実現 AP1 AP2 WebLogic サーバー PDB1 PDB2 AP3 PDB3 18
UCP コネクション ラベリング コールバックの設定 方法 コネクション ラベリング コールバックのクラスの jar ファイルを WebLogic サーバーの $DOMAIN_HOME/lib ディレクトリーに配置 データソースを作成 接続設定のユーザーはCDB 共通ユーザーを指定 CREATE USER c##test_user1 IDENTIFIED BY xxxxxx CONTAINER=ALL; データソースに対してコールバック関数を登録 アプリケーション内のプロパティファイルに使 用したい PDB 名を設定 pdb1.war pdb2.war プロパティファイルプロパティファイル pdbname pdbname =PDB1 =PDB2 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; } } 紙面の都合でコードは簡略化されています 19
Developer Cloudのビルドでアプリケーションのマルチテナント化を楽にする テナント毎にビルドジョブを作成 設定を共通化しておけばジョブコピーで簡単に増加可能 テナントを分けるための設定箇所 weblogic.xml の context- root 値で URL のルートパスを設定 プロパティファイル内の接続先 PDB 名 デプロイするときのアプリケーション名 ( 名前は分ける必要あり ) Git のコードリポジトリ A をダウンロード pdb1 テナントビルドジョブ パラメータ設定 PDB=pdb1 < シェルステップ > プロパティファイル置換 pdbname=$pdb < シェルステップ > weblogic.xml の置換 <context- root>$pdb コンパイル pdb.war pdb2 テナントビルドジョブ パラメータ設定 PDB=pdb2 < シェルステップ > プロパティファイル置換 pdbname=$pdb < シェルステップ > weblogic.xml の置換 <context- root>$pdb コンパイル pdb.war pdb1 デプロイ設定 pdb2 デプロイ設定 pdb1 Java Cloud Service pdb2 20
3. 開発で Java Flight Recorder(JFR) をフル活 用する 方法 21
開発で役 立立つ Java Flight Recorder Java Flight Recorder で可視化できること ( 例例 ) 個々の Web リクエストの実 行行時間 個々のリクエスト中の SQL 文と実 行行時間 時間のかかった Java メソッド キャプチャされたサーブレットリクエストの統計 Java Flight Recorder の WebLogic Server Plugin (Unsupported) を利利 用した場合 Java Flight Recorder の利利 用には Java Cloud Service のエディションが Enterprise EdiFon 以上である必要があります キャプチャされた SQL 実行の統計 22
リクエストの詳細を把握可能 23
Java Flight Recorder を開発フローの 一部に 入れる際の課題 課題 JFR ダンプファイルをサーバーから取得するには慣れが必要 慣れている場合でも ダンプファイルを取得するのに数分かかる ( 障害解析のときには問題ないが フローの 一部として常時取得するには 手間 ) サーバーが複数ある場合 それぞれから取得が必要な場合もある 自動テストの結果の 一部にダンプファイルを残す 方法がない Java Mission Control SSH Web ブラウザ JMX jcmd WebLogic 管理コンソール診断イメージ出力 1. Webテスト実行 2. JFRダンプファイル出力を実行 3. JFRファイルをダウンロード 4. オフラインで分析 ノード 1 WebLogic サーバ JFR ダンプ scp ダウンロード Java Mission Control を使って分析 Java Flight Recorder のダンプ出力時のアクセス 24
JFR ダンプマネージャー ( 自作実験ツール ) +Oracle Storage Cloud Service 簡単 素早くダンプ実 行行 Web ブラウザや curl などを利利 用 Storage Cloud にファイル保存 ダンプ実 行行時に 自動的に Oracle Storage Cloud にダンプファイルが保存される ダウンロードも簡単 Storage Cloud にあるファイルを JFR ダンプマネージャー経由で Web ダウンロード ダンプリクエストのレスポンスにダウンロードのリンクが含まれ 自動テスト結果にリンクを残せられる Storage Cloudは従量課金で有料です GitHubで公開予定 Developer Cloud ジョブ ダンプ指示 img ブラウザからダウンロード ダンプ指示ダウンロード Java Cloud ノード 1 JFR ダンプマネージャー WebLogic 管理サーバ REST img WebLogic 診断イメージファイル (JFR ダンプを含む ) REST WebLogic サーバ 1 Java Cloud ノード 2 WebLogic サーバ 2 Storage Cloud img img ダンプ ダンプ img img アップロード 25
クラウド テクノロジーを語ろう 第 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 ] }; } }); 参加登録はこちら :http://ora.cl/91t 26
Oracle Cloud ラーニング サブスクリプション Oracle Cloud (PaaS) の導入から運用まで クラウドを活用するために必要なスキルを身につけた "Cloud Ready" なエンジニアを育成するための学習プラットフォーム l Oracle Cloud Service の活用に必要なスキルを学習できるビデオ トレーニング l 製品アップデートに応じて最新のコンテンツに更新 l 1 年間のサブスクリプション形式 Oracle Placorm as a Service ラーニング サブスクリプション DBCS と JCS は 日本語講義 視聴可能 定価 : 116,856 円 ( 税込 ) 50% Off 特別価格 : 58,428 円 ( 税込 ) 1 ユーザー /1 年間利用可能 多彩な Oracle PaaS の活用方法をトータルにカバー すべての Oracle PaaS 技術者にオススメします! 学習内容 : Oracle Cloud Plauorm as a Service の使用方法 Oracle PaaS の多様なサービスを活用する利点 Oracle PaaS の運用管理 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 Plauorm as a Service (PaaS) ラーニング サブスクリプションの最小購入ユーザー数は 5 です 本特別価格は 2015 年 12 月 31 日までにご購入される方に対して適用されます また 他の割引契約 またはキャンペーンと併用することはできません ただいま無償体験版公開中! Oracle Cloud インスタンスの作成やクラウド上の Oracle Database, WebLogic Server の起動方法など 技術者が円滑に Oracle Cloud (PaaS) をはじめるためのポイントを学習できる Gevng Started を視聴可能 アクセスはこちらから educafon.oracle.co.jp/cls_paas 27
28