2016年8月26日

[Cloud] Orchestration 2.0 - creating a storage element

原文はこちら。
https://blogs.oracle.com/pshuff/entry/orchestration_2_0_creating_a

このエントリでは、Oracle OrchestrationでBitnami WordPressインスタンスを使う例を見ていきます。まずはCloud Marketplaceでインスタンスをプロビジョニングします。
Oracle Cloud Marketplace
https://cloud.oracle.com/marketplace/ja_JP/
インストールするインスタンスは以下の場所で見つけることができます。このインスタンスはOracle Linux 6.7ベースです。
WordPress on OL 6.7
https://cloud.oracle.com/marketplace/ja_JP/listing/4980490?_afrLoop=11935810073563805&_afrWindowMode=0&_afrWindowId=1bzhjaylmt_21
このインスタンスの最小プロファイルは、OC3(1 OCPU、7.5 GB RAM)でローカルディスク60GBです。
[アプリケーションの入手]ボタンをクリックすると、Cloud Computeサービスへのインストールプロセスが始まります。[アプリケーションの入手]ボタンをクリックするとプロセスが始まり、Marketplaceから起動可能イメージをダウンロードし、任意のタイミングで新規インスタンスを作成できるイメージとして利用可能になります。デフォルトのサイズは10GBですが、MySQLとWordPressアプリケーションが適切に動作するよう、このインストール・イメージを60GBまで拡大する必要があります。


インスタンスの作成のために、コンピュート・コンソールへ移動し、インスタンスを作成します。プライベート・イメージを選択して、起動するためにダウンロードしたWordPress bitnamiインスタンスが使えるようにします。ネットワーク・セキュリティ・リストやSSHキー、インスタンス名を入力します。

デフォルトのディスクサイズは10GBです。今回はこのままにして、立ち上げ前に構成を
見なおすことにしましょう。

[作成]をクリックすると、クラウドコンソールは3個のオーケストレーションファイルを作成し、WordPressインスタンスを初期化します。最初に作成されたファイルはストレージを定義しています。このファイルは、デフォルトのままであれば、bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage.json と呼ばれるものです。この例では、WordPress_4_5_3_storage.jsonと呼ばれています。このファイルには、OSの立ち上げのために必要なストレージが以下のような形式で記述されています。
{
    "relationships": [],
    "account": "/Compute-metcsgse00028/default",
    "description": "",
    "schedule": {
        "start_time": "2016-07-21T19:40:35Z",
        "stop_time": "2016-07-21T21:50:02Z"
    },
    "oplans": [
        {
            "obj_type": "storage/volume",
            "ha_policy": "",
            "label": "bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
            "objects": [
                {
                    "managed": true,
                    "snapshot_id": null,
                    "snapshot_account": null,
                    "machineimage_name": "/Compute-metcsgse00028/marketplace01-user@oracleads.com/bitnami-wordpress-4.5.3-0-linux-oel-6.7-x86_64",
                    "status_timestamp": "2016-07-21T19:44:51Z",
                    "imagelist": "/Compute-metcsgse00028/marketplace01-user@oracleads.com/bitnami-wordpress-4.5.3-0-linux-oel-6.7-x86_64",
                    "writecache": false,
                    "size": "10737418240",
                    "storage_pool": "/compute-us2-z12/cheis01nas100-v1_multipath/storagepool/iscsi/latency_1",
                    "shared": false,
                    "status": "Online",
                    "description": "",
                    "tags": [],
                    "quota": null,
                    "properties": [
                        "/oracle/public/storage/default"
                    ],
                    "account": "/Compute-metcsgse00028/default",
                    "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
                    "bootable": true,
                    "hypervisor": null,
                    "uri": null,
                    "imagelist_entry": 1,
                    "snapshot": null
                }
            ]
        }
    ],
    "user": "/Compute-metcsgse00028/cloud.admin",
    "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage"
}
それでは、このファイルの詳細、構造を見ていくことにしましょう。子コンポーネントは無視して構造を分析しましょう。
{
    "relationships": [],
    "account": "/Compute-metcsgse00028/default",
    "description": "",
    "schedule": {…},
    "oplans": […],
    "user": "/Compute-metcsgse00028/cloud.admin",
    "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage"
}
このオブジェクトを定義する7つの要素があることに注意してください。

  1. relationship
    このファイルでは、これが構成の基礎であり、別のオブジェクトとの依存関係を持っていません。
  2. account
    accountは、オブジェクトの所有者および、オブジェクトに関連付けられたセキュリティを定義します。このオブジェクトにアクセスできる、もしくはデフォルトのラベルを使って、すべてのユーザーがアクセスできるようにすることが可能な固有のアカウントをアイデンティティ・ドメイン内で持っている可能性があります。
  3. description
    このオブジェクトには説明がありません。いつこの情報を作成したのか、いつディスクをプロビジョニングしたか、といった、より多くの情報を追加する可能性があります。これは有用なフィールドですが、Computeリソースを作成する上では重要なものではありません。 
  4. schedule
    いつオブジェクトが作成されたかを定義し、オブジェクトがいつ開始し、停止するのかを定義します。
  5. oplans
    oplansはオブジェクトを定義します。この時点では定義を隠していますが、この後詳細を見ていきます。
  6. user
    このユーザーは、オブジェクト作成者、オブジェクト所有者です。
  7. name
    オブジェクト名です。アイデンティティ・ドメイン、作成ユーザー、オブジェクト名から構成されています。この例では、nameは以下のようです。
    /Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage
    筆者の作業時点の例では、以下のようになります。
    /Compute-metcsgse00028/cloud.admin/WordPress_4_5_3_storage

