[Java] Java 9 Release Now Available!

原文はこちら。
https://blogs.oracle.com/java/java-9-release-now-available

Java 9には、開発者がJava SEプラットフォームを小さなデバイス向けにスケールダウンでき、パフォーマンスとセキュリティを向上させ、ライブラリや大規模アプリケーションの構築およびメンテナンスがより簡単になるモジュールシステムを含め、150を超える新機能が導入されています。

Javaプラットフォームの主要機能リリースであり、オープンなレビュー、週次ビルド、およびOpenJDKコミュニティとJCPを通じた、Oracleエンジニアと世界中のJava開発者コミュニティとの広範な連携を含む業界全体の開発努力の結果がJava 9です。
Java SE Downloads (Java 9)
http://www.oracle.com/technetwork/java/javase/overview/index.html
JDK 9のリリースとそのリリースノートは以下からどうぞ。
Java 9 expert insightsではこのリリースの主要機能を説明しています。ぜひご覧ください。
Java 9 Expert Insights
https://www.oracle.com/java/java9-screencasts.html
  • Small Language Changes in Java Development Kit 9 (Joe Darcy)
  • Modules in Java Development Kit 9 (Alex Buckley)
  • Introducing JShell (Robert Field)
  • A (Re)introduction to the G1 Garbage Collector (Paul Su) 
  • Java in a World of Containers (Paul Sandoz)
  • Collections Framework Enhancements in Java Development Kit 9 (Stuart Marks)
  • Changes to the Java Development Kit Release Model (Aurelio Garcia-Ribeyro)
Javaリリースのペースの変更が予定されています。Java PlatformチーフアーキテクトのMark Reinholdは以下のように説明しています。
“After Java 9 we will adopt a strict, time-based model with a new feature release every six months, update releases every quarter, and a long-term support release every three years...”
(Java 9以降、厳密な時間ベースのモデルを採用する予定です。(具体的には)新機能をリリースは6か月ごと、アップデートリリースは四半期ごと、長期サポート(long-term support)リリースは3年ごとに提供する予定です)
続きは以下のURLをどうぞ。
Moving Java Forward Faster
https://mreinhold.org/blog/forward-faster
Java 9の新機能やアプリケーションの移行方法などをより理解するために、以下のリソースをチェックしてください。
Java Magazineでは、2号にわたってJava 9を取り上げています。無料で購読できますので、ぜひ登録してください!
Get Java Magazine!
http://www.oracle.com/technetwork/java/javamagazine/index.html

[Cloud] Introducing Ravello on Oracle Cloud Infrastructure

原文はこちら。
https://blogs.oracle.com/introducing-ravello-on-oracle-cloud-infrastructure


Ravelloは常に企業がオンプレミスのVMwareアプリケーションをパブリッククラウドに移行しやすくしてきました。本日、Ravello on Oracle Cloud Infrastructureがご利用いただけるようになったことを発表できわくわくしています。これまでよりもずっと高パフォーマンスかつスケーラブルになりました。この新製品によって、パフォーマンス要件の厳しいエンタープライズアプリケーションのクラウドへ”lift-and-shift”(移行)が現実のものになります。
Ravello Service
https://cloud.oracle.com/ravello
Oracle Cloud Infrastructure
https://cloud.oracle.com/cloud-infrastructure

Accelerate Move of Data Center Production Apps to Cloud

企業は通常、仮想化されたホストと物理的なホスト間で本番環境のアプリケーションを実行しています。こうしたアプリケーションをパブリッククラウドに移行しようとした場合、以下のような非常に長い移行プロセスをたどります。
  • 物理ホストを仮想マシンに変換
  • VMware VMを再構築してイメージをクラウド化
  • クラウドベースのネットワークモデルを活用するため、アプリケーション設定を再構築
