Windows Azure Media ServicesがGAしました

GAは唐突に。そう唐突に。

ScottGu’s Blog (日本語訳)にもある通り、Windows Azure Media Servicesが一般提供(General Availability)されました。

一般提供が開始されたということは、SLAが付いたということです。ちょっと日本語のフォントがおかしいですがSLAはこちらから入手できます。

※フォント指定しなおしたらちゃんと見えます。

SLAは2種類あって1つはオンデマンドストリーミングの月間稼働時間、もう1つはメディアサービスのエンコードREST APIのトランザクション数のようです。どちらも99.9%を下回ると10%返金のようですね。気になる人はちゃんと読みましょう。

気になるお値段ですが、以下の4種類で変わりますので注意。

メディア サービスのエンコード

とりあえずメディアサービスのエンコードに関しては2013年2月17日までは課金されないようです。課金単位は「処理されたデータ量」で、データの入力とエンコードされたデータの出力両方が対象です。※保存先のストレージとそれにかかるデータ転送料も別途かかります。

最初の5TBまでは 173.95円/GByte。

メディア サービス エンコードの占有ユニット

占有ユニットを使用してエンコードの並列処理ができますが、その占有ユニットあたり8,653.59円/月かかります。ちょっと計算がややこしいようです。

アカウントでプロビジョニングされた状態の占有ユニットの最大数を使用して日割りで計算されます (24 時間単位)。たとえば、11:00 にエンコードの占有ユニットを 5 個購入した後、15:00 にその数を 3 個に減らした場合、その日は 5 個の占有ユニットに対して料金が発生します。23:00 にエンコードの占有ユニットを 5 個購入した後、翌日 10:00 にその数を 3 個に減らした場合、1 日目は 5 個の占有ユニットに対して料金が発生し、2 日目も、最初の 10 時間は 5 個の占有ユニットを所有していたため同様の料金が発生します。

まぁ、注意しましょう、ということですね。占有ユニットを使わない場合はこの費用は掛からないみたいです。

メディア サービス オンデマンド ストリーミング

オンデマンドストリーミングする場合、ユニットあたり17,394.59円/月かかります。アクティブだった占有ユニットの最大数の24時間単位な日割りで計算なのでこちらも注意。またAzureからのデータ送信は別途費用が発生します。

メディア サービスのパッケージ化

パッケージングそのものは無料でOK

というわけで料金詳細はこちら。

ちなみにオンデマンドストリーミング、エンコーディングについては管理ポータルの「スケール」で変更することができます。既定はどちらも占有ゼロ状態なので安心ですね(?)

image

 

Windows Azure Media Servicesを使ったサービスを開発する場合、Media Services libraries for .NET (Windows Azure Media Services .NET SDK) とMedia Services libraries for Javaの2種類があるようです。JavaのほうはAzure SDKに含まれてるからそっち見てね。とのこと。

Java使えるから一応WIndows/Mac/Linuxで開発できますね。

動画を見るクライアント側のSDKとしてはSmooth Streaming Client SDKがWindows 8用、SilverlightとWindows Phone用の2種類、それからOSMF向けPluginとiOS Media Player Frameworkが提供されています。

ということで、以下のようなクライアントたちをターゲットに配信できちゃいます。

  • Windows 8
  • iOS
  • Xbox
  • Flash Player (built using Adobe OSMF)
  • Silverlight
  • Windows Phone
  • Android
  • Embedded devices (Connected TV, IPTV)

やったね☆

動画の処理はメディアサービスが行ってくれますが、実際に大量の動画データをAzure側に送り込む必要があるので大変です。そんなときは一括アップロードしちゃいましょう。またUDPを使ったAsperaで高速アップロードも使えるので必要に応じて使いましょう。

というわけで、GAされて一安心。動画配信プラットフォームはSmooth Streaming+Windows Azure Media Servicesでキマリですね。

Microsoft Hosting Solutions ServicesがGAしたよ