oplansの詳細を見ていきましょう。以下のようにオブジェクトが定義されていることがわかります。
{
    "obj_type": "storage/volume",
    "ha_policy": "",
    "label": "bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
    "objects": […]
}
oplansは4個の要素から構成されており、ドキュメントに定義されています。これらのオブジェクトはha_policyを除いて全て必要です。最初の定義済みパラメータはobj_typeです。このパラメータは以下として定義されます。
  • Ip-reservation
  • Launchplan
  • Orchestration
  • Storage/volume
  • Secapplication
  • Seciplist
  • Seclist
  • Secrule
いま、この要素をstorage/volumeと定義します。labelパラメータに関連付けられた名前とobjectsパラメータで定義された特性を指定します。ha_policyはactiveもしくはmonitorとして定義することができます。activeを選択した場合、オブジェクトが削除、障害時に再起動されます。activeはobj_typeがlaunchplanの場合にのみ選択できます。launchplan、storage/volume、orchestrationといったobj_typeの監視のためのha_policyを設定することができます。オブジェクトに障害が発生した場合、エラーがスローされます。このエラーを監視ソフトウェアパッケージにスローすることができますが、オブジェクトは自動的に再起動したり、再作成したりはしません。その他の全てのオブジェクトでは、このha_policyはnoneもしくは空フィールドに設定しなければなりません。今回の例では、bitnamiが生成するデフォルトラベルではなく、labelとして“WordPress_4_5_3_storage”を設定しています。
objectsフィールドはドキュメンテーションで定義されています。この例ではstorage volumeオブジェクトを詳細に見ていきます。storageに必要なフィールドはname、size、propertiesです。オプションのフィールドは、description、bootable、tagsです。今回の例では、オブジェクト・パラメータを以下のように定義しています。
"objects": [
            {
                "managed": true,
                "snapshot_id": null,
                "snapshot_account": null,
                "machineimage_name": "/Compute-metcsgse00028/marketplace01-user@oracleads.com/bitnami-wordpress-4.5.3-0-linux-oel-6.7-x86_64",
                "status_timestamp": "2016-07-21T19:44:51Z",
                "imagelist": "/Compute-metcsgse00028/marketplace01-user@oracleads.com/bitnami-wordpress-4.5.3-0-linux-oel-6.7-x86_64",
                "writecache": false,
                "size": "10737418240",
                "storage_pool": "/compute-us2-z12/cheis01nas100-v1_multipath/storagepool/iscsi/latency_1",
                "shared": false,
                "status": "Online",
                "description": "",
                "tags": [],
                "quota": null,
                "properties": [
                    "/oracle/public/storage/default"
                ],
                "account": "/Compute-metcsgse00028/default",
                "name": "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage",
                "bootable": true,
                "hypervisor": null,
                "uri": null,
                "imagelist_entry": 1,
                "snapshot": null
            }
        ]
    }
] 
nameは "/Compute-metcsgse00028/cloud.admin/bitnami-wordpress-4.5.3-0-linux-_20160721144012_storage" です。注目していただきたいのは、このオブジェクト名はインスタンス・ドメイン、ストレージを作成したユーザー名、そしてストレージのラベルで構成されている、という点です。sizeはバイト単位で"10737418240"と定義しています。この値はOS用の10GBのディスクです。propertiesは [ "/oracle/public/storage/default" ] と定義されています。これはストレージをデフォルトストレージとして定義することを意味しています。通常データベースで使われる低レイテンシや高IOPSストレージが必要であれば
、defaultではなく別のレイテンシを選択することもできます。この説明における残りのフィールドは任意の項目です。bootable(起動可能)タグはこれが起動可能イメージかどうか、statusはこのストレージがアクティブ・モードなのか、スタンバイモードなのかを定義します。storage_poolはこのストレージ要素が専用にアタッチされたストレージではなく、Computeノードで利用可能なiSCSI論理ユニット番号(LUN)であることを定義していることにご注意ください。これらの全てのフィールドはOSを起動し、WordPressアプリケーションを実行するストレージを作成するために必要なものを定義しています。ストレージとして20GBのディスクにすることも、200GBのディスクにすることも簡単に定義することができます。ブロックストレージは50USD/TB/月の費用が発生することに注意することが重要です。次回は、このストレージを使ってインスタンスと関連付けることにしましょう。

