2014年10月25日
川俣晶の縁側ソフトウェア技術雑記total 4414 count

1つのSQLサーバを共有するAzure WebSiteとComputeService両用のWebアプリを作成する方法

Written By: 川俣 晶連絡先

「まあともかく実験して調べたのでまとめる」

「前提はなんだい?」

「SQLサーバを使用するAzureのComputeServiceがある。これをWebサイトとして配置するにはどうすれば良いかだ。データベースは新規に作らずに共有する」

「それは可能なのかい?」

「割と簡単に可能だった。ただし、1つだけ罠があって、データベースの共有が上手く行かなかったので、そこで時間を食った」

「じゃあまとめてくれ」

「これは、あくまで調査の時点での状況であることを予め断っておくぞ」

「時間が経過すると状況が変化するかもしれないわけだね」

「そうだ。それがクラウドだ」

  • 普通にComputeServiceのWebRoleを1つを含むソリューションを作成しておく
  • ComputeServiceのプロジェクトを発行するとComputeServiceへの発行になる
  • WebRole1(名前を変更していればその名前)のプロジェクトを直接発行すると、普通のWebSiteの発行になる。Azure WebSiteの発行も選択可能
  • ただし、WebRole1であっても【発行】ではなく【Microsoft Azureに発行】を選ぶとComputeServiceになる模様
  • 既存のSQL Serverに接続するためには、ComputeServiceは特に意識する必要は無い。ただ単にファイアウォールでポートを開いて適切な接続文字列をWeb.Configに設定するだけ
  • Azure WebSiteに発行する際、データベースに関していろいろ質問されるが、それらに答えると必ず新規のSQLサーバが作成されてしまい、既存のサーバに接続できない。必ず既存サーバへの接続情報をWeb.configに書いた上で、発行ダイアログでは【データベース不使用】を選ぶ。接続文字列の上書き設定もチェックを外しておく。つまり手動で全ての接続を予めWeb.configに設定しておき、システムにデータベースの設定はいじらせない
  • ComputeServiceのWebRoleのプロセスはWebSiteとして動作させると動かないので、そこに意味のあるコードは入れない。その他WebSite側のプロセスは走るが、WebRole側のプロセスは走らないので注意。当然、WebSite側のプロセスはリサイクルされてすぐ消えてしまうので、WebSiteで動作させる場合、普通に書く限り常駐される処理は記述できない
  • WebSiteであっても、インスタンス数を増やしてスケールアウトできるので、プロセスのローカルなメモリやストレージにデータをキャッシュしない

感想 §

「結局どういうことだい?」

「ComputeServiceとWebSiteは同じAzureという名前のサービスの下にあるから、一見似たように見えるかも知れないが実際の中身は別物。いろいろな方法論が別物」

「どこが違うの?」

「非常に多くの部分が違う。デフォルトのドメイン名も違うし、利用できる技術のバリエーションも違う。その上、デフォルトのデータベースが違う」

「どう違うわけ?」

「ComputeServiceだとSQLはオプション。標準でNoSQLのStorageが付いていくる。ところがWebSiteに配置するとデフォルトでSQLサーバを作成してくれる」

「君の感想はどうなんだい?」

「マイグレーションのパスとして、SQLが使用できることは悪いことではないと思う。おいらは使いたくないけどね。(以下発言削除)」

「ふう。危ない危ない。そこまで過激なことを言ったら夜道で刺されるぞ」

「刺しに来ればいい。その方が話が簡単だ」

「ともかく話を戻せ」

「そうだな。こちらが考える【クラウド】あるいは【Azure】の使いこなしとは9割がAzure Storageの使いこなしそのものなのだ。もしも、そのためのノウハウが要らないなら、Azure屋の自分が仕事をする理由の9割は無いと思って良いだろう」

「なぜそこまでStorageにこだわるわけ?」

「いちばん基本的なサービスに標準で付いてくるストレージがそれだからだ。そしてクラウドはスケールアウトする関係上変化する情報は全て全インスタンスから共有されるストレージに入れて共有する必要がある。事実上、【クラウド=スケールアウト=ストレージの使いこなし】なんだよ」

「SQL使うとどうなるの?」

「昔からあるただの三層システムと大差が無くなる」

「君が持っているAzure対応のノウハウに意味が無いってことだね」

「そうだな。しかし、自分はAzure屋さんであるまえにC#屋さんだ。C#で書くことが前提ならば、ある程度はそこまで目配りせねばなるまい」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2014年
11月
13日
これが真の凶器か・Visual Studio Community 2013
3days 0 count
total 4790 count
【技術雑記】の前のコンテンツ
2014年
10月
22日
WhereメソッドのMemberInfoを取得する方法
3days 0 count
total 4317 count
2014年10月25日
川俣晶の縁側ソフトウェア技術雑記total 4414 count

