12月, 2011 のアーカイブ

Windows Azure Advent Calendarに参加します。24日目の予定でしたが、訳あって25日目になりました…

 

 

Webアプリのセッション

Azure使いの皆さんはよくご存知の通り、Windows Azure コンピューティングのロール インスタンス (仮想サーバー) の手前に配置されるロード バランサーのアルゴリズムは、非常にシンプルなラウンド ロビンのみです。

ステートレスなWebアプリの方がスケールアウトが容易で、クラウド向きだとは分かっていても、既存環境からの移行や開発生産性などの理由で、Webアプリでステートフルなセッションを使っている場合は少なくないと思います。

ここではまず、Webアプリのセッションについて、復習も兼ねてまとめてみたいと思います。よくご存知の方は、読み飛ばしてくださいませ。

Webアプリにおけるセッションとは、特定のクライアント (主にWebブラウザ) と特定のWebアプリの間の一連のHTTPリクエスト群を関連付けることで、本質的にステートレスなHTTPプロトコルの上で、仮想的にステートフルな通信を実現するものです。これによって、複数のHTTPリクエストにわたって、セッション状態を維持することが可能となります。

Webアプリ開発言語でのセッションのサポートに関するリンクを、いくつか挙げておきます。

 

 

 

どの言語でも、セッションの基本的な概念は類似しています。セッションの新規作成、削除、タイムアウト (クライアントからのアクセスがしばらくないセッションの無効化)、セッション データ (名前/値ペア) の設定/取得がサポートされています。

クライアントとサーバー プロセスとの間でセッションを識別するために、Cookieに格納された、またはURL内に埋め込まれたセッションIDを使います。Cookieが使われるケースが、ほとんどでしょう。

既定では、特定のクライアントに対応するセッション情報は、単一のサーバー プロセスのメモリ上だけに保持されています。ですので、複数のサーバー プロセス群が同じWebアプリをホストするクラスタ環境では、特定のクライアントの一連のリクエストが同じサーバー プロセスにルーティングされ続けない限り、セッション情報にアクセスできずに、正常に動作しなくなるわけです。

クラスタ環境でセッションを使うWebアプリをで動作させる対応策は、2つあります。1つはセッション アフィニティ/スティッキー セッション、もう1つはセッションの永続化/レプリケーションです。

セッション アフィニティ/スティッキー セッション

セッション アフィニティ/スティッキー セッションとは、サーバー プロセス群の手前に位置し、ルーティング/負荷分散機能を提供するものが、背後のサーバー プロセス群のうち、リクエスト元のクライアントのセッションに属する処理を以前していたサーバー プロセスに対してルーティングする機能のことです。

「サーバー プロセス群の手前に位置するもの」とは、具体的にはロード バランサーや、(サーバー プロセスとWebサーバーが分離している場合は) ApacheやIISなどのWebサーバーが考えられます。

これらは、サーバー プロセスが返すセッションID Cookieに、どのサーバー プロセスかを示す追加情報を追加したり、独自のCookieを別途設定したり、セッションIDとサーバー プロセスのマッピング情報を保持したりすることで、適切なサーバー プロセスへのルーティングを実現します。

セッションに属さないリクエストや、セッション内の初回のリクエストに対しては、セッション アフィニティのルーティングは行われず、ラウンド ロビンなどの指定されたアルゴリズムで、負荷分散を行います。

セッションの永続化/レプリケーション

複数のサーバー群を配置するクラスタ環境を使う主な理由は、スケーラビリティと可用性の向上です。ですが、クラスタ内の「いずれか1台」に障害が発生する確率は、サーバー台数が多いほど増加します。1サーバーに障害が発生することでエラーが発生してしまうと、(可用性の定義にもよりますが) 可用性の低下、あるいは (セッション情報の喪失やエラーによるリトライなど) ユーザーの満足度低下を引き起こしてしまうでしょう。

セッションに話を戻しましょう。セッション アフィニティが実現されていても、セッション情報を保持しているサーバー プロセスに障害が発生し、リクエストを処理できなくなると、セッション情報が失われます (その結果起こる問題は、Webアプリの作り次第)。

こういったサーバー プロセス障害に対応するためには、セッション情報を保持しているサーバー プロセス (プライマリー サーバー) が、自身が保持するセッション情報を、他のサーバー プロセス (セカンダリー サーバー)が取得できるようにする必要があります。

主なアプローチは、2つあります。1つは、プライマリー サーバーが、自身のメモリ上に加えて、共有可能な外部ストア (外部のリレーショナル データベース、外部のストレージ、共有ファイル システム/共有ストレージ、インメモリー キャッシュ サーバーなど) に、セッション情報を随時格納しておく方法です。セカンダリー サーバーでセッション情報が必要となった場合には、これらの外部ストアからセッション情報を読み込みます。