[Cloud] 各国通貨で価格が表示されるようになりました

既にご存知かもしれませんが、各国の通貨でOracle Cloudの価格を確認できるようになっています。
以下ではJava Cloud Serviceの場合を例示しますが、他のサービスでも同じです。
まずは、ページにアクセスします。
Java Cloud Service(日本語)
https://cloud.oracle.com/ja_JP/java
試使用であれば、[試してみる]をクリックするところですが、今回は[価格]のタブをクリックします。


すると、以下のようなページが出てきます。
デフォルトはUSドルですね。


「表示する通貨を選択」のドロップダウンリストで通貨を選択しましょう。
他国の通貨もいろいろ選択できますが、日本円を選択してみます。


以下は日本円を選択した結果です。



[Cloud] Orchestration 2.0

原文はこちら。
https://blogs.oracle.com/pshuff/entry/orchestration_2_0

このエントリでは、Computeインスタンスのインストールおよびプロビジョニングの自動化の方法を紹介します。様々な方法、様々なツールや方法論を利用することができますが、こうしたツールの全ての根幹は、クラウドもしくは貴社データセンターで稼働するシステムの構成方法を定義することです。構成データには、Computeリソース、ネットワークリソース、ユーザー定義、パッケージ、プロセス、サービスが含まれます。こうした定義言語を使って1個のサービスだけでなく、サービスの集合も定義することができます。例えば、WordPressブログを定義したい場合、WordPressブログ・ソフトウェアを含む単一のサーバ、ブログソフトウェアを稼働するためのWebコンテナ、そして状態やユーザー情報をブログサーバ用に保持するための、通常はMySQLデータベースを定義することができます。マルチサイトのブログエントリの場合、通常、アプリケーション・サーバーからデータベースを分割し、データベースファイルのフェールオーバと、大量のユーザーとウェブへのリクエストを処理するため、フロントエンドに複数のWebコンテナを用いて高可用性構成を作成することができます。
文章でこのシステムを記述しようとすれば、比較的複雑で混乱することでしょう。例えば…
  • ディスクのメモリと20ギガバイトの8ギガバイトとシングルプロセッサのコンピュータ(8GBのRAMと20GBのディスク)上でWebコンテナを実行し、MySQLサーバを実行する、別のシングルプロセッサのコンピュータ(16GBのRAMと40GBのディスク)と接続しています。
  • WebコンテナはPHPがインストールされており、HTTPおよびHTTPSでリクエストを受け付ける必要があります。
  • Webコンテナは、WordPressのパッケージを実行し、データベース・インスタンスに接続して、ユーザー情報やWebページの情報を格納する必要があります。
  • どちらのシステムでも、Oracle Linux 6.7を利用しており、Webサービスやセキュアシェルを使ったWebサービスへのリモート・ログインするための機能以外の全てのポートはロックダウンされています。
  • また、Webコンテナやデータベース・インスタンスが割り当てられたプロセッサの80%以上を利用した場合の対策や、いずれかのサービスが停止、障害が発生した場合の対策を定義する必要があります…
様々な構成管理ツールを使って、ここまでで例示した内容を定義することができます。これらのツールのほとんどは、JSONを使って構成や起動方法、スケールの方法を表現します。このエントリでは、次の3種類のツール、Chef、Puppet、Orchestrationを取り上げます。

Puppet

PuppetはPuppet Labsが作成したパブリックドメイン・パッケージで、LinuxやWindows上で利用できます。詳細情報は以下のリンクからどうぞ。
Puppetは宣言的な言語を使ってシステム構成を表現します。これらのファイルをマニフェストと呼び、通常はJSON形式もしくはそれに類した形式で保存されています。Puppetでは、リソースは通常以下の形式で定義されます。
resource_type{
    ‘resource_title’: ensure: presentorabsent,
    attribute: one,
    attribute: two,
    attribute: n
}

Chef

Chefは、Chefと呼ばれる会社が2009年に最初のリリースを出した類似の構成ツールです。Chefより5年前にリリースされたPuppetと同様にシステム構成を表現できます。Chefに関する詳細情報は以下のリンクからどうぞ。
Chefは “recipies” (レシピ)を使って、アプリケーションの構成やシステム構成を表現します。Puppetよりもアプリケーションの構成に少し重点を置いています。典型的なChefの構成は全てを1個のJSONファイルに書くのではなく、複数のファイルから成り立っています。例えば、典型的なフォルダ構造は以下のようになっています。
attributes
    default.rb
  files
    default
    file.txt
  recipies
    default.rb
  templates
  default
    file.erb
    metadata.rb
