integrated cloud applications and platform services ......oracleとjavaは、oracle*corporaon*...

29
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Cloud Service を使い倒せ! Developer Cloud Service による 継続的デリバリ 本オラクル株式会社 クラウド・テクノロジー事業統括 Fusion Middleware事業統括本部 関屋 信彦

Upload: others

Post on 03-Sep-2020

2 views

Category:

Documents


0 download

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