別のアプローチとしては、プライマリー サーバーが、1つ以上のセカンダリー サーバーにセッション情報を随時送信することです。セカンダリー サーバーの数や選択などにバリエーションがありますが、基本的でセカンダリー サーバーがセッションが必要となった際には、すでにメモリ上にセッション情報がある、ということになります。

 

 

 

 

 

 

ここまでは、セッション アフィニティのルーティングがある状態でのセッションの永続化/レプリケーションを考えてきました。が、前述の通り、Windows Azureのロード バランサーは、セッション アフィニティのルーティングをしてくれません… この場合、(頻度の少ない、サーバー障害後のフェイルオーバー時ではなく) 定常的に頻繁にセカンダリー サーバーへのルーティングが発生してしまうので、セッションの永続化/レプリケーションはますます重要になります。

Windows Azure Plugin for Eclipse with Java

前置きはここまでにして、本題に入りましょう。

Windows Azure Plugin for Eclipse with Javaは、Tomcat、JettyなどのJavaアプリケーション サーバーをWindows Azureのワーカー ロールで実行するためのAzureパッケージ作成を支援する、Eclipseプラグインです。スタートアップ タスクなどを活用して、JDK、Javaアプリケーション サーバー、Java Webアプリのインストールやサーバー プロセス起動を自動化します。

今月 (2011年12月) リリースされたWindows Azure Plugin for Eclipse with JavaのCTPでは、「1つのチェック ボックスだけで、ステートフルなクラスタリングされたJavaアプリケーションへの対応が可能になる、セッション アフィニティ (スティッキー セッション) サポート」なる新機能が提供されています。具体的に何をしてくれるのか、気になりますよね?

 

Windows Azure Plugin for Eclipse with Java – December 2011 CTP has released. New features include:

Session affinity (“sticky sessions”) support: Helping enable stateful, clustered Java applications with just a single checkbox. For more information, see Session Affinity.

 

 

Java Webアプリのサンプル

Windows Azure Plugin for Eclipse with Javaは、Java WebアプリのAzure向けのパッケージングを行うものなので、Java Webアプリ自体の開発には必ずしもEclipseを使う必要はありません。とはいえ、ついでなので、Eclipse WTP (Web Tools Project) でセッションを使うJSPページ1つだけからなるWebアプリを作ってみましょう。

詳細な手順は割愛しますが、「Dynamic Web Project」を新規作成し、次のような「JSP File」を新規作成したら、ローカルのTomcat環境でテストしてみましょう。

<%@page import="java.net.InetAddress"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HTTP Session</title>
</head>
<body>
<%
String counterAttribute = "counter";
Integer counter = 0;

if (session.getAttribute(counterAttribute) != null) {
	counter = (Integer)(session.getAttribute(counterAttribute));
}

session.setAttribute(counterAttribute, ++counter);
%>

<ul>
<li>Session ID: <%= session.getId() %></li>
<li>Counter: <%= counter %></li>
<li>Host Address: <%= InetAddress.getLocalHost().getHostAddress() %></li>
<li>Session Creation: <%= new Date(session.getCreationTime()) %></li>
</ul>

</body>
</html>

このシンプルなJSPは、セッションID、(セッション内のリクエストごとに増加する) カウンター、Javaアプリケーション サーバー (Tomcat) のIPアドレス、セッション作成日時を表示します。ローカル環境では、リロードするごとにカウンターが増加し、それ以外の情報には変化がないはずです。

Tomcatを含む、Java Servlet仕様に準拠したアプリケーション サーバーでは、セッションIDの送受信のために「JSESSIONID」という名前のCookieが使われます。

TomcatのAzure向けパッケージング

Windows Azure Plugin for Eclipse with Javaによって、「Windows Azure Project」という新しいプロジェクト テンプレートが追加されているので、このプロジェクトを新規作成します。インスタンス数は2以上に増やしておきましょう (プロジェクト作成後に変更も可能)。

「samples/startupApacheTomcat7.txt」を「<ロール名>/approot/startup.cmd」にコピーし、環境や好みに合わせて適宜編集します。

今回は、Azureパッケージ サイズの削減のため、JDKとTomcatを、事前にアップロードしておいたWindows Azure BLOBストレージから、ロール インスタンス起動時にダウンロードするようにしました。

:: *** Sample startup script containing the steps for starting Apache Tomcat and deploying a WAR file.
:: *** (Last tested with Apache Tomcat 7.0.22)