rbファイルはRubyプログラミング言語の構文をサポートしているため、属性はちょっと異なる形で定義されます。
default[‘Linux’][‘version’]     = ‘6.7’
default[‘Linux’][package_name’] = ‘OEL_6_7’
default[‘Linux’][‘dir’]         = ‘/home/oracle’
rbファイルには条件制御構造も有しており、これを使うとIf-Then-ElseやCase選択でインストール先で構成を変更することができます。例えば、WebコンテナをWindowsもしくはLinux上で構成する場合、これらのレシピを全て1箇所に集め、必要に応じてアップデートすることができますし、OSの構成を1箇所のディレクトリに、アプリケーションの構成は別のファイルやディレクトリに集約することができます。そして構成ファイル間の依存性を作成することもできます。

Oracle Orchestrations

Oracleは第3の構成管理ツールであるOrchestrationsを使っています。これは利用、定義の点で、ChefよりはPuppetに近いものです。両者とも基盤としてJSONを使うため、Oracle OrchestrationsとAmazon CloudFormationのテンプレートが非常に類似しているのは自然なことです。オーケストレーションのドキュメントによると、Orchestrationでは属性とOracle Compute Cloud ServiceのComputeリソース、ネットワークリソース、ストレージリソースのコレクションの相互の依存性を定義します。
Oracle® Cloud Using Oracle Compute Cloud Service (IaaS)
About Orchestrations
https://docs.oracle.com/cloud/latest/stcomputecs/STCSG/GUID-1896C799-49A6-42B8-9813-7DE5695267FE.htm#STCSG-GUID-1896C799-49A6-42B8-9813-7DE5695267FE
オーケストレーションを使って仮想Computeトポロジー全体のプロビジョニングやライフサイクル・オペレーションを自動化することができます。以下はオーケストレーションファイルの例です。
{
    attribute: value,
    attribute: [
        {
            attribute: subvalue,
            attribute: subvalue
        }
    ]
}
Oracle Orchestrationについて説明した書籍はありませんが、テクノロジーの理解の助けとなるリンクがあります。Oracle Orchestrationは2回メジャーアップデートしており、Ver.2では、個々のサーバではなく、クラウドのシステムの自動化のためにデザインされています。
Amazon CloudFormation
Amazon CloudFormationは類似のテンプレートと構成ユーティリティを使います。必須の属性とオプションの属性が大きく異なります。CloudFormationに関する情報は以下のリンクからどうぞ。
Azure Runbooks

Microsoft Azureは根本的に異なるアプローチをとり、Windows PowerShellやPowerShell Workflowを必要とするRunbooksを使って構成や構成のためのパラメータを定義します。これらのツールは、Azure固有のものであり、オンプレミスシステムの場合とは動作が異なります。Azure固有の方法であるため、今回は取り上げませんでした。

まとめると、様々な方法でクラウドのサービス定義を作成でき、オンプレミスとクラウドのための構成を実現するツールは一つとしてありません。ツールを構成してこれを実現することはできますが、通常は全てのクラウドベンダーで使えるわけではありません。各クラウドベンダーには固有の実装があり、何が動作し、何が動作しないのかを比較するためには、Googleで「cloud orchestration tools comparison」と検索すれば、この課題を解決するパブリックドメインのツールや商用ツールのレビューを得ることができるでしょう。これらのツールは全て比較的最近のもので、まだ成熟していません。一つとして市場を独占し、他製品よりも多く採用されるツールはありません。後のエントリで、Oracle Orchestration定義の詳細に踏み込み、単一サーバでのWordPressのようなシステムと、複数サーバでの高可用性クラスタのようなシステムの構築を比較します。これらと同じ原則は、IaaSベースだけでなく、PaaSベースであってもE-Business Suite、PeopleSoft、JD Edwardsの構築に当てはめることができます。

2016年8月25日

[Cloud, Virtualization] Ravello cloud virtualization

原文はこちら。
https://blogs.oracle.com/pshuff/entry/ravello_cloud_virtualization