こうした作業には時間、お金がかかり、その投資にもかかわらず失敗することもあります。Ravelloは業界をリードするNested VirtualizationやSoftware Defined Networking ( Overlay Network) テクノロジーを活用し、基盤のパブリッククラウドを(自社)データセンターであるかのようにして、こうした移行を簡単にします。
High Performance Nested Virtualization
http://cloud.oracle.com/ravello/technology/virtualization
Software Defined Networking (Overlay Network)
http://cloud.oracle.com/ravello/technology/overlay-network
Ravello on Oracle Cloud Infrastructureを使えば、企業は自社のVMwareデータセンター・ベースのアプリケーションをプラットフォームの再構築やネットワークの再構成をする必要はありません。Oracle Cloud Infrastructureに「そのまま」移行し、物理コンポーネントを単にベアメタルサーバーに移動します。 VMware VMと物理ホストを同じクラウド上で実行できるこの独自の機能により、企業のクラウドへの移行(Journey)は迅速、簡単、かつ予測できるものなります。

Data Center-Like Capabilities on Public Cloud

Ravelloは、次世代のNested Hypervisor(HVX)を使用してOracle Cloud Infrastructureでデータセンターのような機能を実現します。HVXは3つのコンポーネントで構成されています。
  1. Nested virtualization engine変更を加えずに、基盤となるクラウド上でVMware VMを実行
  2. Networking overlayパブリッククラウドではサポートされていないクリーンなレイヤ2ネットワークをゲストVMに提供(ブロードキャストおよびマルチキャスト機能を含む)。
  3. Storage overlay基盤となるクラウドストレージを抽象化し、ブロックデバイスをVMware VMに公開
HVXのネストされた仮想化エンジンは、クラウド上でVMware VMを実行する際に比類のないパフォーマンスを提供する3つのモード(ハードウェア・アシスト、ベアメタル・ダイレクト、およびソフトウェア・アシスト)をサポートします。

Figure 1: HVX Nested Virtualization Modes
Hardware-assisted nested virtualization(ハードウェア・アシスト)
Oracle Cloud Infrastructureは、仮想化拡張機能をサポートする次世代の高速ハードウェア上で動作します。これらの拡張機能を使うと、複数のゲストOSが同じ基盤となるハードウェアを安全かつ効率的に共有することができます。HVXは、これらのハードウェアアシストCPU命令セットを使用して、基盤となるクラウドハードウェア上で直接nested virtualizationを実行するため、前世代のHVXに比べて大幅なパフォーマンスが改善しています。通常、クラウドプロバイダーは、ハードウェア支援の仮想化拡張をゲストVMに公開しないため、nested virtualizationモードで実行する場合顧客が認識できるパフォーマンスに制限があります。しかし、Oracle Cloud Infrastructure上でRavelloを実行すると、こうしたハードウェア・アシスト仮想化拡張機能に完全にアクセスできます。そのため、パフォーマンスが向上します。

Directly on Bare Metal(ベアメタル直結)
Oracle Cloud Infrastructureでは、HVXはベアメタルサーバー上での直接実行もサポートしています。中間のハイパーバイザー層を排除することで、HVXはネイティブのパフォーマンスに近い性能を出すことができます。

Software assisted nested virtualization(ソフトウェア・アシスト)
HVXは、ハードウェア仮想化拡張を利用できないクラウド上での利用を考慮し、binary translation with direct executionと呼ばれるソフトウェアベースのnested virtualizationテクノロジを使用して、VMware VMを実行します。このテクノロジは、幅広いワークロードで許容される優れたパフォーマンスを提供します。

Unleashed Performance & Scalability for Apps

Ravello on Oracle Cloud Infrastructureは、ハードウェア・アシストnested virtualizationのおかげで、最大14倍のパフォーマンス向上を実現します。HVXをベアメタル上で直接実行すると、さらなるパフォーマンス向上を実現します。このようなパフォーマンスの向上により、企業はRavelloを使用してOracle Cloud Infrastructureで本番用のVMwareアプリを簡単に実行できるようになりました。

また、企業での需要が高まるにつれて、アプリはその需要に対応するために拡張する必要がありますが、Ravello on Oracle Cloud Infrastructureを使用すれば、企業は1 VMあたり最大32個までvCPUを割り当てたり、また水平方向には数千個のVMを配置したりしてアプリケーションをスケールすることができます。

