アーカイブ

‘azure’ カテゴリーのアーカイブ

Windows Azure の新機能

2010 年 11 月 3 日 コメントはありません

Umbraco を Windows Azure で動作させるためのソフトウェア Umbraco Azure Solution Accelerator が公開されたということで、久しぶりに Windows Azure のページをみていると、10月末に開催された Microsoft PDC10 で Windows Azure の新機能 VM Role と Extra Small Instance の提供が発表されていました。Windows AzureWindows Azure Compute のページに新機能の説明があったので概要と自分の感想をメモしました。この二つの機能については、年内に ベーター版が公開される予定だそうです。

VM Role の提供

VM(Virtual Machine) Role というのは、Windows Azure 上で Windows Server 2008 R2 仮想マシンのイメージ – 仮想ハードディスク(VHD)を動作させるものです。これって、どうみても Amazon EC2 の Windows Server のサービスと同様のものです。Windows Azure が Amzon EC2 とガチンコ勝負をするのではないかという人もいると思うのですが、Amazon EC2 のサービスで Windows と Linux との差額は Microsoft の収入になっていると思うので、Amazon EC2 は競合相手ではあるものの一方では有力なお得意様だとおもうのです。私自身は VM Role を提供するようになった一番の理由は、既存の資産を変更することなく Cloud に移行したいというのがユーザーの本音だし、現状では Amazon EC2 と Windows Azure を比較すると自由度の点では EC2 が明らかに優れているので、ユーザー層の拡大のために Microsoft が新たに VM Role を提供することにしたのだと思っています。

Extra Small Instance の提供

小規模なアプリケーションを構築して動作させる開発者向けのインスタンスである Extra Small が提供される予定になっています。Extra Small という名前から判断して Amazon EC2 の Micro インスタンスと同等で EC2 の $0.03 と比べて高いのではないかという人がいると思うのですが、私はよく考えたスペックで出してきたと思っています。Extra Small のスペックは以下のようになっており、

CPU 1.0 GHz
Memory 768 MB
Instance Storage 20GB
I/O Performance Low
Cost per hour $0.05(1ヶ月で 36.5$)

EC2 Micro instance と競合するのではなく、開発者向けの EC2 small instance といったところだと思います。Amazon EC2 の場合は、1ECU が 1.0-1.2 GHz 2007 Opteron または 2007 Xeon processor であり、EC2 small の場合、CPU が 1ECU なので、Azure Extra Small の CPU 1.0 GHzは EC2 small とほぼ同等です。一方メモリは、EC2 small の 1.7GB に対して半分以下なのですが、Windows Azure では、SQL Azure が容量 1GB を1ヶ月 10$ で使用できるので、Azure Extra Small にアプリケーションだけをインストールしデータベースは SQL Azure を利用すれば、 EC2 Small にアプリケーションと SQL Server Express をインストールした場合と比較して、データベースが結構 CPU とメモリを食うので、性能的にいい勝負になると思います。また、開発段階だとデータ量が少なくストレージの容量が少なくても問題がないので、開発者が1ヶ月のコスト $46.5 +α (従量課金)で EC2 small と同等のものが利用できるということです。公開されたらテストをしてみたいと思っています。

カテゴリー: azure タグ:

SQL Azure を使ってみる

2009 年 8 月 26 日 コメントはありません

SQL Azure のCTP版の提供が8月18日から開始されていましたが、SQL Azure CTP のinvitation code が送られてきたので、Windows Azure とSQL Azureを試しています。ストレージとして、SQL Sever のみを使っているアプリケーションの場合は容易に Windows Azure 用にに変換して公開することが可能です。

SQL Azure は、SQL Server 2008 をベースにしていますが、SQL Server Management Studio(SSMS) のオブジェクト エクスプローラ等のGUIツールは、まだ利用できないということで、クエリのみが利用できるという状況です。今後のツール類の整備に期待したいと思います。

マニュアルは、現状では Windows Azure Platform Training Kit(August 2009 Update) を見ろということのようです。SQL Azure の使い方について少しメモ書きをしておきます。

1.SQL Azure への接続