昨日、データセンターのベアメタルソリューションや仮想化ソリューションからクラウドベンダーへ移動するために欠かせないものに関する話をしました。
(訳注)「昨日」とは、以下のエントリをさしています。
uploading custom boot image for compute cloud
https://blogs.oracle.com/pshuff/entry/uploading_custom_boot_image_for
その中でわかったことは、難しいだけでなく作業が発生する、ということです。VMDKコードをAMI(Amazonの場合)、VHD(Microsoftの場合)、tar.gz(Oracleの場合)へ変換するツールがあるように、これが根本的な問題なのです。変換ツールがあるということは、単純にベアメタル・インストールやVMDKコードのバックアップを取って、アップロードして実行することができません。Javaは早い時期にこの問題に遭遇しました。CやC++のコード、バイナリをそのままMacやLinux、Windowsで動作させることはできませんでした。コードを再コンパイルする必要があり、うまくいけばlibcやlibc++ライブラリがOS間で互換性がありました。単純な再コンパイルで問題が解決する場合もありますが、多くの場合、条件コンパイルや異なるOSで動作させるために別のライブラリが必要でした。基本的な問題は、ネットワーク接続やディスクの読み書きのようなものが根本的に異なることでした。Windowsではバックスラッシュを使い、LinuxやMac OSではスラッシュを使います(訳注:Forward SlashとBack Slashの説明が違っていたので修正して訳しています)。ファイル名や長さも異なり、異なる文字を使うことができたりできなかったりします。残念なことにクラウドの世界でも同じことがあてはまります。仮想ネットワーク・インターフェースは全てのベンダーで同じではありません。ネットワーク・ストレージはiSCSIマウントやNFSマウント、もしくはREST APIだけでアクセスできる可能性があります。クラウド・ベンダー間でVirtual Computeの定義が異なるため、Javaが数十年前に行ったように、プログラミングのシムに似た仮想化のためのシムが必要になっています。Ravelloはこの主要な4クラウドベンダー間のギャップに入り、その差を埋めました。
Ravello Systemsは数年前にこの問題に取り組みはじめました。
Ravello Systems
http://ravellosystems.com/
VMwareからのVMDKディスクイメージを使って、クラウドベンダーをVMwareシステムのように仮想化するための3個のコンポーネントを作成しました。この3個のコンポーネントは、Nested Virtualization、Software Defined Networking、Virtual Storage Interfacesです。
HVX: High performance nested virtualization
https://www.ravellosystems.com/technology/nested-virtualization
HVX: Software defined networking (overlay network)
https://www.ravellosystems.com/technology/software-defined-network
HVX: Storage overlay (virtual storage interfaces)
https://www.ravellosystems.com/technology/storage-overlay
そのアイデアとは、ソリューションを構成する単一のシステムだけではなく、VMwareインスタンスのグループを作り、クラウドベンダーにそのままインポートする、というものでした。ユーザは、GUIを使ってインスタンス間のネットワークの関係をマッピングし、これらの仮想イメージをクラウドベンダーにデプロイしました。ソリューションの基本は、Ravello HVXハイパーバイザー・エミュレータを各インスタンスについてクラウドベンダーのコンピュート・インスタンスにデプロイしてからHVXインスタンス上にVMWare VMDKをデプロイしよう、というものでした。
HVX: Virtual infrastructure for the cloud
https://www.ravellosystems.com/technology/hvx
この結果、ストレージやネットワーク・インターフェースをGUIで作成した接続に従ってマッピングし、VMDKコードを変更しないまま実行できました。
仮想インスタンスをそのまま実行するというのはラジカルなコンセプトでした。非常にラジカルなので、OracleがRavello Systemsをこの春に買収し、組織の営業力を拡大しました。Ravelloが直面する3つの重要な課題は、顧客のデータセンター内で実行するワークロードの50%がクラウドへの移植がうまくいかないこと、これらのアプリケーションの多くはLayer 2 IPプロトコルを活用しており、通常ほとんどのクラウド環境では利用できないこと、そして異なるハードウェアベンダー上でのVMWareの実装は異なる仮想コードや構成を生成するため、任意のクラウドベンダーにマッピングすることが非常に困難である、ということです。一つ目の課題に対するソリューションは、VMware ESXおよびESXi環境を仮想化し、複数のクラウドベンダーのソリューション上に載せました。管理者がプロセッサを割り当てた場合、それはAWSにおけるスレッドもしくはAzureやOracleの場合のコアと同様なのでしょうか?ネットワークを割り当ててNAT構成を実施している場合、クラウドインフラストラクチャで可能なのでしょうか、それともHVXでエミュレートする必要があるのでしょうか。
ネストした仮想化エンジンは、VMwareに保存されたコードを変更せず、ネイティブに実行するように設計されています。クラウド・ベンダーのデバイスは、VMWareのデバイスや仮想デバイスとしてコードに公開されています。コンセプトは、異なるクラウドソリューション間の差異を最小化し、プロセッサとハイパーバイザーを、できるだけESXやESXiのように見せるようにすることでした。HVXでは、Binary Translationと呼ばれるテクノロジーを採用して、こうした仮想化拡張機能を必要としないハイパフォーマンスな仮想化を実装しています。仮想化拡張機能が利用可能な場合、イリュージョンを実装する最も簡単な方法は、"Trap and Emulate"を使うことです。TrapとEmulateは次のように動作します。ハイパーバイザーはプロセッサを構成してイリュージョンを壊す可能性がある命令(例えばハイパーバイザー自体のメモリにアクセスする)が「トラップ」を生成し、そのトラップがゲストOSに割り込み、ハイパーバイザーに制御を伝えます。その後、ハイパーバイザーは違反命令を調べ、安全な方法で命令をエミュレートした後に、ゲストは実行を継続することができます。HVXというRavelloのハイパーバイザーはバイナリ変換と呼ばれるテクノロジーを使っています。これはTrap-and-Emulateの方法とは異なり、バイナリ変換は仮想化拡張機能が利用できない場合でも動作します。
ピュアなL2アクセスは難しく、VLAN、ポートミラーリング、ブロードキャスト/マルチキャストは通常動作しませんが、Ravelloを使うと、単一の仮想マシンだけでなく、既存の複数の仮想マシンから構成されるアプリケーションも変更せずにクラウドで実行することができます。これを実現するために、Ravelloはアプリケーションの仮想マシン間の接続を仮想化するsoftware-defined networkを提供します。仮想ネットワークは完全にユーザーが定義でき、複数のサブネット、ルータ、そしてDHCP、DNSサーバ、ファイアウォールのような補助サービスを含むことができます。仮想ネットワークをデータセンターのネットワークと全く同じようにすることができます。仮想ネットワークのデータ・プレーンはHVX内に存在する完全な分散仮想スイッチと仮想ルータソフトウェアコンポーネントで形成されます。仮想マシンから送信されるネットワーク・パケットはインターセプトされ、スイッチに注入されます。スイッチは通常のネットワーク・スイッチとほぼ同じように動作します。各仮想ネットワークデバイス毎に、仮想スイッチが仮想ポートを作成します。この仮想ポートは接続されている仮想NICデバイスから出入りするパケットを処理します。
Ravelloのストレージ・オーバーレイ・ソリューションは、性能、永続性、セキュリティに重点を置いており、オブジェクトストレージや様々な種類のブロックデバイスといったネイティブクラウドストレージプリミティブを、ゲストVMが直接利用可能なローカルブロックデバイスに抽象化します。デバイスの種類やコントローラの種類から、PCIバス上の配置場所に至る全てが、同じままなので、ゲストVMにとっては、元のデータセンター・インフラストラクチャで動作しているのと同じように見えるのです。これにより、ゲストVMはオンプレミス環境で動作しているかのように、VMのストレージ構成を使って同様に実行することができます。クラウドストレージの抽象化(およびローカルブロックデバイスとしての提示)を使うと、HVXオーバーレイ・ネットワーキングの機能と組み合わて、様々なNASアプライアンスを動作させ、iSCSI、NFS、CIFS、SMBといったネットワークベースのプロトコルで利用することができます。こうしたブロックデバイスはハイパフォーマンスなcopy-on-writeファイルシステムによって支えられており、このおかげで複数の仮想マシンの増分スナップショット機能を実装することができています。
Ravelloチームが開発したハンズオンをたどり、Oracle Compute Cloudにオンサイトに展開されているPrimaveraをインポートする方法を示すことができました。ブロック図は以下のようです。全てのVMDKファイルをインポートし、GUIベースのアプリケーション構成ツールを使って、インスタンスを接続します。