Try It for Yourself

Ravello on Oracle Cloud Infrastructureを試したくなりましたか?無料トライアルにサインアップしてご連絡ください。
Oracle Cloud Trial Page
https://cloud.oracle.com/ja_JP/tryit

[Java] Java EE 8 and GlassFish 5.0 Released!

原文はこちら。
https://blogs.oracle.com/theaquarium/java-ee-8-is-final-and-glassfish-50-is-released

Java EE 8のオープンソース参照実装であるGlassFish 5,0の一般提供、そしてJava EE 8仕様ならびにその傘下にある仕様(JAX-RS 2.1、Servlet 4.0、CDI 2.0、JSON-B 1.0、Bean Validation 2.0など)が最終化され承認されたことを発表できうれしく思っています。
Java EE 8にはプラットフォームに素敵な機能が追加されています。
  • HTTP/2のサポートを含むServlet 4.0 API
  • 新たなJSON binding APIを含む、JSONサポートの強化
  • 新たなREST Reactive Client API
  • 非同期CDIイベント
  • 新たな可搬性のあるSecurity API
  • Server-Sent Eventsのサポート(クライアントおよびサーバー側)
  • Java SE 8の機能のサポート(例えばDate & Time API、Streams API、アノテーションの強化)、など
本日、GlassFish 5.0でこれらの新機能を利用することができます。願わくば、今後Java EE 8アプリケーションサーバが増えることを願っています。Java EE 8を始めるにあたり有用と思われるリソースを末尾に付けておきます。
このリリースで直面した難題の一つに、旧来のJava.netインフラストラクチャから開発サイクルの途中でGitHubに移行したことがあります。これは必ずしも簡単ではありませんでしたが、今となっては明らかにこのような最新のソフトウェア共同開発プラットフォームのメリットがわかります。コード調査が今やたったの1個のリンクでよくなったからです。願わくば、GitHubの採用で開発者にってプラットフォームがよりアクセスしやすくなることを願っています。
Java EE - Java Enterprise Edition
http://github.com/javaee/
Java EE 8は実にたくさんの人々が関わったチームワークのたまものです。
  • 全てのJCPスペックリードとExpert Groupのメンバー
  • Java EEを構成する様々な参照実装の開発に関わった全ての人々
  • 様々なJava EE実装者
  • Java EEコミュニティ全体
  • そして、GlassFish自体を開発するOracleのチームや開発インフラストラクチャの管理チームのような、裏方作業をしてくれたその他の多くの人々
全ての皆さんに対し称賛を!Java EE 8は、みなさんの仕事と献身がなければ不可能でした。
ご存じのようにこれは、Eclipse Foundation、Red Hat、IBMなどのコミュニティとともにEclipse Foundationの後援の下、開発を移行することによりJava EEをさらにオープンにする取り組みの端緒にすぎません(詳細は以下のリンクをどうぞ )。
Opening Up Java EE
https://blogs.oracle.com/theaquarium/opening-up-java-ee
https://orablogs-jp.blogspot.jp/2017/08/opening-up-java-ee.html
Opening Up Java EE - An Update
https://blogs.oracle.com/theaquarium/opening-up-ee-update
https://orablogs-jp.blogspot.jp/2017/09/opening-up-java-ee-update.html
現在多くの議論が続いており、追加の詳細をJavaOneでご紹介できればと思っています。
Opening Up Java EE: Panel Discussion with Oracle, IBM, Red Hat, and the Eclipse Foundation [CON8030]
https://events.rainfocus.com/catalog/oracle/oow17/catalogjavaone17?search=CON8030&showEnrolled=false
本日、Java SE 9も一般提供されました。前述の通り、GlassFish 5.0はJava SE 8の新機能を活用しています。Eclipse Foundationへの移行に伴って我々の眼前にたくさんの作業があるにもかかわらず、現在、将来のGlassFish 5リリースでJava SE 9の動作保証をすることを目指しています。引き続きこの領域での将来の開発について投稿していく予定です。

