メリークリスマス!Azureアドベントカレンダーの儀を執り行う!

メリークリスマス!12月になりました。
今年もAdventCalendarの季節がやってきました。

アドベントカレンダー(Advent Calendar)とは、
クリスマスまでの期間(待降節アドベント)をより楽しく過ごすため、
12月1日から24日までの間カウントダウンしていくイベントカレンダーになります。
IT系では、1日1日カウントダウンとして、ブログの記事を書いたりなどで盛り上がる傾向が多いようです。

以下に詳しくまとまっているので、どうぞご覧ください。
クリスマスの新常識〜アドベントカレンダー
http://allabout.co.jp/gm/gc/220728/
師走を楽しもう。技術系アドベントカレンダーの魅力とは
http://www.atmarkit.co.jp/fjava/column/andoh/andoh59.html
今こそまとめ読み!技術系アドベントカレンダー総まとめ 2011【完結】
http://www.otchy.net/20120106/tacj2011-finished/

Japan Windows Azure User Group(JAZ)では今年で2年目の開催になります。

(去年の様子はこちら)
http://atnd.org/events/22821
今年も執筆してくれるメンバーを募集していますので、どしどしご参加ください!!(あと10人位、急げ師走!)
http://atnd.org/events/34353

さて、本日1日は@k1hashが担当させて頂きます。
2つのお知らせについて書かせて頂きたいと思います。

1つ、MixiXmasが今年もオープンします!
Mixiクリスマスは今年で4年目、日本最大級のWEBクリスマスイベントで、
去年は300万人のユーザーを集めたようです。
このモンスターサービス、Windows Azureで稼働して、大規模なアクセス負荷をさばきました。
300万人ユーザーの負荷に耐えるまで、去年の激闘はこちらにまとめられています。
http://blogs.itmedia.co.jp/isago/2011/12/mixi-xmaswindow-96c2.html

今年も既に正式オープンまでのβ期間が始まっています。
サービスはこちらから。
http://mixixmas.mplace.jp

いったいどういうサービスなのというのは、ヘルプの画像を掲載しますのでどうぞ。

今年もトレースルートなんかで見る限り、Azureで動いている(よう)ですね。
お持ちのPC、スマホガラケーからアクセスして頂くと、各種処理、通信の高速具合が良く確認できると思います。
スマホでも、友達のベルを鳴らした時、キャンドルタイムの効果は、これホントにスマホなの?というような美しい仕上がりになっています。

また、今年はMixiのアカウントでもFacebookのアカウントでも遊べるようです!
友達を誘うとレベルアップも早くなり、プレゼントも当たりやすくなると思います。
クリスマスまでのワクワクする雰囲気を楽しみたいですね。
ぜひこちらから、お試しくださいませ。
http://mixixmas.mplace.jp

さて2つ目のお知らせ、こちらが本題になるのですが、
各種事例、コミュニティメンバーの知識集積で培ったWindowsAzureの活用方法を
Azureクラウドデザインパターンとして皆さんとシェア
したいと思います。

現在、Azureクラウドデザインパターンは@k1hashと@kekekekentaで土台など考え中です。
作成したデザインパターンは今後 http://r.jazug.jp 上に専用ページを設けますのでこちらでシェアしていきますね。
目標はクリスマスまでに24のデザインパターンをアップです。

さて本稿ではデザインパターンのα版として、
MixiXmasでも使われていると思われる大規模WEBサービスに効果的なデザインパターンを上げていきます。

・サービスの複製(クラウドサービス)

大規模なサービスという事は、タイミングによってサーバーの複製による増強が可能であることが必要です。
クラウドサービスを使うと、サービスの複製が容易になり、ロール(役割)に応じたサーバーの種類別に
柔軟に台数をコントロールできるようになります。
フロントエンドのWEB系サーバー、非同期に行うバックエンド処理サーバー、メモリキャッシュ機能を持つサーバー
これらの台数を別々に柔軟に、かつ一括でコントロールできるのがクラウドサービスの大きな魅力です。
稼働後に露見するボトルネックに応じても、該当箇所を増強する事が容易にできます。