:: To use the sample, follow these steps:
:: 1) Copy all this content into approot/startup.cmd in the role folder, close this file, and edit the copy
:: 2) Place a JDK distribution as jdk.zip under approot
:: 3) Place an Apache Tomcat 7.x distribution as tomcat7.zip under approot in your project
::    3.1) If you want to download the server into Azure directly from a URL instead, then
::         uncomment the next line and modify the URL as appropriate:
:: cscript /NoLogo "util\download.vbs" "http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.zip" "tomcat7.zip"

cscript /NoLogo "util\download.vbs" "https://********.blob.core.windows.net/java/jdk.zip" "jdk.zip"
cscript /NoLogo "util\download.vbs" "https://********.blob.core.windows.net/java/tomcat7.zip" "tomcat7.zip"

:: 4) Update SERVER_DIR_NAME below as appropriate:
::    (IMPORTANT: There must be no trailing nor leading whitespace around the setting)
:: SET SERVER_DIR_NAME=apache-tomcat-7.0.22

SET SERVER_DIR_NAME=apache-tomcat-7.0.23

:: 5) To deploy your own WAR file, place it in approot and update WAR_NAME below:
::   (IMPORTANT: There must be no trailing nor leading whitespace around the setting)

:: SET WAR_NAME=HelloWorld.war
SET WAR_NAME=SessionApp.war