全てのOracle Java EEチームを代表して、Davidより。

Resources


[Java] Convergence Of Oracle Java SE Embedded With Oracle JDK

原文はこちら。
https://blogs.oracle.com/java-platform-group/convergence-of-oracle-java-se-embedded-with-oracle-jdk

過去数年にわたり、OracleはOpenJDKコミュニティとJCPで、一般に言われるJava SE、特にOracle JDKをより小さなデバイスで動作するようサイズを小さくすることに取り組んできました。

最初の一手は、Java SE 8にCompact Profileを導入することでした。この機能は、Oracle Java SE 8 Embeddedで利用できます。
An Introduction to Java 8 Compact Profiles
https://blogs.oracle.com/jtc/an-introduction-to-java-8-compact-profiles
https://orablogs-jp.blogspot.jp/2013/08/an-introduction-to-java-8-compact.html
Java SE Embedded 8 Compact Profiles Overview
http://www.oracle.com/technetwork/java/embedded/resources/tech/compact-profiles-overview-2157132.html
つづいて、Jigsawプロジェクトを通してJava SE 9にモジュールシステムを導入することでした。jlinkという新しいツールを使うと、一連のユーザーが提供するモジュールとランタイムの依存関係をアセンブルし、アプリケーション実行に必要なJDK 9モジュールのみを含む、カスタムランタイムイメージに最適化することができます。
Project Jigsaw
http://openjdk.java.net/projects/jigsaw
JEP 282: jlink: The Java Linker
http://openjdk.java.net/jeps/282

この機能は、アプリケーションのランタイムフットプリントをコンパクトプロファイルよりもきめ細かく制御します。関心のある開発者は、この機能やその他の多くのJDK 9の機能を試し、OpenJDKコミュニティを通じて開発に貢献することができます。
JDK 9
http://jdk.java.net/9
JDK 9ではまた、Javaプラットフォームに対し、実験的な静的「Ahead of Time(AOT)」(JEP 295)という新機能も導入されています。この新しいコンパイルツールは、(時間の経過とともに)コンパクトで静的にリンクされたイメージの作成を容易にします。AOTは、Javaアプリケーションで必要とするランタイム・フットプリントの大幅な削減と、スタートアップ・パフォーマンスの大幅な向上を実現します。Oracleはこの新しいAOTコンパイラをOpenJDKコミュニティに提供しました。
JEP 295: Ahead-of-Time Compilation
http://openjdk.java.net/jeps/295
昨年Oracleは、JDK 9のために、32ビットおよび64ビットARMプラットフォームのHotSpotの統合ポートをOpenJDKコミュニティに提供しました。これは、OpenJDKの64ビットAArch64ポートプロジェクトを補完する、OpenJDKの既存の32ビットAArch32ポートプロジェクトの助けを借りて行われました。
AArch32 Port Project
http://openjdk.java.net/projects/aarch32-port/
AArch64 Port Project
http://openjdk.java.net/projects/aarch64-port/
大事なことを言い忘れていましたが、Oracleは、OpenJDK Mobile Projectを立ち上げ、iOS、Android、Windowsなどの一般的なモバイル・プラットフォームにJDKを移植することに注力しています。
関連するOracle Java SE Embeddedの移植を開始したことで、オープンソースのJava SE Embeddedコミュニティは、活気に満ちたオープンソースコミュニティの一端として、JDK 9の革新とコラボレーションを継続できるようになりました。
Mobile Project
http://openjdk.java.net/projects/mobile/
How to contribute
http://openjdk.java.net/contribute/
これに伴い、JDK 9以後、Oracleは「Oracle Java SE Embedded」という別のダウンロードを提供する予定はありません。つまり、Oracle Java SE 8 Embeddedは、「Oracle Java SE Embedded」製品の最終リリースシリーズです。この理由は、JDK 9の新機能のおかげで、別の製品として用意する必要がなくなったからです。