・WEBサーバーへのアクセス集中を防ぐ、静的コンテンツ退避

JS,CSS,IMAGE,その他ファイルなどをWEBサーバーから取得するようにすると、WEBサーバーに負荷が一極集中してしまいます。
これを防ぐために静的なファイルをBlobストレージに配置し、負荷を分散する事が出来ます。
地味ながらWEBサーバーのレスポンスを快適にする有効な一手です。
AzureのBlobストレージは5000RPSに耐える仕様になっているので一定量のアクセスが集中しても問題ないようになっています。


・静的コンテンツを大規模なコンテンツ配信網に配置

上述で静的コンテンツをストレージに退避しましたが、より高速に、より大規模なアクセスに対応したい場合は、
BlobストレージのコンテンツをCDNにキャッシュさせるのが有効な一手です。
CDNはエッジサーバーが全世界に配置されており、日本にもあります。
ユーザーはより大規模で身近な場所にある配信サーバーからコンテンツを取得する事が出来ます。


・大規模な書込みトランザクション対策

シンプルなモデルのデータを大規模なサービスで扱う場合は、RDBより高速なKVS(キーバリュー型のデータストア)の活用が有効です。
Azureの場合は、Tableストレージがこれにあたります。
ストレージアカウントあたり秒間5000リクエストが上限とされていますが、
複数のストレージアカウントを契約する事によってより高負荷なアクセスに耐える事が出来るようになります。


・利用頻度の高いデータをオンラインメモリキャッシュ化

外部APIから取得する友達のリスト、保持しているアイテムのリスト等、更新頻度が低く都度DBにアクセスすると
システム負荷が高まるようなデータは、サーバーのメモリ上にキャッシュするのが有効です。
Azureでは標準で複数台のWorkerRoleを一つの大きなキャッシュシステムとして利用する事が出来ます。
Memcachedのほうが使い慣れているという方は、Memcachedを組み込むこともできます。

・キューによる非同期処理

フロントのWEBサーバーで受け付けた処理が時間を要する場合は、非同期にしてしまってバックエンドで処理をするのが効果的です。
WEBサーバーへのリクエストがボトルネックになることもなく、ユーザーが処理の終了時間を待つ必要もありません。
MixiXmasの場合は、ベルを鳴らすことによって他人のデータ(場合によっては友達の数だけ)が書き換わる処理があるようですが、
こういったケースで同期処理を行うと待ち時間が発生し、WEBサーバーにリクエスト依頼がたまりシステムが破たんしかねません。
WEBサーバーはAzureキューに処理依頼を作るところまで、
バックエンドのWorkerが面倒なデータ更新やファイル生成を行うようにしておけば良いでしょう。

・動的なIP変更を使った本番リリース

複数のサーバーを使う場合、(MixiXmasの場合は数十台以上と思われますが)プログラムのリリースを手動で行うのは困難です。
Azureの場合は、本番環境を直接交信する事もできますが、本番環境と対になるステージングが標準で用意されており、
ステージングにUP後に、本番とDC内のVIPを交換する事によって、本番環境をリリースできます。
これはステージングで事前に評価をしてから本番環境とクリック一つで交換できるので事故の少ないリリース方法です。

上記、デザインパターンに、注意点を加える事が出来れば、
皆さんでAzureクラウドデザインパターンを有効に使えるのでは?と考えています。
間もなくリリースしますのでお楽しみに!また、パターンの作成やブラッシュアップに皆さんの参加をお待ちしております!

1日目、長くなってしまいましたが、こんなところで!

Azure課金情報がリニューアルして解りやすくなったので、お客さんへの面倒な説明業務が減りそう。

あけまして、おめでとうございます。
年に1回のBlogを書く@k1hashです。
今年もよろしくお願いします!

12月のアップデートで対応されていたと思うのですが、
確認したらWindows Azureの課金ポータルが凄まじく分かり易くなっていたので書きます。

これなら経理部門など非ITな方でも理解できるようになったと思います。
※更新前はIT部門が見ても、理解し難いものでした。。。ぐぼぼ。