1-1.SSMS を起動します。サーバーへの接続画面が表示されますがキャンセルボタンをクリックします。
1-2.「 新しいクエリ」ボタンをクリックします。SQL Azure へ接続する場合は、常にクエリからになります。
image
1-3 サーバーへの接続画面が表示されるので、管理者でサーバーに接続します。
サーバー名は、server_name.ctp.database.windows.net server_nameは、管理画面のServer Name: で表示されるサーバー名です。
認証は、SQL Server 認証 を選択します。
ログインは、管理画面のServer Admin: に表示される管理者を入力します。
パスワードは、登録したパスワードを使用します。管理画面には「Reset Password」ボタンがあるのでいつでも変更ができます。
image 
1-4 接続できると以下のエラーメッセージが表示されますが無視します。
image 

2. データベースとユーザーの作成

SSMSで使えるのは、クエリの画面だけなので、作業はすべてコマンドベースで行います。
2-1. データベースの作成
CREATE DATABASE データベース名
2-2. データベースの一覧の表示
SELECT * FROM sys.databases
2-3. ユーザーの作成
CREATE LOGIN ユーザー名 WITH PASSWORD=’パスワード’

3. データベースへのユーザー権限の設定

Azure SQL では、USE コマンドを使ったデータベースの移動ができません。別のデータベースにアクセスしたい場合は、接続をし直す必要があります。サーバーへの接続画面で、オプションボタンをクリックして、「接続プロパティ」タブを選択して、「データベースへの接続」の項目にユーザー権限の設定をしたいデータベースの名前を入力します。
image

3-1. データベースへのログインを可能にする
CREATE USER ユーザー名 FOR LOGIN ユーザー名
3-2. データベースに所有者権限を付与する。
EXEC sp_addrolemember ‘db_owner’, ‘ユーザー名’
以上で作成したユーザーで、新規データベースにログインして、作業ができるようになります。

4. データベースの移行

既存のデータベースをSQL Azure にインポートしたい場合は、SSMS でエクスポートしたいデータベースのスクリプトを作成して、それでSQL Azure にインポートします。
4-1. スクリプトの作成
SSMSでエクスポートしたいデータベースを選択して、右クリックをして、「タスク」の「スクリプトの生成」を選択します。
image
スクリプト作成ウィザードが起動されます。ウィザードにしたがって入力しますが、スクリプトオプションの設定では次の設定を変更します。
データのスクリプトを作成 True (データもエクスポートしたいため)
UDDTs を基本データ型に変換 True (SQL Azure では、ユーザー定義型は利用できない)
USE DATABASE のスクリプトを作成 False (SQL Azure では、USE は利用できない)
拡張プロパティのスクリプトを作成 False (SQL Azure では、拡張プロパティは利用できない)

4-2 スクリプトを SQL Azure 用に修正
SQL Azure は、SQL Server 2008 のサブセットであるため、SQL Azure で定義されていない機能を削除していきます。作成したスクリプトファイルをSSMS に読み込んで、以下の変更を行います。

  • スクリプトの最初にあるユーザー定義の削除
    /****** Object:  User [NT SERVICE]    Script Date: 08/26/2009 19:53:45 ******/
    CREATE USER [NT SERVICE] FOR LOGIN [NT SERVICE\MSSQL$SQLEXPRESS]
    GO
  • CREATE TYPE の削除
  • ON [PRIMARY] の削除
  • NOT FOR REPLICATON の削除
  • WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
    WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) で置き換える
  • XML SCHEMA COLLECTION 文の削除
  • CREATE PRIMARY XML INDEXPress 文の削除
  • ROWGUIDCOL の削除
  • SET ANSI_NULLS の削除
  •   

上記以外にも定義されていない機能があるので、SQL Azure に接続して、「解析」ボタンをクリックして、結果を確認してスクリプトを修正していきます。なお、「解析」を実行してもデータベースの更新はおこなわれません。  image

4-3. SQL Azure にインポート

SQL Azure に接続して、スクリプトを実行すれば、SQL Azure のデータベースにテーブル等がインポートされます。

  1. テーブル一覧の取得 SELECT * FROM sys.objects
  2. 照合順序の変更(ALTER DATABASE は使用できないため、列単位で指定)
    ALTER TABLE テーブル名 ALTER COLUMN 列名 列型 COLLATE Japanese_CI_AS