以前、「Windows Azureを作ってみた」で紹介したMicrosoft Hosting Solutions Servicesが無事GA(General Availability)されたようです!

( ゚Д゚ノノ”☆パチパチパチパチ

image

 

いわゆるクラウド事業者さん向けの、Windows Azure Webサイトや仮想マシンのホスティング環境を実現させるための機能集みたいなものです。

肝となるのは、すべてのベースとなるWindows Server 2012、ホストマシンを効率よく管理するためのSystem Center 2012(SP1)、それからユーザーにサービスを提供する入り口となる管理ポータルと管理用REST API集の3本です。

それぞれ細かいインストール方法などはMicrosoft Hosting Solutions Servicesのサイトにリンクがあるのでそちらを見てください。

雰囲気としては

こんな感じのインフラがゴールになります。

Multi-tenant PortalってのがWindows Azure管理ポータルっぽい画面ですね。

もちろんホスティング事業者向けなのでテナント別に機能制限かけたりすることもできます。

さぁこれであなたもAzureにならなイカ!

Windows AzureのCloud ServicesでVirtual Network

移行とかでDBはやむを得ずそのままでフロントは頑張った系の構成つくろう、つまり Windows Azureのクラウドサービス(Web RoleとかWorker Role)をVirtual Networkに参加させちゃおうという話です。

ついでに同じVirtual NetworkにWindows Azure 仮想マシンも参加させてサービス間通信もしちゃいましょう。

今回想定しているのはざっくり以下のような構成です。

バックエンドのVMはDBとかまぁそういうのを想定。通信の方向性としては双方向で通信できますが、今回はフロントのWebRoleからVMへのアクセスを想定します。

といっても対してすることは無く。Web RoleなどのCloud ServicesでのVirtual Networkへの参加方法と、VMのVirutla Networkへの参加方法、名前解決についてあたりを書こうと思います。

続きを読む →

はじめてのVisual Studio 2012 (書籍)

いろいろ縁がありまして「TECHNICAL MASTER はじめてのVisual Studio 2012」という書籍を入手しました。ありがとうございます。

僭越ながらレビューというか感想をば。

全体通して内容はタイトルの通り、はじめてVisual Studio 2012を触る人向けのガイド本的な内容です。

以前のバージョンのVisual Studioを触ったことがある人であれば気になる章や機能をぱらぱら見てもいいですね。詳しく見ると意外な発見があるかも?(エディションによる違いとか)

注意点としては.NET FrameworkやC#/VB.NET/F#などの言語・フレームワークについての解説は最小限またはノータッチです。プログラミングを学びたい!という人には向かないので注意。別で勉強しましょう。

Visual Studioという良い総合開発環境をちゃんと使いこなすための入門本と捉えたほうがいいですね。なので例えば新人研修などで言語系を学びながらこの書籍でツールの使い方を学ぶみたいな使い方が良いのかも。

単なる操作マニュアルじゃなくて、そこはちゃんとサンプルコードもあるので動かしながらVisual Studioについて学べます。はい。一通り大きな機能は網羅してると思うので、始めるには困らない予感。

より深く知りたいなと思ったら、それぞれのポイントでMSDN LibraryへのURLが書いてあるのでそちらを参考にどんどん深めていってね、という姿勢です。

さてさて個別な中身としてはいきなり巻頭~1章でWindows Storeアプリについて一通り紹介されてます。

??と思うかもしれませんがWindows 8含め目玉なのでいいのかな?

2章はエディションの違いやインストール方法など。初心者でも安心。

3章はVisual Studioとは何ぞや的な機能やIDEとしての支援機能の紹介。

4章は開発には大事なビルドやデバッグについて。マルチスレッドや並列タスクについても言及されてるので旧Verユーザーも一読の価値ありですね。

5章、6章はプロジェクトテンプレートから作るWindowsフォームアプリケーションやWPF/ASP.NET/F#/Officeなどの解説、DataSetやEntityFrameworkなどについての解説となっています。興味のあるところをじっくり見れば良いかと。ただあくまでVisual Studioの使い方がメインなので、それぞれの道を極めたい!と思ったら別途勉強しましょう。サンプルがあるので「できたできた!」と成功体験が得られるのもいいですね。

7章はテストや分析周りの機能、8章はアプリケーション配布についての解説です。

9章はアプリケーションライフサイクル管理(ALM)という見出しでTFS連携やバージョン・ビルド管理などについて書かれています。

まとめとしては、あくまでツールが主軸の書籍ですが、とっかかりとしてはいいと思います。最初にも書きましたが他の事は最小限なので、言語やフレームワーク、開発そのものなどについてはちゃんと別で補いましょう。

個人的には良し悪しの区別ではなく、感想として「ゆるいな~」という印象を受けました。読んでてなんとなくそう思うのでこれは他意のない感想ですw

まぁこのBlobのレビューを見る初心者の方は居ない気もしますが、会社や新人の方へ教えてあげては如何でしょうか。

Windows Azureのホスト名

以前、ロール間通信の話をちょっと書きましたが、なんかもっと簡単にできそうでした。(クラウドサービスが対象です)

Windows Azureのクラウドサービス上で稼働するインスタンスのホスト名は伝統的なピンクぷーどrではなくRedDogの頭文字、RDで始まるランダムなもので、よくわかりませんでした。

ですが、サービス設定ファイル(*.cscfg)のRole要素でvmName属性を使用すると、指定した名前+連番でインスタンスを設定してくれるようです。

サービス設定ファイルの例↓

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="WindowsAzure18_45" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2012-10.1.8">
  <Role name="MvcWebRole1" vmName="KOSMOS">
    <Instances count="3" />
    <ConfigurationSettings>

以下略 

ほうほう。実際にデプロイしてみましょう。

おお、確かにホスト名がvmNameで指定したもの+連番(ゼロオリジン)です!

ちなみにDNSサフィックスは

02158fc001144d09bf43a37f3660d936.penguindrum.3216464207.asiaeast.internal.cloudapp.net

となってますね。

最初の赤字部分はデプロイID、次の青字部分はクラウドサービスの名前です。asiaeastは配置場所(DC)、internal.cloudapp.netはまぁ固定でクラウドサービスの内部って意味でしょうけど、1つよくわからないのがありますね~。普通に考えるとDC内の何かの(たぶん論理)単位ですね。まぁ自身のDNSサフィックス調べれば生成する必要ないのであまり意味はありませんが。

もちろんクラウドサービス内で有効なだけですけど、ちゃんと名前解決もできる=ポートさえ空いていれば通信ができます。

image

これでHOSTSを弄ったり、変なEndpoint定義したりしなくてもいいですね!!

ちなみに、このvmName属性はSDK1.7以降で使えるようです。いろいろ増えてるんだなぁ~。

参考

Azure Guest OS 3.xでARRv3を使う

Windows Azure Advent Calrendar jp: 2012 の #24です。

みなさんご存知の通り、Windows Azureのクラウドサービスおよび仮想マシンでWindows Server 2012が利用できます。

※残念ながらAzure WebサイトはまだWindows Server 2008 R2ベース。

仮想マシンは自分でいろいろ設定して永続化しておけるのでどうってことは無いんですが、みんな大好きクラウドサービスはそういうわけにはいきません。

で、せっかくクラウドサービスのGuest OS 3.xで、Windows Server 2012つまりIIS8が使えるようになったので、ARR(Application Request Router)も対応したものを使いましょーというのが主旨です。

IIS8に対応したARRv3はExternal CacheやURL Rewriteもこれまで通り使えますし、なんといってもWebSocketに対応してるのが嬉しいですね。

とはいえ、IIS8に対応したARRv3はまだBetaなので利用には注意が必要ですが。

続きを読む →

Windows Azure管理ポータルが更新されました

いつものように管理ポータルで操作してたらいきなり「新しいバージョンのポータルが利用できます」って表示されてリロードしたらいろいろ新しくなってました(

ということで簡単に気づいた点など。(※差分が分からないので前から実装されてたのがあるかもしれない。)

続きを読む →

インスタンスのInputEndpointを取得できない

Windows Azure上でインスタンス間通信する場合、相手のIPアドレスがわからないと何もできません。通常IPアドレスはインスタンス起動時に適当に振られるので、RoleEnvironmentを使ってインスタンスのIPEndpointを取得するのですが、どうもInputEndpointから取れなくなったっぽい。

※インスタンスを列挙してそのインスタンスのIPEndpointを取得してIPアドレスをゲットする、という方法ですが他のインスタンスのInputEndpointが取れない。

ぽい、というのは昔とれた気がするんですけど、SDK1.8だと取れないんですよね。いつからか不明だけどVPNが来たりしたSpring Waveのときかなぁ?

というわけでSDK1.8時代のロール間通信はInternalEndpointを明示的に指定して、そいつのIPEndpointを参照しましょう、という感じになります。

取得するコード的にはこんな感じです。

var role = Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CurrentRoleInstance.Role;
foreach (var instance in role.Instances)
{
	foreach (var s in instance.InstanceEndpoints.Values)
	{
		if (s != null)
		{
			Console.WriteLine("{0} = {1}:{2}", s.RoleInstance.Id, s.IPEndpoint.Address.ToString(),
								  s.IPEndpoint.Port);
		}
	}
}

 

サービス定義ファイル(CSDEF)はこんな感じ。

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WindowsAzure18_45" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WebRole name="MvcWebRole1" vmsize="ExtraSmall">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
          <Binding name="Endpoint2" endpointName="Endpoint2" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InternalEndpoint name="Endpoint2" protocol="http" port="8002" />
    </Endpoints>
    <Imports>
      <Import moduleName="RemoteAccess" />
      <Import moduleName="RemoteForwarder" />
    </Imports>
    <Runtime executionContext="elevated">
    </Runtime>
  </WebRole>
</ServiceDefinition>

 

テストなので適当にInputEndpointとInternalEndpointを定義してみました。

で、結果はこう。

image

インスタンス0上で実行しました。他のインスタンスのInputEndpointは取れてないですね。でもInternalEndponitは取れてます。

ということで、何かインスタンス間通信したい場合はInternalEndpointをちゃんと定義しましょう、ということで。

ちなみにコンソールアプリとかで

Unhandled Exception: System.TypeInitializationException: The type initializer fo
r ‘Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment’ threw an exception. —
-> System.IO.FileLoadException: Could not load file or assembly ‘msshrtmi.dll’ o
r one of its dependencies.
A dynamic link library (DLL) initialization routine f
ailed. (Exception from HRESULT: 0x8007045A)
   at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeEnvironmen
t()
   at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment..cctor()
   — End of inner exception stack trace —
   at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.get_CurrentRoleInsta
nce()

とか出る場合は以下のようにuseLegacyV2RuntimeActivationPolicyをTrueにすればいいですよ。(結構悩んだ)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
	</startup>
</configuration>

 

まぁByDesignという感じみたいです。はい。(外部からの受付用のInputEndpointで内部用のIPアドレスが取れちゃうってのも変な話といえば変ですのでいいんですけどね。)

Windows Azure Web Sitesを有効利用しよう! NuGetサーバー編

今日は Windows Azure Advent Calendar jp: 2012 の9日目のネタをお送りします。

 

今日のお題というか今年のお題はですね、みなさんご存知、Windows Azure Web Sitesに関するちょっとイイ話です。

Windows Azure Web Sites はお手軽にWebサイトを立ち上げることができる、Windows Azureのサービスの1つです。なんと今ならリージョンあたり10個まで無料で作ることができます!(つまり今だと最大50サイト!)

これは有効利用するっきゃないですね!

というわけで、なんとなくあったら便利そうだなっていうWebアプリをWindows Azure Web Sitesでホストしちゃいましょう~!というのが今年の趣旨でございますー。

続きを読む →