いま、一番気になる windows azure web サイトを完全チェック!!
TRANSCRIPT
いま、一番気になるWindows Azure Web サイトを完全チェック!!しばやん
Introduction
しばやん (@shibayan)
http://shiba-yan.hatenablog.jp/
Microsoft MVP for ASP.NET/IIS
ASP.NET MVC Contributor
I love Windows Azure Web Sites
Important Notice
本セッションの内容は 2014/02/14 時点の情報を基にしています
Windows Azure の進化はとても速いです!
特に Web サイトは 3-6 週間の単位で進化し続けています
最新情報は Web で!
Twitter では #azurejp や #jazug のハッシュタグを追いかけると幸せ
Scott Guthrie や Azure MVP / JAZUG メンバーのアカウントをフォロー
@scottgu
@kamebuchi / @harutama / @normalian / @k1hash / @sleepy_taka
Agenda
Windows Azure の日本ジオ(主要地域)が今年中に開設されます
東日本、西日本リージョンで DR も d( ^ω゚ )バッチリ!!
Azure の中で一番簡単に使えるのが Web サイト
特別な知識は必要なし!今までの Web アプリケーションがそのまま動作
すぐに使うのは難しい?でも、どんなことが出来るのか知っておこう
スケールアウト、WebSocket が必要だからクラウドサービス?
バッチ処理が必要だから仮想マシン、ワーカーロール?
Windows Azure
Microsoft が提供中のパブリッククラウドプラットフォーム
正式サービス提供から今年で 4 年目、ついに日本にデータセンター開設
提供しているソリューションの一部
インフラストラクチャ : 仮想マシン / 仮想ネットワーク
Web : クラウドサービス / Web サイト
モバイル : モバイルサービス / サービスバス通知ハブ
ビッグデータ : HD Insight (Hadoop)
メディア : メディアサービス
IDM / アクセス管理 : Active Directory (WAAD)
Windows Azure Web Sites
Windows Azure が提供する PaaS 機能の一つ
同じようなものとして Windows Azure クラウドサービスがある
高速なプロビジョニング、スケーラブル、オープンかつフレキシブル
新しい Web サイトの作成は数秒、すぐに公開
各種オープンソース CMS などを数クリックで作成可能
クラウドとオンプレミスで共通のコードベースを使って開発
オンプレミスで動かしていたアプリを Web サイトへ
Platform as a Service
Windows Server 2012 上に構築された実行環境
ホスト OS / ゲスト OS や .NET Framework などを含めたランタイムのパッチなどは随時、自動的に適用されている
ダウンタイムがほぼゼロで実行環境のアップデートが行われる
Windows Server 2008 R2 から 2012 へのアップデートは気が付かなかった
アプリケーションの互換性問題もほとんど無し
開発者は完全にアプリケーションの開発に集中できる
Web Sites vs. Cloud Service
そもそも、仕組みが全く異なっている
そして Web サイトはクラウドサービス上に構築されている
クラウドサービスの方がよりスケーラブル
Web サイトは最大でも 10 インスタンスまでしか増やせない
クラウドサービスは与信次第で数千コアまで可能
Web サイトの方がお手軽、既存のアプリを動作可能
クラウドサービスは専用にパッケージングしたり大変、デプロイは遅い
Application Platform
Application Runtime
最新のアプリケーション開発環境が用意されている
.NET Framework 3.5 / 4.5.1
PHP 5.3 / 5.4 / 5.5
Python 2.7
Node.js 0.10.24
32bit / 64bit の選択可能なワーカープロセス
JIT コンパイラや GC など、CLR の挙動も少し変わる
クラシック / 統合の選択可能なパイプライン(古いアプリ向け)
Compute Mode
無料 / 共有 / 標準の 3 つのモードが用意されている
無料モード
マルチテナント、1 リージョンにつき 10 サイトまで無料で作成可能
共有モード(プレビュー)
マルチテナント、1 リージョンに付き 100 サイトまで作成可能
標準モード
仮想マシンインスタンスを 1 つ占有するモード
1 インスタンスに最大 500 サイトまで載せることが可能
Multi-tenant
IIS のマルチテナント機能を使い、1 つの仮想マシン上に複数の Web サイトをホスティングしている
信頼レベルはフルトラスト、別サイトにはアクセス不可
標準モード以外では、使用できるリソースに制限が加えられている
無料モードでは転送量 165 MB まで、CPU やメモリにも厳しい制限
共有は少し緩いが、CPU やメモリに制限が付いている
ホストする仮想マシンのスペックは 8 CPU / 14GB MEM
XL (A4) インスタンスに相当
Scale-up / Scale-out
仮想マシンのスペックの変更や、インスタンスの数を管理ポータルから簡単に変更可能
ダウンタイムほぼゼロでのアップグレードが実現されている
標準モードではインスタンスサイズを S / M / L から選択可能
クラウドサービスや仮想マシンのインスタンスサイズと等しい
共有モードでは 6 インスタンスまで拡張可能
標準モードでは 10 インスタンスまで拡張可能
Auto Scaling (Preview)
5 分間の平均 CPU 使用率によるオートスケール
メトリックの範囲、最少・最大インスタンス数を設定可能
追加インスタンスが準備完了になるまでは数十秒と非常に高速
予め定義したスケジュールにしたがってのオートスケール
時間帯や曜日でのスケジュールが設定可能
休日など、予めアクセスが増えることがわかっている場合に有効
標準モードのみオートスケールを設定可能
Custom Domains
ロードバランサーの IP アドレスが変更されないので、クラウドサービスや仮想マシンでは難しかった A レコードの割り当てが可能
CNAME も当然ながら割り当てが可能
割り当てるためには DNS に所有者であることを確認するレコードを追加する必要がある
awverify.mydomain.com みたいな DNS レコード
共有、標準モードのみ独自ドメインの割り当てが可能
SSL (IP / SNI)
IP アドレス毎に証明書を割り当てる SSL
固定 IP が必須となるので割高
Server Name Indication を使って、ホスト名に証明書を割り当てる SSL
バーチャルホスト環境で運用できるので割安
Windows XP 上の IE では全滅なので、XP を切る覚悟が必要
標準モードのみ SSL を設定可能(共有でも設定可能になる予定)
Service Level Agreement
無料モードには当然ながら SLA は用意されていない
共有モードは現在プレビューなので SLA は用意されていない
GA になったタイミングで付く可能性はあるかも?
標準モードのみ 99.9% の SLA が用意されている
クラウドサービスのように 2 インスタンス用意しても 99.95% の SLA は得られないので注意
Application Development
Continuous Deployment
git / Mercurial / BitBucket / CodePlex / DropBox / GitHub / Visual Studio Online からデプロイが可能
Web Hook を使って、プッシュされたタイミングでのデプロイ
デプロイされているバージョンの確認、ロールバック
ASP.NET アプリケーションのビルドを自動的に行う
Visual Studio Online の場合は TFS が
git の場合は Web サイトが自動的にビルドしてデプロイ
Database
SQL Database
20MB までは無料で利用可能
通常の従量課金プランを使うことで 150GB までスケール可能
プレビュー版の占有型 SQL Database も利用可能
ClearDB (MySQL)
20MB までは無料で利用可能
有料プランを購入することで SQL Database 以上にスケール可能
Staging & Swap (Preview)
ステージングサイトを作成し、数秒でプロダクションとスワップ
WebSocket などの接続はスワップしても維持されている
http://<sitename>-staging.azurewebsites.net/
仮想 IP アドレスを付け替えているわけではない
クラウドサービスの VIP スワップとは仕組みが異なっている
標準モードのみステージングを作成可能
WebSocket
IIS 8 にアップデートされ、WebSocketModule が利用可能に
管理ポータルから有効化する必要がある
同時接続数に制限あり
無料モードでは 5 接続、共有モードでは 35 接続、標準モードではインスタンスサイズに関わらず 350 接続に限定
インスタンス数を増やすことで対応
SignalR を使い、WebSocket 以外の接続にフォールバックさせて対応
Web Jobs (Preview)
コンソールアプリや PHP などのスクリプトをジョブとして追加できる
オンデマンド / 連続的 / スケジュールの 3 種類が用意されている
オンデマンドで実行
自動的には起動せず、API やポータルから選択した時のみ実行
連続的に実行
後述する Always On を有効にしないと信頼性が下がる可能性
スケジュールに従って実行
プレビュー版の Windows Azure スケジューラを利用
スケジューラの設定次第で別途費用が発生する可能性あり
Windows Azure WebJobs SDK
Azure ストレージと連携した Web Jobs を簡単に実装するための SDK
Install-Package Microsoft.WindowsAzure.Jobs.Host –Pre
Table / Queue / Blob を抽象化したインターフェースを提供
Table の読み書き
Queue の監視、メッセージ追加
Blob の読み取り、作成
Web Jobs を管理するためのページも標準で用意されている
Always On
自動的にサイトに ping を送信し、インスタンスを常に起動状態にする
IIS のワーカープロセスは一定時間アクセスが無いと落ちるので、初回アクセス時に応答が遅くなるのを防げる
連続的に実行される Web Jobs を利用する場合には必須
5 分間隔でアプリケーションルート “/” へ HTTP GET が投げられる
IIS 8 で追加された ApplicationInitialization モジュールを使っている
標準モードのみ Always On を設定可能
Visual Studio Online (Preview)
Codename “Monaco”
Web サイトでは Site Extension として実装されている
管理ポータルから有効化するだけですぐに利用可能
様々な言語に対応したエディタを搭載
C# / VB / JavaScript / TypeScript / PHP / Ruby など
言語によってはインテリセンスも動作する
コンソールから git や MSBuild など各種コマンドを利用可能
Monitoring / Diagnosis
IIS の詳細なエラー出力を保存
リクエストのトレースログ(XML + XSLT)
エラー画面の HTML をそのまま保存
Web サーバのログ
ファイルシステム / Blob ストレージの保存が選択可能
ファイルシステムは 100MB、ストレージは無制限に保存が可能
New Relic などの監視ツールを簡単に利用可能
Remote Debug
デバッグビルドでデプロイし、管理ポータルからリモートデバッグの設定を有効にすると 48 時間だけ可能
48 時間を過ぎると自動的に設定がオフに戻る
Visual Studio のサーバエクスプローラから、リモートデバッグを行いたい Web サイトを選択
Windows Azure SDK 2.2 以上が必須
Visual Studio 2012 / 2013 に対応
Log Stream
Trace クラスを使ったログ出力をストリーミング表示
管理ポータルからの設定で IIS ログなども表示可能
Web インターフェース(Kudu)
Visual Studio + Windows Azure SDK
サーバエクスプローラから対象の Web サイトを選択する
表示するログレベルを設定から指定可能