[Cloud] Announcing Oracle Cloud Infrastructure Modules for the Terraform Modules Registry

原文はこちら。
https://blogs.oracle.com/developers/announcing-oracle-cloud-infrastructure-modules-for-the-terraform-modules-registry

新たに発表されたHashiCorp Terraform Module Registryを使用して、OracleはOracle Cloud Infrastructure Classic(OPC)Provider用の検証済みモジュールの初期セットを提供しています。このモジュールは現在HashiCorpによる認定および互換性テストを受けています。
HashiCorp Terraform Module Registry
https://www.hashicorp.com/blog/hashicorp-terraform-module-registry/
Terraform Moduleは、Terraform構成の再利用可能なパーツを内蔵パッケージとしてカプセル化しています。Terraform Moduleを使用すると、インフラストラクチャ構成全体の再利用性と保守性の両方を向上することができ、テスト済みの構成パターンを一貫して使用できます。
Module Configuration
https://www.terraform.io/docs/configuration/modules.html
Terraform Module Registryを使用すると、Oracle Cloud Infrastructureの検証済みモジュールとコミュニティ・モジュールの両方を簡単に検出して使用することができます。以下で、Oracle Cloud Infrastructure Classic(OPC)モジュールの初版を2個組み合わせた構成で使用する方法を詳しく見ていきます。

Oracle Cloud Infrastructure Classic Modules

Terraform Providerは、Compute、Networking、Storageサービスなどを構成およびプロビジョニングするために使用される個々のリソースをきめ細かく制御することができます。
Resource Configuration
https://www.terraform.io/docs/configuration/resources.html
インフラストラクチャ構成を完全に制御するにあたり、個々のリソースを宣言することは非常に強力な方法ではありますが、例えばComputeインスタンスの起動やネットワークの作成、セキュリティ・ルールの宣言といった、具体的な構成要件を満たすために、何度もリソースのグループを共通パターンで使う必要があります。

Compute Instance Module

opc_compute_instanceリソースは、デフォルトで、ローカルブートストレージを持つ一時インスタンスを作成しますが、永続インスタンスを作成するには、追加のopc_compute_storage_volumeリソースをブートボリューム用に宣言し、作成時にインスタンスにアタッチする必要があります。
compute-instanceモジュールを使うと、ストレージリソースならびにインスタンスリソースの両方の作成が1個の再利用可能なコンポーネントに結合され、複数のリソースの定義と関連付けの詳細が、単一の簡潔なインスタンス定義にカプセル化されます。
Terraform Module for creating Oracle Cloud Infrastructure OPC Compute instances
https://registry.terraform.io/modules/oracle/compute-instance/opc
では、最も簡単なcompute-instanceモジュール定義から始めましょう。
module "persistent-instance1" {
  source           = "oracle/compute-instance/opc"
  instance_name    = "instance1"
  instance_shape   = "oc3"
}
この最小限の設定で、通常明示的に定義が必要な多くの属性に対して、共通のデフォルト値や派生値を使用して、永続ブータブルストレージボリュームを持つインスタンスを作成します。
では、この最小設定と同等の、全て宣言した基本リソースセットと比べてみましょう。
resource "opc_compute_instance" "persistent-instance1" {
  name                = "instance1"
  hostname            = "instance1"
  label               = "instance1"
  shape               = "oc3"

  networking_info {
    index          = 0
    shared_network = true
  }

  storage {
    index  = 1
    volume = "${opc_compute_storage_volume.boot-volume.name}"
  }

  boot_order = [1]
}

resource "opc_compute_storage_volume" "boot-volume" {
  name             = "instance1-boot"
  description      = "$instance1 boot storage volume "
  image_list       = "/oracle/public/OL_7.2_UEKR4_x86_64"
  image_list_entry = 1
  size             = 12
  bootable         = true
}

IP Networks Modules

