ScottGuさんを囲んでAzureと.NETの未来を聞いてみた:特集:Windows Azure&.NETの未来(1/3 ページ)
Windows Azureの総責任者であるScott Guthrie(スコット・ガスリー)氏を囲み、日本の開発者らがいろいろな質問をぶつけてみた。その質疑応答の全内容をお伝えする。
2カ月ほど前になるが、2012年10月4日〜5日の2日間、約700名の開発者が集まる日本マイクロソフト主催のカンファレンス「Developer Camp 2012 Japan Fall」(以降、DevCamp)が開催された。このカンファレンスの注目ポイントは、何といっても“赤シャツ”がトレードマークのScott Guthrie氏(スコット・ガスリー。以降、ScottGu。敬称略)が来日し、セッションなどに登壇することだった。
ScottGuは、ASP.NET立ち上げチームの1人で、ASP.NETやSilverlightなどのWeb技術全般の開発責任者を歴任した後、現在ではWindows Azureの総責任者となっている。ブログによる情報発信にも積極的で、しかもその内容が開発者にとって重要なことが多いため、以前、Insider.NETではScottGuのブログを転載させていただいていた(「ScottGu氏のブログより − @IT」)。
DevCampの1日目の全セッション終了後、そのScottGuを10名ほどのWindows Azure&ASP.NETコミュニティの代表者で囲み、さらにその回りに20名ほどのオーディエンスに集まってもらい、「Windows Azure&.NETの未来」についていろいろな質問をScottGuにぶつけてみた(このラウンド・テーブルの司会は筆者が務めた)。本稿ではその内容をお伝えする。
※「●」で記載している文章は「会場からの質問」を意味している。そのほかはScottGuの発言である。
IaaSとPaaS、どちらがお勧めですか?
Windows Azureが良いのは、IaaS(Infrastructure as a Service: アイアース)とPaaS(Platform as a Service: パース)を組み合わせて使えたり、Windows ServerとLinuxサーバを組み合わせて使えたりする柔軟性で、多様なソリューションを構築できることです。
「どちらが良いか?」という質問に答えると、例えばWebのフロントエンドや中間層のようなステートレス(Stateless)で大丈夫なものはPaaSが向いており、PaaSを使うことで運用・管理を簡素化したり、開発スピードを上げたりできます。一方、例えばデータベースのようにステートフル(Stateful)なものはPaaSでは実現が難しいので、IaaSの方が向いています。
「PaaSとIaaSを組み合わせる」という、Windows Azureならではの使い方を具体的に説明すると、フロントエンドや中間層としてWebロールやワーカー・ロールのクラウド・サービスをデプロイしたうえで、さらにバックエンドとしてIaaSの仮想マシン(Virtual Machines。以降、VM。執筆時点ではプレビュー版)を用意して、そこでデータベースを動かすという構成にします。そこに、(最近、導入した新機能の)仮想ネットワーク(Virtual Network。以降、VNet。執筆時点ではプレビュー版)を使って、クラウド・サービスとVMをつなぎます。これにより、遅延の少ない高速な接続が可能になります。また、クラウド・サービス側は「スケールアップ/スケールダウンが簡単」というメリットも得られます。
●「VMの上にデータベースを置く」という話ですが、現状の物理IOが遅いので、実用は難しいのではないでしょうか?
近いうちに、メモリやCPUが大幅に増える、より大きなサイズのVMを提供する予定です。それを使えば、データベースも十分実用可能になります(参考:「Windows Azure、ベンチマークで Big Compute の高いパフォーマンスを証明 - Windows Azure Team Blog (Japan) - Site Home - MSDN Blogs」)。
●前述したような構成は、ロード・バランサ(Load Balancer。以降、LB)を自由に設定できれば、もっと柔軟に実現できると思います。それに関する機能強化は予定されていますか?
現状のクラウド・サービスは、「仮想IPアドレス」(Virtual IP Address。以降、VIP)で提供され、LBにより外部からのトラフィック(Traffic)は複数のマシン間で負荷分散(Load Balancing)されます。一方、VNet経由でのVMへの接続は「ダイレクトIP」(Direct IP。以降、DIP)となり、負荷分散の対象にはなりません。ですから、VM上のデータベースへのトラフィックは、あくまでデータベースが提供する機能を使って負荷分散させることになりますが、裏を返せば、VIPやLBを使わないからこそ、DIPによる接続は遅延が少なくて済む(LBを使った場合と比べて0.9ミリ秒ほど時間を短縮できる)という利点が得られます。
もちろん、人によっては「内部で負荷分散したい」というニーズがあることも理解しています。そこで、それを実現する機能をオプションとして提供できないかを検討中です。またVIPを使ったLBは、現在、「Layer-3」もしくは「Layer-4」と呼ばれているものになりますが、(セッションや、地理的な近さ、ABテストなどを基準にして負荷分散する)「Layer-7」のLBを追加することを今、検討中です。
さらに、「もっと高度な負荷分散をしたい」ということであれば、LBの層を新たに設けて、そこでIISの「ARR(Application Request Routing: アプリケーション要求ルーティング)」機能や、HTTP&リバース・プロキシ・サーバである「nginx」(「エンジンエックス」と読む)などを使って実現することになります。このようなことを実現できる環境は今日すでに整っており、実際にすでに実施している人もいます。将来的にはVIPに、そのような高度な負荷分散機能を持たせたいと考えています
●米国では、IaaSとPaaSではどちらが人気がありますか?
場合によりますが、AWS(Amazon Web Services)やRightScaleのようなクラウド・プロバイダは、IaaSということで人気になっている面があります。純粋に「柔軟性」ということを考えた場合は、IaaSの方が選択しやすいといえます。ただその一方で、開発・運用のコストは高くなりますし、より複雑な作業になってしまいます。だからこそ、「Windows AzureでIaaSとPaaSのいいとこ取りをして、組み合わせて使う」という手法を多くの人が認識し、実際に採用し始めています。
●今年の“Spring Release”では、Windows Azure Webサイト(Web Sites)などの新サービスが追加されました。もちろんその基礎になっている技術はPaaS型のクラウド・サービスですが、そのクラウド・サービス自体の新機能追加があまりないと感じています。クラウド・サービスの新機能追加の優先順位は今後も低いのでしょうか?
これまでの半年間で優先順位を上げて対応したのが、VMやWebサイト、モバイル・サービスなどの新機能ですが、ご指摘のとおり、その実装はクラウド・サービス上に構築されています。それだけでなく、占有のキャッシュ(Dedicated Cache)のようなクラウド・サービス独自の新しい機能も追加しています。
これからの半年間〜8カ月間で、さらにクラウド・サービスに投資していきます。開発者向けの新機能を追加しながら更新し、クラウド・サービスをよりリッチにしていきます。例えば、より簡単により速くデプロイできるようにしたり、エミュレータを改善したりなど、さまざまな新機能を考えています。
また、Visual Studioのツール環境もよりリッチにしていく予定です。具体的には、.NET 4.5のサポートにより非同期プログラミングやWebSocketsなどの最新技術を利用できるようになります。
Copyright© Digital Advantage Corp. All Rights Reserved.