:: *****************************************************************
:: *** Deployment and startup logic
:: *** (Do not make changes below unless you know what you're doing.

rd "\%ROLENAME%"
mklink /D "\%ROLENAME%" "%ROLEROOT%\approot"
cd /d "\%ROLENAME%"
cscript /NoLogo util\unzip.vbs jdk.zip "%CD%"
cscript /NoLogo util\unzip.vbs tomcat7.zip "%CD%"

copy %WAR_NAME% "%SERVER_DIR_NAME%\webapps\%WAR_NAME%"

cd "%SERVER_DIR_NAME%\bin"
set JAVA_HOME=\%ROLENAME%\jdk
set PATH=%PATH%;%JAVA_HOME%\bin
cmd /c startup.bat

@ECHO OFF
if %ERRORLEVEL%==0 exit %ERRORLEVEL%
choice /d y /t 5 /c Y /N /M "*** Windows Azure startup failed - exiting..."
exit %ERRORLEVEL%

Webアプリは「<ロール名>/approot/」に置くことにしたので、JSPを含んでいる「Dynamic Web Project」を右クリックし、「<ロール名>/approot/」に「WAR file」を「Export」します。

リモート デスクトップやデバッグの設定も簡単にできるので、興味のある方はドキュメントを参考にしてお試しください。

さて、この状態でクラウド向けにビルドしてcspkg/cscfgファイルを生成し、Windows Azure管理ポータルからデプロイしましょう。

JSPにアクセスし、リロードを繰り返すと、ランダムに異なるロール インスタンス (IPアドレス) にルーティングされ、その度にセッション (カウンター、作成日時) が初期化されることが分かります。

これは、Windows Azureのロードバランサーでセッション アフィニティのルーティングが行われず、複数のTomcat間でセッションの永続化/レプリケーションも行われていないため、アプリが正しく動作していないことを示しています。

セッション アフィニティ機能の有効化

それでは、セッション アフィニティ機能を有効化してみましょう。ロールのプロパティで、チェック ボックスをチェックするだけです。

再度、ビルドとデプロイを行い、JSPをテストしてみましょう。今回は、同じブラウザからリロードを繰り返しても、同じロール インスタンス (IPアドレス) にルーティングされ続け、セッションの初期化が起こらないはずです。

また、ブラウザを再起動するか、あるいは別のブラウザを使うと、別のロール インスタンス (IPアドレス) にルーティングされることがあることも分かります。

つまり、外部からの観察では、セッション アフィニティのルーティングが行われているように見えています。

セッション アフィニティ機能の内部実装

では、内部実装はどうなっているでしょうか?

セッション アフィニティ機能を有効化すると、サービス定義ファイル ServiceDefinition.csdef で、ConfigureARR.cmd がスタートアップ タスクとして定義されます。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<ServiceDefinition xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" name="WindowsAzureProject">
  <WorkerRole name="TomcatRole" vmsize="ExtraSmall">
    <Startup>
      <!--Do not delete this startup task or insert tasks before it. It was created by Windows Azure Plugin for Eclipse with Java to enable session affinity. -->
      <Task commandLine=".sessionaffinity\ConfigureARR.cmd http http_SESSION_AFFINITY" executionContext="elevated" taskType="simple">
        <Environment>
          <Variable name="EMULATED">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated"/>
          </Variable>
        </Environment>
      </Task>
      <!-- Sample startup task calling startup.cmd from the role's approot folder -->
      <Task commandLine="startup.cmd" executionContext="elevated" taskType="simple"/>
    </Startup>
    <Runtime executionContext="elevated">
    	<EntryPoint>
	  		<!-- Sample entry point calling run.cmd from the role's approot folder -->
    		<ProgramEntryPoint commandLine="run.cmd" setReadyOnProcessStart="true"/>
    	</EntryPoint>
    </Runtime>
    <Imports>
  	  <Import moduleName="RemoteAccess"/>
  	  <Import moduleName="RemoteForwarder"/>
    </Imports>
    <Endpoints>
      <InputEndpoint localPort="31221" name="http" port="80" protocol="tcp"/>
    <InternalEndpoint name="http_SESSION_AFFINITY" protocol="tcp">
        <FixedPort port="8080"/>
      </InternalEndpoint>
    </Endpoints>
  </WorkerRole>
</ServiceDefinition>

「<ロール名>/approot」の下に「.sessionaffinity」というフォルダーが生成されますが、Eclipseからは見えないので、エクスプローラなどから確認しましょう。このフォルダーには、次の内容を含むスタートアップ タスクの ConfigureARR.cmd と、SessionAffinityAgent.exe が存在します。

@rem check if running in emulator , if yes then ignore session affinity settings silently
if "%EMULATED%"=="true" goto Exit

@rem creating path variable for session affinity folder to refer in multiple places
set  WEBPI_PATH="%ROLEROOT%\approot\webpi"
rmdir /S /Q %WEBPI_PATH%
mkdir %ROLEROOT%\approot\webpi

@rem Downloading webpicmdline
cscript "%ROLEROOT%\approot\util\download.vbs" "http://go.microsoft.com/?linkid=9752821" "%WEBPI_PATH%\webpicmd.zip"

@rem unzipping the contents of zip file
cscript %ROLEROOT%\approot\util\unzip.vbs "%WEBPI_PATH%\webpicmd.zip" "%WEBPI_PATH%\"

@rem Installing ARR
%WEBPI_PATH%\webpicmdline /accepteula /Products:ARR

@rem removing wepi folder
rmdir /S /Q %WEBPI_PATH%

@rem calling the
start %ROLEROOT%\approot\.sessionaffinity\SessionAffinityAgent.exe %1 %2
%ROLEROOT%\approot\.sessionaffinity\SessionAffinityAgent.exe -blockstartup

:Exit
exit 0

このConfigureARR.cmd では、WebPI コマンドライン ツール (webpicmdline) のダウンロード、webpicmdlineを使ったARR (Application Request Routing) のインストールSessionAffinityAgent.exe の起動を行っています。

 

 

 

 

SessionAffinityAgent.exeのソースは公開されていませんが、不明瞭化 (obfuscation) されていないので XXXXXX するか (一応自粛)、ロール インスタンスにリモート デスクトップ接続し、IIS ManagerでSessionAffinityAgent.exeが行った設定を確認することができます。

IIS Managerで確認すると、「http_SESSION_AFFINITY」というサーバー ファームに、自身を含むすべてのロール インスタンスが登録されていることが分かります。Windows Azure管理ポータルなどからロール インスタンス数を増減させると、サーバー ファームもそれに追随することも確認できます。

また、IIS (ARR) が受信したリクエストを、このサーバー ファーム内のサーバーにルーティングするURLリライトが定義されています。

サーバー ファームでは、(アフィニティのないリクエストに対して) ラウンドロビンで均等に負荷分散すること、「ARRAffinity」という名前のCookieを使ってアフィニティを管理すること (ARRのクライアント アフィニティ) が定義されています。

ARRのクライアント アフィニティは、ARRのレイヤーで、ルーティング先を識別するための独自のCookieをレスポンスに追加するものです。

これを踏まえると、Windows Azure Plugin for Eclipse with Javaのセッション アフィニティ機能は、次のようなアーキテクチャとなります。ロード バランサーは相変わらずアフィニティを無視しますが、ARRがアフィニティのルーティングを行うので、最終的に適切なTomcatにルーティングされることが分かります。

実際のHTTPリクエスト ヘッダーでも、確かに、2種類のCookieが送信されていることを確認できます。

2つの異なるCookieのライフサイクルの違い (Java WebアプリのHTTPセッションを削除しても、ARRAffinity Cookieには影響を与えないこと、異なる可能性のあるタイムアウト時間など) が、微妙に問題になるケースもあり得ますが、基本的には問題なく動作しそうです。

今回はカバーしていませんが、Tomcatなどのアプリケーション サーバーでセッションの永続化 (DBなどへの保存) も併用することで、さらに信頼性の高いセッション管理が可能になるでしょう。

この情報がどれだけ参考になるのか分かりませんが、ご参考まで!

広告

 

日本語訳

マイクロソフトのオープン ソース コミュニティ シニア ディレクターとして、Windows Azure上の幅広いオープン ソース開発のアップデートを皆さんと共有できて、これ以上幸せなことはありません。

(さらに…)

本日、SQL Azure 2011年第4四半期サービス リリースが利用可能になったことを発表します。2011年10月にPASS Summitで発表され、現在すべてのリージョンで利用可能になっている2011年第4四半期サービス リリースは、オンデマンドのスケーリングに対する優れた柔軟性を提供し、データベース監視/管理を簡素化します。具体的には、最大データベース サイズを3倍の150GBに拡大し、優れた伸縮自在のスケーラビリティのために、シャードの設定、管理、自動化を簡素化するSQL Azure Federationを導入します。

DBサイズの拡大に加え、巨大データベースをお使いのお客様に対してGBあたりの実質的なコストを値下げする、料金上限も発表します。本日より、SQL Azureデータベースあたりの最高価格は499.95ドル (43,700.63円) です。この変更によって、50GB以上のデータベースをお使いのお客様は、追加コストなしで拡大可能になります。150GBのデータベースをお使いのお客様は、GBあたりの実質的な料金が67%値下げされることになります。

今回のサービス リリースにおける他の拡張の詳細は、次の通りです。数日以内に投稿予定の、リフレッシュされたSQL Azure管理ポータルの機能の詳細や、新しいSQL Azure Federationの機能に関する詳細なポストを、後で確認してください。

ユーザーのクエリや既存アプリケーションは通常通り動作し続けるはずで、SQL Azure 2011年第4四半期サービス リリースへのアップグレードによって、悪影響を受けるはずではないことに注意してください。

詳細

SQL Azure 2011年第4四半期サービス リリースには、次の新機能が含まれています。

  • 最大データベース サイズの拡大 – 前述の通り、個別のSQL Azureデータベースの最大データベース サイズを、50GBから3倍の150GBに拡大しました。月あたりデータベースあたりの料金は、499.95ドル (43,700.63円) が上限となります。SQL Azureの料金情報については、こちらから
  • SQL Azure Federation – データベース フェデレーションによって、データベース サイズとアプリケーション ワークロードを基に、シャーディングを使ってデータベースを伸縮自在にスケールアウト可能です。この新機能によって、シャーディング データベース パターンの設定と新規シャードの追加プロセスに自動化が劇的に簡単になり、データベース シャードを簡単に管理するための重要な新機能が提供されます。追加情報は、こちらから
  • SQL Azure管理ポータルのリフレッシュ – 新しいポータルは、メトロ スタイルのユーザー インタフェースを提供し、より簡単なデータベース監視、スキーマ、クエリ プラン、空間データ、インデックス/キー、クエリ パフォーマンス統計へのドリルダウンが可能な新しいワークスペースなどの新機能があります。新しいポータルは、SQL Azure Federationもサポートしています。
  • DACインポート/エクスポートCTPのアップデート – 前回のSQL Azureサービス リリースにおける初期リリース以降のいくつかの問題を解決するために、このサービスがアップデートされました。SQL AzureとWindows Azure BLOBストレージとの間でデータベースを簡単にインポート/エクスポートするために、お客様は新しい管理ポータルからこの無料サービスを使えます。サンプル実装を含む追加情報は、こちらのCodePlexページで入手可能です。
  • ユーザー制御の照合順序のサポート – データベース作成時に、ユーザーがどの照合順序 (英語 / 日本語)を使用するか指定可能になりました。ユーザーは、fn_helpcollations()システム関数が返すすべての有効な照合順序を指定可能です。この機能が、SQL Azureで有効化されました。

新しいメトロ スタイルの管理ポータルのスクリーン ショットを、以下で確認できます。

タイルによって、一般的なタスクへの迅速で簡単なアクセスが可能に

詳細なデータベース情報へのドリルダウン

簡単で柔軟性のある方法でお客様に世界クラスのサービスを提供するという我々の約束の一部として、よくリクエストされていたこれらのアップデートを提供できたことを嬉しく思っています。

新しいSQL Azure管理ポータルとSQL Azure Federationに関する追加のポストを、後で確認してください。

関連情報

 

 

 

本日、Windows Azure使いやすさ、相互運用性、全体的な価値を改善する、複数のアップデートを発表します。

主要なハイライト

  • 新たな開発エクスペリエンスと拡張された相互運用性 – Windows Azure libraries for .NET、Java、およびNode.jsが、GitHubにホストされ、Apache 2オープン ソース ライセンスの元で利用可能です。新しいWindows Azure SDK for Node.jsによって、Windows AzureがNodeアプリケーションのための優れた環境になります。Windows Azure向けのApahce Hadoopベースのサービスの限定プレビューによって、Hadoopアプリケーションを数日ではなく数時間でデプロイ可能になります。
  • 使い始めるのがより簡単に/簡素化されたサブスクリプション管理 – 開発者センターを刷新し、複数の言語向けに有用なコンテンツとチュートリアルを提供します。支出上限のある新しい登録プロセスによって登録が簡単で迅速になり、90日間試用版が完全に無料になることを保証します。Windows Azure管理ポータルから直接、リアルタイムの使用量と請求の詳細を参照でき、予想されるコストを簡素化された「電卓」で確認できます。
  • データベースのスケーラビリティの改善 – SQL Azureの最大データベース サイズが3倍になりました (追加コストはありません。詳細は後述)。伸縮自在のスケールアウトを簡素化する新しいシャーディング パターンである、SQL Azure Federationを提供します。
  • より良い全体的な価値 – 最大のSQL Azureデータベースに対する新しい料金上限によって、GBあたりの実質的な料金を67%値下げしました。北米とヨーロッパのデータ転送の料金を25%値下げしました。サービス バスが、2012年3月まで無料になりました。

Windows Azureは、皆さんからのフィードバックを基にして常に進化し続けています。本日のアップデートと料金の変更を確認し、明日のLearn Windows Azureイベントにオンラインで参加し、このポストにコメントするかTwitter @WindowsAzure (日本語ではハッシュタグ #azurejp)に話しかけることで、我々に皆さんの考えをお知らせください。これらは、ハイライトのごくわずかです。追加の詳細については、以下をご覧ください。

皆さんからのフィードバックを楽しみにしています。楽しい休暇をお過ごしください!

詳細

使いやすさ

  • 簡素化されたリスクのない試用版 – Windows Azureへの登録がより簡単になり、3ステップのプロセスで迅速に使い始められるようになりました。無料の90日間の試用版 (導入特別プラン)、およびMSDNサブスクライバー向けのプランで、支出上限が設定可能になり、超過料金を引き起こす無料クォータを超える使用を停止します。
  • サブスクリプション管理の改善と、リアルタイムの使用量の可視化 – 新規サブスクリプションの作成なしの料金プラン変更、不要なサブスクリプションの取り消し、最新の使用量と請求の詳細の確認を、Windows Azure管理ポータルから直接、簡単に行うことができます。
  • 合理化された請求 – 主要な使用量と請求の詳細を、請求書の概要で一目で確認できます。必要に応じて、複数の項目にわたる詳細なレポートを実行できます。複数のサブスクリプションを持つお客様に対して、毎月の請求日が同じになるように変更しました。
  • 自動的なMSDNサブスクライバーの検出 – あなたのMSDNサブスクリプションに含まれている無料のWindows Azure特典を、お知らせします。
  • SQL Azure管理ポータルのリフレッシュ – 新しいポータルは、メトロ スタイルのユーザー インタフェースを提供し、より簡単なデータベース監視、スキーマ、クエリ プラン、空間データ、インデックス/キー、クエリ パフォーマンス統計へのドリルダウンが可能な新しいワークスペースなどの新機能があります。新しいポータルは、SQL Azure Federationもサポートしています。
  • SQL Azure Federationと、データベース サイズの拡大 – SQL Azure Federationによって、新しいシャーディング パターンを使って、データベースを伸縮自在にスケール アウトでき、ずっと簡単に管理できます。この新機能によって、アプリケーション ワークロードによって再パーティション可能な、伸縮自在のデータベース層の設定が劇的に容易になります。これは、現代的なクラウド アプリケーション向けに、事実上無限のスケール、優れた経済性、簡素化されたマルチテナントを提供します。拡大するストレージへのニーズを満たす優れた柔軟性のために、SQL Azureの最大データベース サイズを、50GBから150GBに拡大しました。これらは、利用可能になったSQL Azure 2011年第4四半期サービス リリースに含まれているアップデートの一部に過ぎません。このサービス リリースの詳細に関するポストは、こちらから。

相互運用性

  • Windows Azure SDK for Node.js – 言語のサポートを広げるものとして、Windows Azure SDK for Node.jsを発表します。このSDKには、Windows Azure BLOB、テーブル、キュー ストレージに対するNode.jsライブラリが含まれています。また、Node.jsアプリケーションの開発とデプロイのためのコマンドライン ツールを提供する、Windows Azure PowerShell for Node.jsも含まれています。Node.jsクライアント ライブラリのソース コードは、GitHubで入手可能です。Node.js開発を始めるのを助けるため、Widnows Azure Node.js開発者センターで、新しいコンテンツ、チュートリアル、サンプル、アプリケーション テンプレートを公開しています。
  • Windows Azure向けのApache Hadoopディストリビューションのプレビュー – Windows Azure上のビッグ データ機能を強化するため、Windows Azure上でのHadoopベースのディストリビューションのプレビューをリリースします。このプレビューによって、Windows Azure上でHadoopプロジェクトを簡単に実行でき、使いやすさや高度なデータ分析といった、独特な利益を得られます。ハイライトは、次の通りです。
    • 設定とデプロイを簡素化する新しいインストーラーによる、数日ではなく数時間でのWindows AzureへのHadoopのインストールと設定
    • Widnows Azure上の新しいHadoopベースのサービスを使って、数百万のJavaScript開発者がMapReduceジョブを構築できる、新しいJavaScriptライブラリ
    • ExcelやPowerPivotといった使い慣れたツールによる非構造化データのデータ分析を可能にする、Hive ODBC DriverとHive Add-in for Excel

このプレビューは、今週後半から限定数のお客様が利用可能になります。このプレビューの試用に興味をお持ちの場合、このフォームを入力し、ビッグ データのシナリオの詳細をお知らせください。マイクロソフトは、使用シナリオを基にして、選ばれたお客様にアクセス コードを発行する予定です。

  • OSSテクノロジー向けの新しいツール – 我々のOSSコミュニティとの継続的な作業の一部として、Windows Azure開発者がOSSテクノロジーを扱うのを助ける、多数のツールをリリースします。ハイライトは、次の通りです。
    • Eclipse/Java – 今年6月にリリースしたWindows Azure Plugin for Eclipse with Javaに対して、メジャー アップデートを行いました。多数のユーザビリティーおよび機能の拡張が含まれ、Windows Azure SDK for Javaとともにダウンロード可能です。概要デモのビデオをご覧ください。ハイライトは、スティッキー セッションのサポート、人気の高いJavaサーバー向けの事前作成済みスタートアップ スクリプト、リモートJavaデバッグ、他多数です。
    • MongoDB – Windows Azure統合、デプロイ パッケージ、ドキュメンテーション、コード サンプルを提供します。
    • SQL Azure Federation – データ層の伸縮自在のスケールアウトの組み込みサポートを提供する、新たにリリースされた機能です。また、クラウド スケーラビリティーのためのデータ シャーディングを可能にする追加のSQL機能を記述した、新しいSQL Database Federations仕様を、Microsoft Open Specification Promiseの基でリリースしました。
    • Solr/Lucene – Windows Azure上で稼動するSolrを最大限活用するための、一連のコード ツールと構成ガイドラインを提供します。検索処理対応のための複数インスタンス レプリケーション、インデックス生成のための単一インスタンス (および、Azureストレージからマウントされた永続インデックス) を使った、Windows AzureでのSolr/Luceneの構成/ホスト方法を示します。
    • memcached – 非.NET言語からのアクセスのための、Windows Azure上のmemcachedのデプロイ、実行、チューニング方法のガイダンスを提供します。

こちらのPort 25ブログで、これらすべてに関してさらに知ることができ、これらのツールの追加情報やダウンロード リンクを得ることができます。

全体的な価値

お客様に最高の価値を提供するために、次の料金変更を実施します。

  • 巨大SQL Azureデータベースに対する料金上限 – 最大データベース サイズの50GBから150GBへの拡大に加えて、巨大データベースをお使いのお客様に対してGBあたりの実質的なコストを値下げする、料金上限を導入します。本日から、SQL Azureデータベースの最高料金は499.95ドル (43,700.63円) となります。この変更によって、50GB以上のデータベースをお使いのお客様は、追加コストなしで拡大可能になります。150GBのデータベースをお使いのお客様は、GBあたりの実質的な料金が67%値下げされることになります。
  • データ転送料金の値下げ – 本日より、ゾーン1 (北米とヨーロッパ) のデータ転送がGBあたり0.12ドル/10.49円 (以前は0.15ドル/13.11円)、ゾーン2 (アジア太平洋) のデータ転送がGBあたり0.19ドル/16.61円 (以前は0.20ドル/17.48円) になりました。
  • サービス バスに対する簡素化された料金設定と無料の販売促進期間 – 皆さんからのフィードバックを基に、価値を高め使用量の明細を簡素化するため、サービス バスの料金体系を変更します。2012年4月1日から、サービス バスの使用量は2つの新しいメーターを使って請求され、接続を基にした料金体系ではなくなります。
    • リレー時間 – 100時間あたり0.10ドル (8.74円)
    • メッセージ操作 – 10,000メッセージあたり0.01ドル (0.88円)

皆さんが新しいメーターに慣れ、料金設定を理解するのを助けるために、2012年3月31日までサービス バスを無料にします。詳細は、Windows Azureの料金ページをご覧ください。

関連情報

 

 

日本語訳

こんにちは! 私は、Windows Azure ISVチームのシニア クラウド アーキテクト David Makogonです。このチームのただ1つの目的は、世界中のISVがWindows Azure上でアプリケーションやサービスを設計/開発することを助けることです。

我々のチームは、我々の経験をあなたと共有したいと思っています。我々と一緒に仕事をしているISVが、Windows Azureアプリケーションの開発とデプロイの際に成し遂げたことを紹介します。我々と一緒に仕事をしているISVの特定のアプリケーションに注目し、アプリケーションをWindows Azureに統合する際に解決や回避が必要だった、アーキテクチャ/設計上の特定の課題を探求します。我々のチームには世界中に70人以上のアーキテクト、エバンジェリスト、アドバイザーがいるので、事例は世界中から集められます。我々のチームには、David GristwoodRicardo VillalobosさとうなおきAnko Duizerといった、人気の高いブロガーがいます。我々には、共有すべきことが数多くあります。

特定の問題を解決する方法が複数あることを、忘れないでください。我々は、ISVが最終的に選択した方法を、参照アーキテクチャ図、ソリューションとその根拠の詳細、注意点とトレードオフとともに説明します。自由に、これらのソリューション パターンをご自身のアプリケーションに取り込んだり、それを改善したり、あるいは完全に異なるアプローチを採ったりしてください。また、ぜひコメントや提案を共有してください!

Azureのイベント「Learn Windows Azure」が、レドモンドで開催されます。オンラインでも参加可能です。

今日時点ではまだ明かされていないAzureに関するアップデートを多々お伝えできると思います。最初のセッションでは、Scott Guthrieも登壇しますよ。

PSTで12/13(火) 9:00-17:00、JST (日本時間) だと12/14(水) 2:00-10:00 (深夜~朝) という厳しい時間帯ではありますが、ぜひご参加ください!

JSTでのアジェンダは、こちら。

  • [2:00-3:30] Getting Started with Windows Azure (Scott Guthrie)
  • [3:45-5:00] Cloud Data & Storage (Dave Campbell)
  • [5:15-6:15] Channel9 Cloud Cover Show Live (Steve Marx/Wade Wegner)
  • [6:30-7:30] Developing Windows Azure Applications with Visual Studio (Jay Schmelzer)
  • [7:45-8:45] Building Scalable Cloud Applications (David Aiken)
  • [9:00-10:00] Expert Panel Q&A (Scott Guthrie/Dave Campbell/Mark Russinovich)

 

 

 

 

クラウド技術セミナー「Windows Azure 対応サービス設計のツボ」を、再来週の月曜 12/19に開催します。

PaaSであるWindows Azureの上で、SaaSなどのクラウド サービスを設計、構築するにあたって注意すべき実践的なポイントを、既にAzure上でのサービス設計の経験者の皆さんから聞き出せる、いい機会です。是非、ご参加くださいませ。

セミナー概要

本セミナーは、”Windows Azure Platform”を活用したサービスを設計するにあたって、長い経験の末に身につくツボを、コンパクトにまとめてお伝えいたします。既に商用サービスの提供を行っているベンダーの実践経験をもとにまとめられたホワイトペーパーの解説と、ホワイトペーパーの執筆にご協力いただいたベンダーの生の声を通じて、”Windows Azure Platform”対応サービスの設計における多くの疑問が解消できるでしょう。

Agenda

[12:30-13:00] 受付

[13:00-13:30]『Windows Azure の歩み・現在、そしてこれから』(講師: 日本マイクロソフト株式会社)

[13:30-14:30]『Azure 対応サービスの設計方針ホワイトペーパー解説』(講師: 株式会社アークウェイ)

[14:45-16:45]『パネル ディスカッション: 実践ベンダーが語る Azure 対応サービス設計のツボ』

[16:45-17:00]『セミナーのまとめ』