インスタンスをインポートすれば、仮想スイッチ、仮想ゲートウェイ、仮想NICを追加し、パブリックIPアドレスを割り当て、VLANを構成に追加することによって、ネットワークインターフェースを構成することができます。

Ravelloは、クラウドベンダーでサポートされていない機能を定義することを可能にします。例えば、AmazonやMicrosoftは、レイヤ2ルーティングおよびマルチキャスト・ブロードキャスティングを許可していません。VMwareの場合は両方を許可しています。HVX層でこれらの呼び出しをトラップし、ネットワーク上の全てのホストへの接続を開いてTCPでのpingやマルチキャスト・ブロードキャストのようなことをして、各ホストにパケットを送信することによって、これらの機能をエミュレートします。まとめると、Ravelloでは、VMwareの既存の仮想化エンジンを受け取ることができます。そして、実質的に任意のクラウド・コンピューティング・エンジンにデプロイします。HVX hypervisorは、シムを提供し、さらにVMwareがクラウドベンダーに提供する機能を拡大します。レイヤ2ルーティング、VLANタギング、マルチキャスト/ブロードキャストパケットのような機能は、インスタンス間のHVX層を介してサポートされています。

2016年8月24日

[Java] Updates to “Moving to a Plugin-Free Web”

原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/updates_to_moving_to_a