5. SQL Azure を使ったアプリケーションの作成

ローカルのSQL Server を使ってアプリケションを作成後、Web.config の接続文字列を修正する。Web.config の修正をする場合は以下の接続文字列を参考にして修正します。アプリケーションでの接続は、簡単でした。

<add name="AdventureWorksLT2008ConnectionString" connectionString="Initial Catalog=HoLTestDB;Data Source=REPLACE_SERVER_NAME.ctp.database.windows.net;encrypt=true;User ID=HoLTestUser;Password=REPLACE_HoLTestUser_PASSWORD;TrustServerCertificate=true;" providerName="System.Data.SqlClient" />

カテゴリー: azure タグ:

Windows Azure を使ってみる

2009 年 8 月 7 日 コメントはありません

Microsoft 社が提供するクラウドサービス Windows Azure の概要と価格が7月14日に公表されたので実際にWindows Azure CTPを使用してみました。Microsoft のAzure のページから申し込むと3日後にinvitation code が送られてきて使用できるようになりました。Visual Studio にWindows Azure Tools for Microsoft Visual Studioを導入すれば、ストレージに関する部分を除いてはスムーズに移行することができました。
SQL Azure については、今春に仕様変更をした関係で、近くCTP版が使用できるようになるようです。SQL Azure は、SQL Server 2008 をベースにしており互換性が高く、既存のSQL Server ベースのアプリケーションをAzure上に容易に展開できるようなので、SQL Azure のCTP版が公開されたら本格的に使ってみようと思っています。

価格の方ですが、CPU 1時間あたり0.12ドル、ストレージ1ヶ月1GBあたり0.15ドル、ストレージトランザクションが1万回あたり0.01ドル、帯域幅が1GBあたり発信で0.15ドル、受信で0.1ドルです。Google App Engine と比較すると無料分がなく単価もやや割高です。どの程度割高か、無料分をWindows Azure を使用した場合の料金を試算してみると、Google App Engine では、比較的効率のよいアプリケーションで月500万ページビューを無料で処理できるということなので、AzureのCPU時間の計算をAmazon EC2 のCPU時間の計算と同じだと仮定して試算してみると、以下のように月額で1万円程度になります。小規模なホストでは、Google App Engine とではかなりのコスト差になると思われます。

項目 価格(ドル) 備考
CPU 86.40 24時間×30日×0.12ドル/時間
ストレージ 0.15 1GB×0.15ドル/GB
帯域幅(発信) 4.50 1GB×30日×0.15ドル/GB
帯域幅(受信) 0.90 発信帯域幅の20%と仮定
ストレージトランザクション 5.00 500万×1回×0.01ドル/1万回
1ページビューで1ストレージトランザクションと仮定
96.95

Azure のCPU時間の計算は、発行(deploy)してから削除するまでの時間なので、Web ロールのように24時間立ち上げておく場合は、1ヶ月で24時間×30日分が必要になってくると思われます。Web ロールとWorker ロールの両方を使うと2倍の192.8ドルになると思われます。
こうしてみるとコストのほとんどがCPUの料金ということになりますが、割引も導入されると思われます。Google App EngineのCPU時間は、実際にアプリケーションが利用する時間を細かく計算するため、無料分の6.5時間で小規模なホストは無料で処理できるということのようです。

Azureには、SLA(Service Level Agreement)があること、Google App Engineでは利用できない.NET系の言語、PHP等の言語、SQL Azureを利用できるので、どちらのサービスを利用するかは、用途や開発者がどの言語やツールに慣れているかによっても選択されるように思います。月500万ページビューのサーバーが無料や1万円程度で運用でき、追加料金さえ払えば、すぐに大規模なシステムでの運用ができるということで、いずれにしてもクラウドのコストパフォーマンスのよさには圧倒されます。

クラウドを使用することにより、資金がなくてもアイデアとプログラミングの才能さえあれば,短期間で大規模なシステムを運用することが可能になります。ITの世界は今までも変化が非常に激しい世界ですが、クラウドによって、また栄枯盛衰の世の中が見られるように思われます。

カテゴリー: azure タグ: