windows azureでのスケーラブルなjavaアプリケーション構築 (javaone tokyo 2012)

63
Windows Azure ででででででででで Java でででででででででで ( JavaOne Tokyo 2012 BoF1-02 / #jt12_b102 / 2012/04/04) 日日日日日日日日日日日日日 日日日日日日 & 日日日日日日日日日日日日 Windows Azure 日日日日日日 日日日日日日日日 でででで (@satonaoki)

Upload: naoki-sato

Post on 24-May-2015

1.994 views

Category:

Technology


0 download

DESCRIPTION

Windows AzureでのスケーラブルなJavaアプリケーション構築 JavaOne Tokyo 2012 (2012/04/04-05) http://www.oracle.com/javaone/jp-ja/ BoF1-02 2012/04/04 17:00-18:00 六本木アカデミーヒルズ49 [カンファレンスルーム2] 「Windows AzureでのスケーラブルなJavaアプリケーション構築」 #jt12_b102 概要 Windows Azureは、迅速なアプリケーションの構築、デプロイ、管理を可能にする、オープンで柔軟性のあるクラウド プラットフォームです。Windows Azureでは、アプリケーション構築のために多様な言語、フレームワーク、ツールを利用可能です。Javaクライアント ライブラリや、Windows Azure上で主要なJavaアプリケーション サーバーの稼働を可能にするEclipseプラグインなど、Windows AzureはJavaを強力にサポートしています。本セッションでは、Windows AzureにおけるスケーラブルなJavaアプリケーション構築について取り上げます。 講演者情報 日本マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部 Windows Azure デベロッパー エバンジェリスト 佐藤 直生 氏 https://oj-events.jp/public/session/view/174

TRANSCRIPT

Page 1: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure でのスケーラブルなJava アプリケーション構築(JavaOne Tokyo 2012 BoF1-02 / #jt12_b102 / 2012/04/04)日本マイクロソフト株式会社 デベロッパー & プラットフォーム統括本部Windows Azure デベロッパー エバンジェリスト

佐藤直生 (@satonaoki)

Page 2: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

#jt12_b102

Page 3: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

スピーカー紹介佐藤直生 ( さとうなおき )

Twitter: @satonaokiFacebook: satonaoki

1999-2010: Oracle (Java /Oracle Fusion Middleware)2010-: Microsoft (Windows Azure)

Page 4: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

セッション概要Windows Azure は、迅速なアプリケーションの構築、デプロイ、管理を可能にする、オープンで柔軟性のあるクラウド プラットフォームです。Windows Azure では、アプリケーション構築のために多様な言語、フレームワーク、ツールを利用可能です。 Java クライアント ライブラリや、 Windows Azure 上で主要な Java アプリケーション サーバーの稼働を可能にする Eclipse プラグインなど、 Windows Azure は Java を強力にサポートしています。本セッションでは、 Windows Azure におけるスケーラブルな Java アプリケーション構築について取り上げます。

Page 5: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure

Page 6: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

What is the cloud?

インターネット スケールで

多様なデバイスやエンドポイントを接

続するコンピューティング

のアプローチ

Page 7: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

クラウドコンピューティ

ングのパターン

UsageCom

pute

Average

Inactivity

Period

オン & オフ

予測できないバースト

Com

pute

Average Usage

急成長

Average Usage

Com

pute

予測可能なバースト

Com

pute

Page 8: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

クラウド サービス

Software-as-a-Service

利用

SaaSPlatform-as-a-Service

構築

PaaSInfrastructure-as-a-

Service

ホスト

IaaS

Page 9: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

クラウド サービスオンプレミス

Storage

Servers

Networking

O/S

Middleware

Virtualization

Data

Applications

Runtime

管理

対象

Infrastructure(as a Service)

Storage

Servers

Networking

O/S

Middleware

Virtualization

Data

Applications

Runtime

ベンダーが管理

管理

対象

Platform(as a Service)

ベンダー

が管理

管理

対象

Storage

Servers

Networking

O/S

Middleware

Virtualization

Applications

Runtime

Data

Software(as a Service)

ベンダー

が管理

Storage

Servers

Networking

O/S

Middleware

Virtualization

Applications

Runtime

Data

Page 10: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure

Microsoft データセンターでのアプリケーションのホスト、構築、スケーリングを可能にする、包括的なサービス群

次世代アプリのための設計

既存投資を活用

オープンで柔軟

Page 11: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

11

コンピューティング ストレージ

キャッシュCDN サービスバス

データベース

VM レポーティング

アクセス制御

Page 12: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Microsoft クラウド データセンター

投資

クラウド インフラに 23億ドル以上投資200 以上のサービスを24x7 で提供地理的に分散されたデータセンター迅速なモジュール型モデル 30,000 人以上のエンジニアが、クラウド ベースの活動に従事2,000 人以上が、クラウド インフラのエンジニアリングと運用に従事

優れた運用

99.9% 稼働時間の SLA24x7 の運用センター標準化されたコスト レポートセキュアでコンプライアンスに従ったインフラFISMA 認証、 SAS 70 / ISO 27001 準拠カーボン フットプリント削減

Page 13: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure データセンターNorth America Region Europe Region Asia Pacific Region

3 つの大陸に、 6 つのデータセンターアプリのデプロイ時に、データセンターを選択

North Central US

South Central US

Northern Europe

Western Europe East Asia

South East Asia

Page 14: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure

コア サービス

コンピューティング ストレージ データベース

Page 15: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

コンピューティングPaaS モデル• アプリ パッケージに、アプリの

コードが含まれている• PaaS サービスとファブリック コ

ントローラーが、サービスへのアプリのデプロイを管理

• 各サービス (DB 、メッセージング、 Web…) が、アプリにスケーラビリティと回復性を提供

アプリ

ネットワークロード バラン

サー

アプリパッケージ

Power on &Configure

virtual server

Power on &Configure

virtual server

http://myapp.cloudapp.net

Windows Azure ポータル

インスタンス数 2

Page 16: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure ストレージスケーラブルなクラウド ストレージストレージ アカウントあたり 100TB大容量と高スループットに対応するために、自動スケール

REST サービスでアクセス可能Windows Azure コンピューティングからアクセスインターネット経由でどこからでもアクセス.NET や多くの言語のクライアント ライブラリ

多様なストレージの種類テーブル – エンティティのグループ ( 名前 / 値ペア )キュー – シンプルな非トランザクション型のメッセージ キューBLOB – バイナリ ストレージDrive – コンピューティング インスタンスにマウントされるNTFS VHD

Page 17: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

SQL Azure データベース

SQL Server の RDB モデルを、サービスとして提供既存の API やツールをサポートクラウドのために構築され、高可用性と耐障害性を備える複数データセンターにまたがって、容易に DB のプロビジョニングや管理を実行

SQL Azure は論理サーバーを提供TDS プロトコルを理解するゲートウェイ サーバーTDS クライアントには、 SQL Server のように見える実データは、複数のバックエンド ノードに格納されている

Page 18: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

SQL Azure データベース

論理的な最適化はサポートされているインデックス、クエリ プランなど…

物理的な最適化はサポートされないファイル グループ、パーティションなど…

物理ストレージは、透過的に管理

Page 19: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

ビルディング ブロック サービス

複数の ID プロバイダーを使った認証のサポートWindows Live ID 、 Facebook 、 Yahoo! 、 Google 、 AD と容易に統合業界標準と既存 .NET API のサポート

クラウドで分散 疎結合アプリを構築するための、メッセージングと接続性オンプレミスとクラウドの両方にまたがったハイブリッド アプリを可能に永続的な Pub/Sub メッセジングのための、キューとトピック

Windows Azure アプリ向けの分散インメモリー キャッシュWindows Azure アプリ向けのセッション状態プロバイダーデータのキャッシュのための .NET クライアント ライブラリ

アクセス制御

キャッシュ

サービスバス

Page 20: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

データ サービス

オンプレミス SQL Server とクラウドの SQL Azure との間のデータ同期同じ、あるいは別のデータセンターにある SQL Azure 間のデータ同期

SQL Server Reporting を、サービスとして提供既存ツール (BIDS) を使ったレポート作成高度なデータ可視化 ( 地図、チャート、 Tablix) をレポートに含め、多様なフォーマットにエクスポート可能ブラウザーで直接参照するか、レポート ビューアー コントロールでレンダリングレポートのレンダリングや管理ための Web サービス インタフェース

Reporting

Data Sync

Page 21: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure Traffic Manager1. Web アプリやサービスに、より高いパフォーマンス

や可用性を提供するために設計されたもの

2. 複数のホステッド サービスにまたがって 負荷分散

パフォーマンス

最も優れた /近いデプロイにユーザーを向かわせる

耐障害性

可用性をベースに、トラッフィクを別のデプロイにリダイレクト

ラウンド ロビン

全ホステッド サービスに、トラッフィクを等しく分散

3 つのモード

Page 22: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure CDN

より良いユーザー エクスペリエンスとグローバル リーチ世界 24 カ所以上の、幅広いリーチ99.95% の可用性

cdn.customer.com をブラウスGETfoo.jpg

Windows Azure Storage

Azureユー

ザーが、コンテンツを

アップロード

Container

ECN NODE 1 - LONDON

EDGE CACHING SERVERS

ECN NODE 2 - TOKYO

ECN NODE…

Page 23: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure シナリオ次の要件が必要なアプリに最適

スケーラビリティ可用性耐障害性

一般的なアプリ

Web サイト計算集中型アプリデバイス アプリWeb APIソーシャル ゲーム

Page 24: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure ストレージと Java

Page 25: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

多数の言語向けのストレージ ライブラリ

Page 26: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure SDK for Java

• Windows Azure Libraries for Java• Windows Azure Plugin for Eclipse with Java

http://www.windowsazure.com/en-us/develop/java/

Page 27: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure Libraries for Java

次のサービスに対する Java クライアント ライブラリ • Windows Azure ストレージ (BLOB 、テーブル、キュー )• Windows Azure サービス バス ( キュー、トピック )• サービス ランタイム (Azure 実行環境に関する API)• (SQL Azure に対しては、 Microsoft JDBC Driver for SQL

Server を利用可能 )

手動ダウンロード、またはMaven 、 GitHub で入手

https://github.com/WindowsAzure/azure-sdk-for-java

<dependency> <groupId>com.microsoft.windowsazure</groupId> <artifactId>microsoft-windowsazure-api</artifactId> <version>0.2.0</version></dependency>

Page 28: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)
Page 29: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

テーブル ストレージのエンティティ

public class CustomerEntity extends TableServiceEntity { public CustomerEntity(String lastName, String firstName) { this.partitionKey = lastName; this.rowKey = firstName; }

public CustomerEntity() { } String email; String phoneNumber; // getter/setter は省略}

Page 30: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

テーブル ストレージのクエリ

// パーティション キーが「 Smith」のフィルター条件を作成String partitionFilter = TableQuery.generateFilterCondition( TableConstants.PARTITION_KEY, QueryComparisons.EQUAL, "Smith");

// パーティション クエリを指定 .TableQuery<CustomerEntity> partitionQuery = TableQuery.from("people", CustomerEntity.class).where(partitionFilter);

// 結果をループし、エンティティの情報を表示for (CustomerEntity entity : tableClient.execute(partitionQuery)) { System.out.println(entity.getPartitionKey() + " " + entity.getRowKey() + "\t" + entity.getEmail() + "\t" + entity.getPhoneNumber());}

Page 31: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure コンピューティングとJava

Page 32: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure コンピューティングとは ?

クラウドにある「仮想マシン」3 種類

Web ロール ワーカー ロール

VM ロール

Page 33: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

何を実行できるか ?

Page 34: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

ロールとインスタンス

実行時に、各ロールは 1 つ以上のインスタンス上で実行される

ロール インスタンスは、専有 VM にデプロイされた、一連のコード、構成、ローカル データ

ロールは、ホステッド サービスの中で定義される

ロール定義は、以下を指定 :AVM サイズ通信エンドポイントローカル ストレージ リソース など…

Page 35: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

ロールとインスタンス1 つの Web ロールと 1 つのワーカー ロールからなるホステッド サービスの例

ホステッド サービス

VM1 VM2 VM3 VM4

VM5 VM6 VM7 VM8

VM9 VMn

VM1 VM2 VM3 VM4

VM5 VMn

Page 36: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

スケーラブルなアプリのパターンWindows Azure は、従量課金のスケール アウト型プラットフォーム

非同期

Page 37: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure SDK/ ツール

.NetVisual Studio ツール.NET クライアント ライブラリ

Node.jsPowerShell ツールNode.js for WindowsIISNodeNode.js クライアント ライブラリ

JavaEclipse ツールJava クライアント ライブラリ

PHPコマンド ライン ツールPHP クライアント ライブラリ

Page 38: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

ロールのライフサイクルすべてのロールは、 RoleEntryPoint を拡張

ロールは、 RoleEnvironment を介してステータスを報告

StatusCheck

StatusCheck

StatusCheck

Stopping

メソッド イベント ステータス

Page 39: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

ワーカー ロール

While(true) ループ内で、メッセージをポーリングしてポップするMap/Reduce パターン、バックグラウンド画像処理など

TcpListener や WCF サービス ホストを作成WCF サービスの実行など

OnStart または Run メソッドが、 Process.Start() を実行スタートアップ タスクが、バックグラウンド / フォアグラウンド プロセスをインストール / 実行カスタム RoleEntryPoint ( 実行可能、または .NET アセンブリ )DB サーバー、 Web サーバー、分散キャッシュの実行など

Page 40: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Web ロール

ASP.NET Web Form 、 ASP.NET MVCFastCGI アプリ (PHP など )複数の Web サイト

オプションで RoleEntryPoint を実装可能

Page 41: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

パッケージングとコーディングの理解Windows Azure コンピューティングは、 2 つのファイルで記述されるサービス定義 (*.csdef)サービス構成 (*.cscfg)

コードはサービス定義とともに ZIP され、 パッケージされる (*.cspkg)暗号化 (ZIP処理 ( コード + *.csdef)) == *.cspkg

*.cspkg + *.cscfg を使って、 Windows Azure コンピューティングにデプロイ

Page 42: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure 上のサービスを記述ロール、ポート、証明書、構成設定、スタートアップ タスク、 IIS 構成など…

アップグレード、または新規デプロイによってのみ、変更可能

Page 43: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

<?xml version="1.0" encoding="utf-8"?><ServiceDefinition name="WebDeploy" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

<WebRole name="WebUX"><Startup>

<Task commandLine="..\Startup\EnableWebAdmin.cmd" executionContext="elevated" taskType="simple" /></Startup><Imports>

<Import moduleName="RemoteAccess" /><Import moduleName="RemoteForwarder"/>

</Imports><Sites>

<Site name="Web"><Bindings> <Binding name="HttpIn" endpointName="HttpIn"/></Bindings>

</Site></Sites><Endpoints>

<InputEndpoint name="HttpIn" protocol="http" port="80"/><InputEndpoint name="mgmtsvc" protocol="tcp" port="8172" localPort="8712"/>

</Endpoints>

Page 44: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

ランタイム値を与えるスケール ( インスタンス数 ) 、構成設定、使用する証明書、 VHD など…

管理ポータルや API を介して、いつでも更新可能

Page 45: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

<?xml version="1.0"?><ServiceConfiguration serviceName="WebDeploy" xmlns="http://schemas.microsoft.com/serviceHosting/2008/10ServiceConfiguration"> <Role name="Webux">

<Instances count="1"/><ConfigurationSettings>

<Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true/><Setting name="Microsoft.WindowsAzure.plugins.RemoteAccess.Enabled" value="True"/><Setting name="Microsoft.WindowsAzure.plugins.RemoteAccess.AccountUsername" value="dunnry"/><Setting name="Microsoft.WindowsAzure.plugins.RemoteAccess.AccountEncryptedPassword" value="MIIBrAYJKoZIhvcNAQcDoIIB"/><Setting name="Microsoft.WindowsAzure.plugins.RemoteAccess.AccountExpiration" value="2010-12-23T23:59:59.0000000-07"/><Setting name="Microsoft.Windows Azure.Plugins.RemoteForwarder.Enabled" value="True"/>

<ConfigurationSettings><Certificate>

<Certificates name="Microsoft.WindowsAzure.Plugins.remoteAccess.PasswordEncryption" thumbprint="D6BE55AC439FAC6CBEBAF"/>

</Certificate></Role>

</ServiceConfiguration>

Page 46: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

ロールで、任意の実行可能ファイルを実行.NET コードに制限されないコードなしで、カスタム プロセスを実行プロセスが停止すると、ロールは自動的に再起動

Page 47: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="WindowsAzureProject11" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

<WorkerRole name="WorkerRole1" vmsize="Small">

<Runtime executionContext="limited">

<EntryPoint>

<ProgramEntryPoint commandLine="myProcess.exe" setReadyOnProcessStart="true" />

</EntryPoint>

</Runtime>

<Endpoints>

<InputEndpoint name="Endpoint1" protocol="tcp" port="80" />

</Endpoints>

</WorkerRole>

</ServiceDefinition>

Page 48: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure の VM サイズ

Windows Azure多様な VM サイズをサポートサービス定義でサイズを設定 – ロールの全インスタンスは同じサイズになるサービスは複数のロールを持てるノードあたりの性能と、複数ノードによる可用性のバランス

Extra Small 共有 768M 20GB .1.75

Small 1 1.7GB 250GB .10.49

Medium 2 3.5GB 500GB .20.98

Large 4 7GB 1000GB .41.96

Extra large 8 15GB 2000GB .83.92

Page 49: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure のネットワーキングWindows Azure における、 3 種類のエンドポイント入力エンドポイント (VIP) 、内部エンドポイント、 Windows Azure Connect

サービス定義で、接続性規則を指定NetworkTrafficRules

ポート範囲ローカル ポートTCP のみ

Page 50: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure Plugin for Eclipse with Javaワーカー ロール上で動く Java サーバーをデプロイするためのツール

Tomcat 、 Jetty 、 JBoss 、 GlassFish 、カスタム サーバー向けの、スタートアップタスクのサンプルローカル エミュレータでのテスト実行デプロイのためのパッケージ作成リモート デバッグセッション アフィニティ

Page 51: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)
Page 52: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Hello World / Service Management API• 通常の Java Web アプリを開発

• 「 Dynamic Web Project」を新規作成• JSP を追加

• Windows Azure Libraries for Java を利用• Windows Azure Libraries for Java を、ライブラリとして追加• Service Management API を使って、ロール名、ロール ID 、

インスタンスの IP アドレスなどを表示するコードを追加

Page 53: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Hello World / Service Management API• Windows Azure 向けにパッケージング

• 「Windows Azure Project」を新規作成• Tomcat 向けのスタートアップ タスクを

サンプルからコピーし、適宜編集• JDK 、 Tomcat の ZIP アーカイブをコピー

• ( 本番環境では、 Azure ストレージからのダウンロードがオススメ )• Web アプリの WAR ファイルを、

Dynamic Web Project からエクスポート• 既定の「エミュレーターでのテスト」モードでビルド• ローカルのエミュレーターでテスト実行し、ブラウザで確認• リモート デバッグを有効化• ブレークポイントを追加し、デバッグ

Page 54: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

エミュレーターでのテスト

ワーカーロール

Tomcat

localhost:81

localhost:8080

Page 55: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Hello World / Service Management API• Windows Azure 向けにパッケージング

• インスタンス数を変更• リモート デスクトップ接続を設定• 「クラウドへのデプロイ」

モードに変更し、ビルド• Windows Azure 管理ポータルで、

Azure パッケージをデプロイし、ブラウザで確認

• リモート デスクトップで、インスタンスに接続

Page 56: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure へのデプロイ

ワーカーロールTomcat

Tomcat

Tomcat***.cloudapp.net:80

プライベート IP:8080

Page 57: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

セッション アフィニティ• Java Web アプリを変更

• HTTP セッションを使うステートフルなJSP ( セッション内での呼び出し回数を表示するカウンター ) を作成

• Windows Azure 向けにパッケージング• WAR ファイルを再度エクスポート• 既定のモード ( セッション アフィニティなし ) で、 Azure にデプロイ• ブラウザから繰り返しアクセスすると、毎回異なるインスタンスにルー

ティングされてしまう…• セッション アフィニティを有効化して、 Azure にデプロイ• ブラウザからアクセスすると、毎回同じインスタンスにルーティングされ、

HTTP セッションが問題なく維持される ! ( スティッキーなルーティング )• ( インスタンス / アプリケーション サーバー障害に対応するためには、別途 HTTP

セッションのレプリケーションや永続化が必要 )

Page 58: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

セッション アフィニティ

ワーカーロール

IIS ARR Tomcat

IISARR Tomcat

IIS ARR Tomcat***.cloudapp.net:80

プライベート IP:31221(入力エンドポイント )

プライベート IP:8080(内部エンドポイント )

IIS モジュールの ARR (Application RequestRouting) が、 Cookie を制御し、特定のセッションに属する複数の HTTP リクエストを常に同じ Java サーバーにルーティング

Page 59: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Interstage Application Serverpowered by Windows Azure

Page 60: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Copyright 2011 FUJITSU LIMITED

世界初!商用 Java アプリケーション実行基盤

エンドユーザー

FGCP/A5

既存アプリケーション

流用

新規作成

開発・運用者

プラグインJava アプリ実行基盤

Java アプリケーション

インスタンスインスタンス追加・削除

使い慣れたツール( Eclipse)でA5 へ配備可能

Java アプリ実行基盤

Java アプリケーション

インスタンス

今までと同様にアプリケーション開発・修正が可能

Windows Azure Platform で世界初! (注 )商用 Java 実行基盤 Windows Azure 上で Java アプリケーションが動作 Java 標準ツールで業務システムを短期間で構築 業務負荷に応じたシステム運用

(注) 2011年 8月 1 日時点弊社調べ

新規アプリケーション

60

Page 61: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

http://WindowsAzure.com• ガイド

• ドキュメント• 料金 など

• 無料評価版あり

Page 62: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)

Windows Azure & Java の情報源WidnowsAzure.com > Java デベロッパー センターhttp://www.windowsazure.com/ja-jp/develop/java/ ( 日本語 )http://www.windowsazure.com/en-us/develop/java/ (英語、おすすめ )( 言語切り替えは、ページ左下で )

Windows Azure Developer Guidance > Java Developer Guidancehttp://msdn.microsoft.com/en-us/library/windowsazure/hh690943.aspx (英語 )

Page 63: Windows AzureでのスケーラブルなJavaアプリケーション構築 (JavaOne Tokyo 2012)