Java Platform Group Product Managementのブログで、最近の最も人気のある記事の一つが、2016年1月の「Moving to a Plugin-Free Web」です。
Moving to a Plugin-Free Web
https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free
https://orablogs-jp.blogspot.jp/2016/01/moving-to-plugin-free-web.html
暫定では、Oracle開発チームがJDK Enhancement Proposal(JEP 289:Deprecate the Applet API/アプレットAPIを非推奨)を、JDK 9での計画廃止ステップに関する技術的な詳細を付けて公開しています。
JEP 289: Deprecate the Applet API
http://openjdk.java.net/jeps/289
要するに、JEP 289ではApplet APIのクラスを取り除くのではなく、クラスに@Deprecatedアノテーションを追加することを提案しています。提案の実装は、JDK 9 Early Accessリリースに取り込まれており、ダウンロードしてテストすることができます。
JDK 9
http://openjdk.java.net/projects/jdk9/
Download JDK 9
http://jdk9.java.net/
また、ブラウザから標準ベースのプラグインのサポートを除去するタイムラインがアップデートされています。Flash、Silverlight、Javaやその他のプラグインベースのテクノロジーを埋め込めなくすることをApple SafariやMozilla Firefoxの開発者が発表しています。
Next Steps for Legacy Plug-ins
https://webkit.org/blog/6589/next-steps-for-legacy-plug-ins/
Reducing Adobe Flash Usage in Firefox
https://blog.mozilla.org/futurereleases/2016/07/20/reducing-adobe-flash-usage-in-firefox/
発表されたブラウザの変更の詳細および、そうした変更の実装、ロールアウトのタイムラインについては、各ベンダーのブログエントリを参照してください。

2016年8月23日

[Cloud] New features in the Oracle Compute Cloud

原文はこちら。
https://blogs.oracle.com/pshuff/entry/new_features_in_the_oracle

OracleはOracle Compute Cloud Serviceをアップデートし、3個の新機能を追加しました。
  • Oracle MarketplaceをCompute Cloudコンソールに統合し、カスタムソリューションのデプロイがより簡単になりました
  • Backup Servicesの機能を拡張し、Compute Instanceのスナップショット取得やスナップショットからのインスタンスの複製ができるようになりました
  • 既存の仮想マシンのOracle Cloudへのインポートが簡単になり、これらのイメージをPublic MarketplaceやPrivate Marketplaceで利用できるようになりました
Oracle Marketplaceからのイメージの取得については以前お伝えしました。
(訳注)ここで言っている「以前」とは、以下のエントリを指します。
Cloud Marketplace
https://blogs.oracle.com/pshuff/entry/cloud_marketplace
Cloud Marketplace part 2
https://blogs.oracle.com/pshuff/entry/cloud_marpetplace_part_2
以前はMarketplaceに移動して、プリファレンスを構成してアカウントとComputeアカウントを紐付け、Marketplaceでアプリケーションを取得し、Compute Cloudでインスタンスをプロビジョニングする必要がありましたが、今日からは、Compute Cloudのインスタンス作成メニューでMarketplaceからイメージを選択し、Compute Instanceにプロビジョニングするだけでよくなりました。この変更の結果、Marketplaceの利用に必要な数多くのステップが削減されるだけでなく、事前構成済みのソリューションをCompute Instanceでプロビジョニングしたり、Compute Instanceを設定したりすることが簡単になっています。

Private Imageの下のMarketplaceタブに注目してください。検索エンジンと並んでMarketplaceのインスタンスのリストが新規Compute Instanceのプロビジョニングに統合されています。
Compute Instanceには、数週間前に導入された[Monitor]タブと同様に[Backup]タブが追加されました。これを使うとインスタンス全体のスナップショットの取得、ブート可能イメージとしてのスナップショットの保存、スナップショットに基づいた新規インスタンスのプロビジョニングができるようになります。

これにより、事前定義済みインスタンスをデフォルトのOSやMarketplaceインスタンスからプロビジョニングし、カスタマイズし、スナップショットを取得すれば、カスタマイズ後に取得したスナップショットから新規インスタンスをプロビジョニングすることができます。

3個目の新機能は、利用者がVMwareインスタンスを直接Compute Cloudのプライベートイメージにインポートできる、というものです。この機能のリリースの目的は、利用者がVMDK形式のイメージをOracle Cloudにインポートし、ほとんど修正無しで(もしくは全く修正せずに)実行できるようにすることです。これには、事後に複数のインターフェースを構成するのではなく、インポート時に複数のネットワーク・インターフェースを定義することが含まれます。インポート時に利用者がネットワークドライバを変更する必要はなく、Ravelloチームの経験を活用し、VMwareの定義をOracle Compute Cloudの定義にOrchestrationを使って変換し。ネットワーク定義を作成してCompute Instanceをスタートできるようにプロビジョニングします。
まとめると、この3個の新機能が本日リリースされ、Oracle Compute Cloud Serviceの利用が簡単になりました。これはデータセンターからクラウドへスムーズにサービスを移行できるようにするための継続的なサービスの改善の一つです。こうした改善は今から9月のOracle OpenWorldまでの間に発表されるものと併せて、利用者がキャパシティの拡張、ディザスタ・リカバリ、開発・テスト用途のために、Oracle Public Cloudを自身のデータセンターの拡張として利用できるようにするためのものです。

2016年8月19日

[Mobile] Oracle MAF 2.3.2 Released

原文はこちら。
https://blogs.oracle.com/mobile/entry/oracle_maf_2_3_2