2個目のモジュールはip-networksモジュールです。 このヘルパーモジュールは、共有IPネットワーク交換(IP Network Exchange)を使って、相互に接続された複数のIPネットワークの作成を簡素化します。これは、異なるアプリケーションデプロイメント層に使用される複数のサブネットを宣言する場合に便利です。
Terraform Module for creating Oracle Cloud Infrastructure OPC IP Neworks
https://registry.terraform.io/modules/oracle/ip-networks/opc
このip-networksモジュールはIPネットワーク交換の名前、サブネットと対応するサブネットワーク名のリストを使ってインスタンス化します。
module "ip-networks" {
    source = "oracle/ip-networks/opc"
    ip_exchange_name = "example"
    subnet_cidrs = [ "192.168.1.0/24", "192.168.2.0/24", "192.168.3.0/24" ]
    subnet_names = [ "network1", "network2", "network3" ]
}
ここでも、同じ構成の同等の基本リソース定義を見てみましょう。
resource "opc_compute_ip_network_exchange" "exchange" {
  name = "example"
}

resource "opc_compute_ip_network" "network" {
  name                = "network1"
  ip_address_prefix   = "192.168.1.0/24"
  ip_network_exchange = "${opc_compute_ip_network_exchange.exchange.name}"
}

resource "opc_compute_ip_network" "network" {
  name                = "network2"
  ip_address_prefix   = "192.168.2.0/24"
  ip_network_exchange = "${opc_compute_ip_network_exchange.exchange.name}"
}

resource "opc_compute_ip_network" "network" {
  name                = "network3"
  ip_address_prefix   = "192.168.3.0/24"
  ip_network_exchange = "${opc_compute_ip_network_exchange.exchange.name}"
}

Using Modules as part of a complete configuration

今度は、上記の2つのモジュールを組み合わせを見てみましょう。 相互接続されたIPネットワークのサブネットワークを2個作成し、各サブネットに1つのCompute インスタンスを作成します。構成を完了するために追加のリソースが2つ作成され、実行中のインスタンスにアクセスできるようにSSHキーが作成されます。 パブリックIPアドレス予約はインスタンスの1つに関連付けられます。
module "ip-networks" {
    source = "oracle/ip-networks/opc"
    ip_exchange_name = "example"
    subnet_cidrs = [ "192.168.1.0/24", "192.168.2.0/24" ]
    subnet_names = [ "network1", "network2" ]
}

module "persistent-instance1" {
  source           = "oracle/compute-instance/opc"
  instance_name    = "instance1"
  instance_shape   = "oc3"
  ip_network       = "${module.ip-networks.ip_networks[0]}"
  ssh_key          = "${opc_compute_ssh_key.ssh-key.name}"
}

module "persistent-instance2" {
  source           = "oracle/compute-instance/opc"
  instance_name    = "instance1"
  instance_shape   = "oc3"
  ip_network       = "${module.ip-networks.ip_networks[1]}"
  ip_reservation   = "${opc_compute_ip_address_reservation.ip-reservation.name}"
  ssh_key          = "${opc_compute_ssh_key.ssh-key.name}"
}

resource "opc_compute_ssh_key" "ssh-key" {
  name    = "example-sshkey1"
  key     = "${file("~/.ssh/id_rsa.pub")}"
  enabled = true
}

resource "opc_compute_ip_address_reservation" "ip-reservation" {
  name            = "example-ip-reservation"
  ip_address_pool = "public-ippool"
}
この例では、IPネットワーク上にインスタンスを作成しているため、opc_compute_ip_address_reservationでパブリックIP予約を使っていますが、IPネットワークを使わない場合、共有ネットワークインターフェースでIP予約を作成するために、opc_compute_ip_reservationを使う必要があります。

Summary

どのようなプログラミング言語でも、再利用可能なコード要素にカプセル化し分解することで、開発と保守が大幅に省力化できますが、この原則は、宣言的および機能的な構造を使用してクラウドインフラストラクチャを定義できる、infrastructure-as-codeの領域でも等しく適用されます。Terraform ModuleとTerraform Modules Repositoryを使うと、ベンダーが提供するモジュールとコミュニティが提供するモジュールの両方を信頼性の高い方法で採用して、素早く初期設定を作成できます。