1つのSQLサーバを共有するAzure WebSiteとComputeService両用のWebアプリを作成する方法

Written By: 川俣 晶連絡先

「まあともかく実験して調べたのでまとめる」

「前提はなんだい?」

「SQLサーバを使用するAzureのComputeServiceがある。これをWebサイトとして配置するにはどうすれば良いかだ。データベースは新規に作らずに共有する」

「それは可能なのかい?」

「割と簡単に可能だった。ただし、1つだけ罠があって、データベースの共有が上手く行かなかったので、そこで時間を食った」

「じゃあまとめてくれ」

「これは、あくまで調査の時点での状況であることを予め断っておくぞ」

「時間が経過すると状況が変化するかもしれないわけだね」

「そうだ。それがクラウドだ」

  • 普通にComputeServiceのWebRoleを1つを含むソリューションを作成しておく
  • ComputeServiceのプロジェクトを発行するとComputeServiceへの発行になる
  • WebRole1(名前を変更していればその名前)のプロジェクトを直接発行すると、普通のWebSiteの発行になる。Azure WebSiteの発行も選択可能
  • ただし、WebRole1であっても【発行】ではなく【Microsoft Azureに発行】を選ぶとComputeServiceになる模様
  • 既存のSQL Serverに接続するためには、ComputeServiceは特に意識する必要は無い。ただ単にファイアウォールでポートを開いて適切な接続文字列をWeb.Configに設定するだけ
  • Azure WebSiteに発行する際、データベースに関していろいろ質問されるが、それらに答えると必ず新規のSQLサーバが作成されてしまい、既存のサーバに接続できない。必ず既存サーバへの接続情報をWeb.configに書いた上で、発行ダイアログでは【データベース不使用】を選ぶ。接続文字列の上書き設定もチェックを外しておく。つまり手動で全ての接続を予めWeb.configに設定しておき、システムにデータベースの設定はいじらせない
  • ComputeServiceのWebRoleのプロセスはWebSiteとして動作させると動かないので、そこに意味のあるコードは入れない。その他WebSite側のプロセスは走るが、WebRole側のプロセスは走らないので注意。当然、WebSite側のプロセスはリサイクルされてすぐ消えてしまうので、WebSiteで動作させる場合、普通に書く限り常駐される処理は記述できない
  • WebSiteであっても、インスタンス数を増やしてスケールアウトできるので、プロセスのローカルなメモリやストレージにデータをキャッシュしない

感想 §

「結局どういうことだい?」

「ComputeServiceとWebSiteは同じAzureという名前のサービスの下にあるから、一見似たように見えるかも知れないが実際の中身は別物。いろいろな方法論が別物」

「どこが違うの?」

「非常に多くの部分が違う。デフォルトのドメイン名も違うし、利用できる技術のバリエーションも違う。その上、デフォルトのデータベースが違う」

「どう違うわけ?」

「ComputeServiceだとSQLはオプション。標準でNoSQLのStorageが付いていくる。ところがWebSiteに配置するとデフォルトでSQLサーバを作成してくれる」

「君の感想はどうなんだい?」

「マイグレーションのパスとして、SQLが使用できることは悪いことではないと思う。おいらは使いたくないけどね。(以下発言削除)」

「ふう。危ない危ない。そこまで過激なことを言ったら夜道で刺されるぞ」

「刺しに来ればいい。その方が話が簡単だ」

「ともかく話を戻せ」

「そうだな。こちらが考える【クラウド】あるいは【Azure】の使いこなしとは9割がAzure Storageの使いこなしそのものなのだ。もしも、そのためのノウハウが要らないなら、Azure屋の自分が仕事をする理由の9割は無いと思って良いだろう」

「なぜそこまでStorageにこだわるわけ?」

「いちばん基本的なサービスに標準で付いてくるストレージがそれだからだ。そしてクラウドはスケールアウトする関係上変化する情報は全て全インスタンスから共有されるストレージに入れて共有する必要がある。事実上、【クラウド=スケールアウト=ストレージの使いこなし】なんだよ」

「SQL使うとどうなるの?」

「昔からあるただの三層システムと大差が無くなる」

「君が持っているAzure対応のノウハウに意味が無いってことだね」

「そうだな。しかし、自分はAzure屋さんであるまえにC#屋さんだ。C#で書くことが前提ならば、ある程度はそこまで目配りせねばなるまい」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2014年
11月
13日
これが真の凶器か・Visual Studio Community 2013
3days 0 count
total 4790 count
【技術雑記】の前のコンテンツ
2014年
10月
22日
WhereメソッドのMemberInfoを取得する方法
3days 0 count
total 4317 count
【技術雑記】のコンテンツ全リスト【技術雑記】の表紙

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20141025161016
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.25 (Alpha-Test) Copyright (c) 2004-2017 Pie Dey.Co.,Ltd.