MAF 2.3.2がご利用いただけるようになりました。このリリースには、iOSプラットフォームでMAFをご利用のお客様には影響があるいくつかの極めて重要なアップデートが含まれており、皆様がこのリリースを速やかに取り込まれることを推奨します。いつも通り、このリリースをJDeveloperのアップデート・センターからダウンロードできます。このリリースで導入された主要な機能をご紹介します。

Support for IPv6 only networks on iOS

先頃Appleは、Apple AppStoreに出される全てのアプリケーションはIPv6のみのネットワークをサポートする必要がある、と発表しました。MAF 2.3.2から、MAFアプリケーションはAppleの要件に準拠し、IPv6のみのネットワークで利用可能です。このサポートを得るためには、開発者はMAF 2.3.2でアプリケーションを再ビルドするだけでよいのです。AppleがIPv6のみのネットワークでのサポートをアクティブに検証していることを確認していますので、Appleから却下されないようにするため、お客様がこのリリースにアップデートすることは重要なことです。


WKWebview Support for iOS

この機能を使うと開発者はAMXコンテントタイプでWKWebViewレンダリングエンジンを使うことができます。WKWebViewを利用すると、AMXページのレンダリングパフォーマンスが劇的に改善されることが期待できます。MAF 2.3.2以後で作成された新規アプリケーションでは、WKWebViewがデフォルトでAMXで利用されるようになっています。既存のアプリケーションを2.3.2へ移行する場合はオプトインの機能です。WWWebViewを有効化するには、開発者ガイドにある手順に従ってください。
Oracle® Mobile Application Framework Developing Mobile Applications with Oracle Mobile Application Framework 2.3.2
Configuring the Web View of Application Features with AMX Content on iOS
http://docs.oracle.com/middleware/maf232/mobile/develop-maf/GUID-6F391DA6-3D6F-4823-A732-28851AC9DCAF.htm#ADFMF-GUID-228ED288-27F0-4476-A996-8BB12EDC51C4
期待されるパフォーマンスの改善を考慮すると、アプリケーションでAMXベースの機能を使ってらっしゃる場合にはWKWebViewを使うことを強く推奨します。

Support for generating quick start page layouts for common mobile patterns 

人気のあるモバイルパターンに基づくレイアウトを使ってAMXページを作成することがこれまでよりも簡単になる、すばらしい機能です。新しいAMXページ作成ウィザードには40個以上のレイアウトパターンを備えているので、モバイルUIの作成をさくっと始めることができます。
Oracle® Mobile Application Framework Developing Mobile Applications with Oracle Mobile Application Framework 2.3.2
How to Create a MAF AMX Page
http://docs.oracle.com/middleware/maf232/mobile/develop-maf/GUID-7E7342BA-86AF-48DE-BC7D-BB2D0D437040.htm#ADFMF25134
このレイアウトパターンはOracle Mobile UXチームの研究に基づいています。

Built-in Federated Authentication Support for Oracle Mobile Cloud Service and Other Oracle PaaS services 

この機能を使うと、簡単な設定で(しかもコーディングなしで)、Oracle Mobile Cloud Serviceや他のPaaSサービスで利用可能なFederated Authenticationの機能を使って、MAFアプリケーションは認証できるようになります。MAFアプリケーションの設定の詳細については、以下の開発者ガイドをご覧ください。
Oracle® Mobile Application Framework Developing Mobile Applications with Oracle Mobile Application Framework 2.3.2
How to Configure Single Sign-On in a MAF Application
http://docs.oracle.com/middleware/maf232/mobile/develop-maf/GUID-3975EBAB-DB9E-4BC2-B814-619F30AF897D.htm#ADFMF24777
この機能は、トークンリレーサービスを呼び出す汎用的なFederationシナリオでも利用できます。

UI Component Enhancements

  • ButtonやImageコンポーネントでのインラインSVGのサポート
    この機能を使うと、開発者はAMX ImageコンポーネントやcommandButtonコンポーネントとともにSVGを使うことができ、CSSを使って簡単にスタイルを変更・調整することができます。
  • InputTextのコンテンツをクリアするためのアフォーダンス
  • Filmstripコンポーネントでのページネーション・オーバーフローのサポート 

Data Visualization Enhancements

  • 新しいグラフの設計時UIでは、グラフのさまざまなセクションにデータをバインドしながら、エンドユーザーが動的なグラフのサンプルを表示することができるようになりました。
  • ピクトチャートの設計時サポート
  • Oracle Mapsを使ったGeoMapでのルート表示をサポート
  • Chartコンポーネントに対する数多くの機能強化
    • 対数軸のサポート
    • カテゴリラベルのワードラップ
    • 一定間隔のグラフ軸のサポート
    • 矩形、星形マーカーのサポート
    • 境界幅の変更機能
    • ファンネルスライス・ラベルの無効化機能
    • 遅延グラフ系列の強調表示をサポート
    • 積み重ね棒グラフでバーの上に合計数を表示する機能
    • グラフ上でのズームやスクロール方向を指定する機能