More Information

Related Content

[WLS, Java] How to Use Java EL to Write WLDF Policy Expressions

原文はこちら。
https://blogs.oracle.com/weblogicserver/use-java-el-policy-expressions

WLDF(WebLogic診断フレームワーク)は、サーバやクラスタの直近の時間間隔のメトリックの傾向を見るための複雑なロジックを隠蔽する、Smart Rulesと呼ばれる特化した機能を提供します。この機能が不十分であるということであれば、WLDFが提供するBeanや関数、Java Expression Language(Java EL)を使って、ポリシー式を直接を記述することもできます。
Oracle WebLogic Server 12cでポリシー式を作成するにあたり、Java ELは推奨される言語です。Java ELには数多くの強力な機能が組み込まれていますが、より複雑にすることもできます。しかしながら、より簡単にするために、WebLogicのデータやイベントに直接アクセスするポリシー式で利用可能な、Beanや関数から構成される一連のEL式をWLDFが提供します。
簡単なポリシー式や複雑なポリシー式をBeanや関数を使って記述することができますが、Java ELを使ったプログラミング技術や経験が十分にあることが前提です。
例えば、5分間のタイムウィンドウにおける平均のHeapFreePercentが20より小さいかどうかをチェックする比較的簡単なポリシー式は、以下のように記述できます。
wls:extract("wls.runtime.serverRuntime.JVMRuntime.heapFreePercent", 
            "30s",
            "5m").tableAverages()
                 .stream()
                 .anyMatch(hfp -> hfp < 20)
cluster1に属する全サーバの、2分間のタイムウィンドウで30秒ごとに属性PendingUserRequestCountの平均値をチェックし、ノードの75%で保留リクエストが平均100個を上回る場合に呼び出されるようなより複雑なポリシー式は、以下のように記述できます。
wls:extract(wls.domainRuntime.query({"cluster1"},
                                  "com.bea:Type=ThreadPoolRuntime,*",
                                  "PendingUserRequestCount"),
         "30s",
         "2m").tableAverages()
               .stream()
               .percentMatch(pendingCount -> pendingCount > 100) > 0.75
ポリシー式でJava ELを使う例や詳細情報は、以下のドキュメントをご覧ください。
Oracle® Fusion Middleware
Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1.3.0)
Writing Collected Metrics Policy Expressions Using Functions
http://docs.oracle.com/middleware/12213/wls/WLDFC/config_watches.htm#WLDFC-GUID-45CD1259-6151-412A-A9E4-AA676E2C47C0

[Docker, Cloud] Get a highly available Kubernetes Cluster on Oracle Cloud Infrastructure in minutes

原文はこちら。
https://blogs.oracle.com/developers/get-a-highly-available-kubernetes-cluster-on-oracle-cloud-infrastructure-in-minutes

「この頃どこでも使われているようだね」、とKubernetesについて語る人がいます。最近の調査では、企業の71%が Kubernetesを使ってコンテナを管理していると言われていることからも、Kubernetesは基本的にコンテナ管理とオーケストレーションの共通語になっています。もしかすると、クラウド自身について言及する人がいるかもしれません。
451 Research study reveals rapid adoption of Kubernetes for hybrid cloud infrastructure (CoreOS Blog)
https://coreos.com/blog/451-research-container-survey-results
Federation
https://kubernetes.io/docs/concepts/cluster-administration/federation/
本日、簡単にKubernetes ClusterをOracle Cloud Infrastructure (OCI) 上に立ち上げることができるオープンソースのTerraformテンプレート、Terraform Kubernetes Installerを発表できうれしく思っています。
Terraform Installer for Kubernetes on Oracle Cloud Infrastructure
https://github.com/oracle/terraform-kubernetes-installer/
これを使うと、お客様は商用グレードのKubernetesコンテナオーケストレーションを、Oracleの次世代OCIクラウドインフラストラクチャの管理、セキュリティ、予測可能なパフォーマンスと組み合わせることができます。

Kubernetesクラスタを起動し、稼動させるのは、まして商用環境に対応可能な状態にするというのは、これまで非常に困難なことでした。純粋主義者(そしてKubernetesを学ぶ人たち)であれば、Kubernetesクラスタを立ち上げるために困難な道を選ぶかもしれませんが、 我々のほとんどは、Kubernetesクラスタの立ち上げを簡単かつ自動化する方法を求めています。
Kubernetes The Hard Way
https://github.com/kelseyhightower/kubernetes-the-hard-way
この分野のベンダーおよびKubernetesコミュニティから(多数の)プロジェクトが作られており、多くが開発段階にあります。私たちは以下の理由からTerraformを使うことにしました。
  • Terraformは、(Kubernetesがコンテナ用であるように)クラウドインフラストラクチャのオーケストレーションのための非常に一般的な方法になっている
  • Terraformが状態を管理するため、例えばKubernetesクラスタにノードを簡単に追加または削除できる
  • 既存のOCI用Terraform Providerが、活用して構築することができるOCIインフラストラクチャの管理のための強力な抽象化を提供している
    Terraform and Oracle Bare Metal Cloud Services
    https://blogs.oracle.com/developers/terraform-and-oracle-bare-metal-cloud-services

What it Does

Terraform Kubernetes Installerは、Oracle Cloud Infrastructure(OCI)のテナントで、可用性の高い、構成可能なKubernetesクラスタをプロビジョニングして構成するための、一連のTerraformモジュールと基本構成のサンプルを提供します。これには、Virtual Cloud Network (VCN)とサブネット、Kubernetesコントロール・プレーンを実行するためのインスタンス、etcdとKubernetes masterクラスタのフロントエンドのロードバランサが含まれます。

基本構成では、Kubernetesのmasterとノードのシェイプ/サイズ、基盤となるアベイラビリティ・ドメイン(AD)への配置方法を指定できる多くの入力変数をサポートします。

VMシェイプだけでなく、ベアメタルシェイプ(ハイパーバイザではありません!)を指定することができ、Kubernetesクラスタ用にOCIインフラストラクチャのパワーとパフォーマンスをフルに活用できるので、これは非常に強力です。ノードはインテリジェントに(たとえば可用性ドメインを使って)ラベル付けされて、Kubernetesのマルチゾーンへのデプロイメントをサポートしているため、Kubernetesスケジューラがアベイラビリティ・ドメイン間でPODを展開できます。
Running in Multiple Zones
https://kubernetes.io/docs/admin/multiple-zones/
READMEに記載されているように、Terraformを使用してクラスタにノードを追加したり削除したりすることもできます。
README - Terraform Kubernetes Installer for Oracle Cloud Infrastructure
https://github.com/oracle/terraform-kubernetes-installer/blob/master/README.md
基本構成の範囲を超える要件の場合、モジュールを使用して独自のカスタマイズされた構成を作成することもできます。

Highly Available Kubernetes Control Plane

What's Next

われわれのバックログには、Kubernetes永続化ストレージの統合と(公開サービス用の)ロードバランサの統合があります。しかしながら、このテンプレートをより良くするためにコミュニティから寄せられたリクエストや貢献を見てうれしく思います。
Load Balancing - Oracle Cloud Infrastructure
https://cloud.oracle.com/en_US/bare-metal-load-balancer
是非GitHubでIssueやプルリクエストをお寄せください(詳細手順はCONTRIBUTINGファイルをご覧ください)。
Terraform Installer for Kubernetes on Oracle Cloud Infrastructure
https://github.com/oracle/terraform-kubernetes-installer/
Contributing to the Terraform Kubernetes Installer for Oracle Bare Metal Cloud Services
https://github.com/oracle/terraform-kubernetes-installer/blob/master/CONTRIBUTING.md

我々の目標は、開発者とDevOpsチームが次世代のクラウドインフラストラクチャ上で標準的なKubernetesのメリットを享受できるよう、できるだけ簡単にすることです。

Related Content