わかりやすいので、コチラの説明業務も減りそうです!


サインインはオシャレに

本題とは関係ないですが、サインイン画面は非常にオシャレな感じに。
UFOが気になるw


サブスクリプション一覧も見やすく

サブスクリプション一覧は非常に見やすい!何をいくらくらい買っているのか一目瞭然。
キャンセル済みは解約して久しいので、出なくてもよい、もしくは別ページでもよい気がします。


サブスクリプションの課金状況もわかりやすく

これは標準プランです。
赤字が標準プランを超過して従量課金を受けているものです。超過していない場合は、ブルーになります。
私の運用方法が、最低限必要なものを標準プランでまとめ買いして、
超過分は従量課金というやり方なので、赤表示が多いです。


請求履歴もわかりやすく

請求履歴が一覧で見れるので、課金総額の変動具合がよくわかります。


プロファイルは微妙。。。

確かに情報は足りていますが、プロファイル画面は微妙なので、改善を期待します。


メニューもわかりやすく

サブスクリプションに対して、どのような作業が可能なのか非常に分かり易いですね。
・支払方法の変更
※支払方法を変更できます。請求書払いなどはここからですかね。

・ユニット数の変更
※標準プランのユニット数を変更できます。

・使用料の詳細ダウンロード(CSV)
CSVでダウンロードして解析することができます。
※これを読み込んで、料金プランの改善方法を提案してくれるツールがあったらうれしい。

・詳細の編集
サブスクリプション住所の変更
サブスクリプションのキャンセル→解約ですね。

請求書のデザインも美しく

請求書のデザインも美しく、体裁にうるさい日本人でもいいんじゃないと言える感じに
PDFなので、保存も印刷も楽ちんです。
気になった点としては、PDFなので、一覧への戻り方は、「ブラウザの戻るボタン」になっちゃうのと、
毎日の明細が載るので、印刷するときは明細を出さないなど注意が必要。


Azure課金ポータル改善まとめ

・デザインが分かり易くなり、IT部門でなくても理解できるように ★★★
・請求書の内容が詳細に。 ★★★
・請求書のPDF発行に対応している ★★★
サブスクリプション一覧や超過具合が見やすく ★★★
・支払変更の方法も行いやすくなっているみたい ★★
請求書払い自体の手続きは、与信の審査などありますが。。
・利用状況のCSVダウンロードができるので、解析はできる ★★(解析サービスが来てほしい)


ので、堅めな企業利用(経理部門に請求書、非IT部門が見てもわかるレポート)に応えるにはなっているように思いました。
ちなみにAmazon Web Serviceさんでは、この辺に充当するような部分はまだなく(調査ミスだったらご指摘ください!)
利用レポートをCSVでダウンロードと総額が記載された請求のメールが届くという認識です。


では次は2013年にお会いしましょう!

あまりにも良くあるAzure問答集

はい、どうもー。@k1hash です。
Windows Azureアドベントカレンダーの兼ね合いでブログを書いております。

最近、公私ともにWindows Azureの問い合わせが増えて、嬉しいのですが、
どうも毎度同じようなことを話すようになってきたのでよくある問答集を作ってみました。
これ見といて、で序盤の検討事項がある程度済ませられるようになれば幸い。

※だいぶフランクに書いだけど、脳内はクラウディアさんの音声に変換して聞くとよいでしょう。

うちの会社の**システムはAzureで動きますか?

まずだけどデータをクラウドに置くに際して、遵法系やお客さんのポリシーは確認した?

データによっては国外に持ち出せないもの、お客さんのポリシーに反するものがあるので、良く確認してね。
ユーザーのIDとパスワードレベルであれば、暗号化して保存すれば、解決するケースは多いかもね。
で、国外に置けないケースも安心してほしいんだけど、

富士通がアプライアンスとして運営するWindows Azure
もあるので、そちらも検討してみて。

データってどんな感じで保存するの?

クラウドインスタンスって基本揮発性(永続化しない)なので、
永続化させたいデータを意識して利用する必要があるんだけど、
RDBだとSQL Server、あとストレージにキーバリューストアとブロブというファイル置場がある。
他に仮想ディスクとしてドライブが提供されている。
また、オンプレミスからデータを取得して、インスタンスには保存しないというやり方もできるので、(取得のスピードが遅いけど)
どのデータをどこに保存するかを一緒に考えようか。

RDBSQL Serverになるので
もし移行する形態で、現状SQLServerでない人は、移行しないといけない。
例えばOracleだとSQL Serverへの移行支援ツールが出ているので、比較的やりやすいとは思うけど。

アプリケーションについては、.NETのアプリケーションは勿論動くよ。
ただ若干の改修が必要で、改修が多少必要になるのは、永続系データの扱いやログ回りが中心になると思う。
これまで、サーバー内、物理パスや仮想フォルダ内に保存していたものは、
永続化しないのでストレージやSQL Azureへの保存をするように
ログについてもファイル出力しても同じ理由で消えるので、
ストレージに転送する仕組みをSDKが提供してくれるのでそれを適用しないといけない。

サードパーティコンポーネントについては事前に確認した方が良いけど概ね動くよ。
あとレガシーのASPも設定変更で動くので、ご心配なく。

PHPについては、IIS上でPHPを動かすイメージで考えてもらえれば、概ね動くよ。
ただ、永続化データの扱いについては.NETと同じなので、その部分の改修が必要。
PHP用のSDKもちゃんと出ているから、それを使えばいいと思う。

JAVAについてはWindows Azure Starter Kit for Javaというのも出ている通り、デプロイしやすくなっているよ。
Ruby on Railsについては、Nogakudoというコンパニオンツールが出ているのでチェックを。
Node.jsはこれから力を入れていくそう。

開発ツールはVisual StudioEclipseから可能。Eclipse向けのプラグインも出ているのでよろしくね。

ミドルウェアがインストール可能かどうか、良く聞かれるんだけど、デプロイに同梱する形ないし、ストレージから対象を取得する形で
スタートアップタスクと呼ばれるコマンドライン実行で、OSイメージ起動時にインストールすることなら可能。
もし、もうちょっと、複雑なインストーラのあるものを使いたいなら、自分でOSイメージを作成して、VMロールにアップする形になるかな。

外部機関の評価指標はありますか?

AzureはISO27001, SAS70は取得しているそう。(ただし、これはMicrosoftのデータセンターとして)
もし違っていたらツッコミよろしくです。
http://www.microsoft.com/windowsazure/Whitepapers/securityoverview/#5.3

値段っていくらぐらい?

課金シートや、
課金サービスがあるから是非試算してみて。
SQLAzureの利用金額は、データ量を考えればよいので、算出しやすいと思う。1GBで月額870円くらい。
多重化されたSQL Serverがこの値段で手に入るなんて、一番コスパがいいのはSQL Azureなんじゃないかって思ってるよ。
インスタンスについては、どのサイズをいくつ買うにしても、コア6500円くらいだと思ってくれれば。

XSという超スモールサイズもあって、そっちは0.5コア扱い。

制限系はどんなものがありますか?

サーバーについては、インスタンスのサイズが決まっているのでスペックの下限と上限があるので、用途を満たすか要確認。
ちなみにXLのインスタンスで8コア14GBのメモリーなので、スケールアップにはこの限界がある。

あとインスタンスは、アプリケーション更新時やパッチ適用時、物理的な移動時に無停止にするために、
基本2インスタンス以上で組むようになるよ。

あとデータについて、SQL Azureは(2011年12月現在で)50GB→150GBが容量制限になるそう。
ただ、この後Federation機能という複数のSQL Azureを一つのDBに見立てる機能が出てくるので、
DBを分散して負荷に耐えるような事もできるようになるよ。

ストレージについては最大容量は1アカウントあたり100TB。
これを超える場合は、複数アカウントでの運用を考える必要があります。
また各ブロブの最大容量は200GB。ファイル容量の上限についてはこれが当てはまるよ。

IPアドレスは固定のものを持てない。よってドメイン指定する際にAレコードは使えず、CNAMEで運用するよ。
なので、http://jazug.jpはできなくてhttp://www.jazug.jpというドメイン名になる。

SMTPサーバーがないのが良く話題になる。
Workerロールを使えば、SMTPサーバーを作れないことはないんだけど、
SPAM業者のプラットフォームになりかねない等、ポリシーで用意してないとのこと。
Liveのプラットフォームを使ったSendGridみたいなサービスがあるといいんだけど。。。
ので、この部分は別途メールサーバーか外部サービスが必要。

ポートについては、空けたいもの(Endpoint)を自分で設定して運用する感じ。

ネットワークはWindows Azure コネクトを使うとセキュアにオンプレミスと接続できるようになるよ。
ただバーチャルプライベートクラウド的な閉ざされた世界は、まだ作れない。
Azureとオンプレミスをセキュアに接続することはできるけど、
Azureについては閉ざされているわけではないんだ。
IP制限とかするんだったら、今のところプログラム側で記述することになるね。

データセンターはどこ?

全世界で6つ(北ヨーロッパ、西ヨーロッパ、米国中北部、米国中南部、東アジア、東南アジア)あるよ。
日本だと、前述した富士通のサービスがある。
(こちらは、マイクロソフト側が運営するWindows Azureのポータルとは別になる、別サービスなので注意してね。)
だから、日本の選択肢は、香港(東アジア)、シンガポール(東南アジア)、日本By富士通だと思う。
レイテンシはあって、国内にある場合よりは遅いけど、アジアを利用すれば体感では感知できない程度かな。
あとCDNのエッジサーバーは日本にもあるので、CDNを利用したコンテンツのレイテンシは問題ない。
何で日本にもあるかというと、Windows Updateを配っている大規模なネットワークを利用しているから。

マルチテナント出来る?

マルチテナントは出来る。
http://cloudapp.net/site1 http://cloudapp.net/site2 みたいな仮想フォルダ分けもできるし
ホスト名自体を複数割り当てて、ホスト名が参照するルートディレクトリを分けて、制御することもできる。
http://www.jazug1.jp http://www.jazug2.jp みたいにね。
ので、SaaSを作るのにも向いているし、小さいシステムを複数のせるのにも向いていると思うよ。

どの程度自動運用なの?

OSは2008と2008R2のイメージが提供されてる。
パッチは、都度新しいOSイメージがAzure側から提供されて、適用される。
ので、運用側での対応は不要。
もちろん、特定のバージョンに絞って、
自動アップグレードを拒否することもできるのでよろしくね。

また、ハード自体のトラブルやOSのハングアップ時には、
自動で別のインスタンスに割り当てられるから、この点も便利。

データはどの程度守られているの?

SQL Azureのデータベースは自動的に三重化されて、
障害時には自動的にフェイルオーバーし、その後三重化体制に復帰するような仕組み。
ただし、同一リージョン内という話。
これを補うために、データシンクというデータ同期サービスが提供されているので、
オンプレミスや別リージョンと同期可能になるはず。よろしくね。



本番系だけじゃなくてステージングも必要なんだけど

ステージング分も別途インスタンスが必要になるね。
ただ、従量課金なので、ステージングは必要な時に必要な数だけ動かすのが正解で
ずっと動かしておかなくちゃという考えは、いらないと思うよ。

支払はどうなるの?

カード払いが基本だったんだけど、今は請求書払いも充実してる。
ただ、請求書払いは与信を通す必要があった気がするので良く確認してね。

実際どの程度使われているの

2011年12月時点で、日本でのアプリケーション数も5000を突破したと聞いたよ。
有名事例、大規模事例沢山でてきたので、これから要チェックだね。
現状的には、国際的な規模で使われる大規模な業務アプリケーション、
ソーシャルアプリケーション、インターネットコマース、SaaS が中心になっているみたい。
大規模なデータ解析のプラットフォームとしても使われているそうで、事例が充実してきました。
移行の観点から、新規事業や新サービスで使われるケースのほうが、取り組みやすいみたい。
また、季節によって変動するものや短期間というものもAzureにマッチするよ。

この内容のUPDATEはJapan Windows Azure User Groupでチェックしてね。