現場開発者視点で答える
Windows Azure
業務アプリ開発の実際
シグマコンサルティング株式会社
橋本 圭一
はじめに
■本資料の注意
・クラウドコンピューティングのとらえ方、その比較、
評価は、非常にプレゼンターの主観に基づきます。
・Azureの説明の中には、未リリースの製品が含まれて
います。よって現時点の情報でしかない点も含まれて
いることをご容赦ください。
・一部、Microsoft社の資料を転記しておりますので、
その点ご了承ください。(各資料に転記と記載)
はじめまして
■経歴
・外国語学部(ロシア語・国際政治) ⇒ SIer
・SIerで5年間、製薬業や食品業のお客様のSIを担当
・2006年に起業、現在5期目
・中小のお客様向けにCIO+システム部門のアウトソース
・AzureとSilverlightを楽しむ
・おばかアプリに夢中
■信条:楽しく、人に喜ばれる
■リタイア後の野望:自分のビールブランドを持つ。
クラウドコンピューティングとは?
Service
Service
Cloud
• インターネット経由でコンピューターリソースを利用
• 利用した分だけ課金される
• 大規模データセンター(仮想化されたサーバー)
⇒ITの所有から利用へ コスト削減・期間短縮
クラウドコンピューティングのレイヤー
レイヤー
説明
例
SaaS
インターネット経由でソフトウエアをサービスとし GoogleApps
Microsoft Online
て提供。(ユーザーは、ハードウェアを持たず、
Services
利用課金)古くはASPと呼ばれる。
Salesforce CRM
PaaS
開発プラットフォーム自体をサービスとして提供。 Force.com
開発者は、プラットフォーム上で構築したサービ Google App Engine
Windows Azure
スを自分の顧客に提供することができる。
Heroku
IaaS
インターネット経由でインフラ(仮想サーバー、
ディスク)をサービスとして提供。開発者は、OS
の選択から構築可能。
AmazonEC2 / S3
なんでクラウドをやるの?
■業界動向
• SI縮小=作るから利用するへのシフト
• インターネット以降の投資がひと段落
(WEB化ひと段落)では次は?
• OSの進化は停滞気味
• リアルタイムWEBの台頭(Twitter,4sq)
• よりスピーディな開発が求められている
■稼ぎ方が今後変わる
• 保守が重要性を占める=クラウドで預かれる
• 顧客との共生へ(ひがやすおさんも言っている)
クラウドで何をしよう?
■何をしよう?
• 人が欲しがるものを作りなさい(VC格言)
■キーポイント
• モバイルデバイス対応がカギ(携帯端末がインター
ネットトラフィックを増大させている)
→業務システムもマルチデバイス対応が増える見込み
• 新規事業向き(失敗即撤退)
やはりベンチャー向き
クラウドの皮肉
■色々と出る問題
• 結局すべてはクラウドに乗らない。
• 法律等の問題で社外に出せないデータも多い
• 仮想化=クラウド? バズワードの迷走
• 環境を与えてもらっても稼ぎ方がわからない
• お隣が騒がしいと、迷惑を受ける(NW遅延)
• 明日も同じレスポンスとは限らない
• 質が高いとは言えないSLA
• 即儲からず、投資から。規模の戦いが必要。
クラウドのメリットについておさらい
初期投資
スピード
運用
短期利用
スケーラビリティ
• ハードウェアやOSの購買、インフラ構築費用が不要
• 費用として支払うため、資産計上しなくて済む
• すぐにアプリの開発、利用が可能になる
• 新規事業などの変化の早いニーズに対応
• システム管理業務をアウトソース、パッチ適用も自動化
• 遠隔地での冗長化で事業継続性を確保
• 従量制課金であるため、不要時に即
停止可能
• 需要が測りきれない新サービスに有効
• サーバーを後で増強できる。
• 需要に応じて、リソースを増減できる。
クラウドのデメリットについておさらい
• 99.95%
サービス保証
というところが多い。=年間4時間STOP
• 基幹業務では、不安を残す。
• (が、業種による。例:9-19
速度の問題
セキュリティ
インフラの自由度
経験値不足
が業務時間など)
• サーバーが距離的に遠いと、速度が遅くなる
• ※USにある場合などは、もっさりした表示速度になる。
• 高める方法はあるが、重要データ漏えいのリスクはある。
• 法律で国外に置けないデータもある。
• OS自体の管理権限がないため、できないこともある。
• サービス提供側としても顧客としても事例が不足
• 導入は急いでいなければ後からでも
クラウド化の検討ポイント例
コア業務
※他社との差別化が
できる収益の基
ミッション
クリティカル
※停止不可
非ミッション
クリティカル
※停止可能
自社開発
すべき
PaaSを
活用した
自社開発
非コア業務
SaaS
利用可能
SaaS
利用可能
2009年度において代表的なクラウドのプレーヤーと製品を分類しています。
ポジショニングについては、業務システムという軸で見ているのと、プレゼンターの主観によります。
代表的なプレーヤーを独断で比較
事業者
サービス名
Amazon
EC2
Google
App Engine
Microsoft
Windows Azure
Salesforce
Force.com
開発ツール
開発技術
開発言語に依存
テキスト・エディタ
Eclipse
VS2008
VS2010
ブラウザ
Eclipse
開発言語
利用するOSに依存
Python、JAVA
.NET利用可言語
PHP、JAVA、Ruby
Apex
データベース
SimpleDB
MySQL、Oracle、
SQL Server 2005
BigTable
SQL Azure
Storage Service
Force.com
Database
開発容易性
既存資産活用
運用の手間
オンプレミス連携
導入容易性
事例
適した用途
A
A
C
B
A
A
ゲームアプリ
業務アプリ
など何でも
B
C
A
C
C
B
B
A
A
B+
B
C
Appsと連携するような エンタープライズ
グループウェア?
アプリケーション向き?
スケールアウトが必要な
簡易WEBサービス
C
C
A
B
A
A
汎用的な業務アプリ
Windows Azureって何?
■プレゼンターの結論から申し上げると
• エンタープライズ用途実現に非常に適したPaaS
• エンタープライズ向けSaaSにも適している
• 最も機能拡張が見込まれるPaaS
• 仕様を見ていると後発の強みあり
• これまでで、最も簡単に売れないWindows
Windows Azure全体像
オンプレミス
コンピューティング
ストレージ
Service
Bus
…
Reporti
ng
Access
Control
BI
SQL Server
LB
一部Microsoft社の資料抜粋
Data
Sync
Hosted Service のポイント
Inter
net
LB
Webロール
・WebRole = WEBアプリ
IIS7(ASP.NET, FastCGI)
Worker
ロール
VM
ロール(予定)
・WorkerRole = 非同期処理(QUEUE経由)
バッチ,その他何でも用途 JAVA-Tomcatも動作
・VMロール=AmazonのAMIのようにOSを自分で自由に
変更できる(提供予定)
使ってみよう。簡易なWEBサービスを移行。
•
•
•
•
•
•
Windows Azure上にWEBアプリを移行。
WEBサービスを利用したアプリ(EDI)
手順は3つ。
①CloudServiceプロジェクトの追加
②既存WEBアプリに参照設定の追加
③パッケージを作成。
待っている間に開発ポータルツアー
• シンプルなインターフェースで使いやすい。
Storage Service
ストレージ
•
•
•
•
テーブル =Key-Value型のデータストア(実データ)
BLOB =バイナリ格納、ファイルストレージ(CDN対応)
キュー =メッセージ通信
ドライブ =ファイルI/Oでアクセス可能なNTFSフォルダ
画像=Microsoft社の資料抜粋
テーブル詳細
Microsoft社の資料抜粋
アカウント
テーブル
users
movies
エンティティ
使ってみよう。StorageServiceに接続。
■使ってみよう
・選択した画像データのURLをTableに格納する。
・その内容をTweetする。
・選択肢にはおまけあり。
SQL Azure
• SQLServer2008とほぼ 同等。
• 制約条件(容量1G,10G、管理機能使えない、
CLR、ユーザー定義型不可)
• DBのみの利用も可能。
• 今後リリースされる機能に期待大(Report,BI,Sync)
画像=Microsoft社の資料抜粋
SQL Azureのアーキテクチャ
フロント
ノード群
ゲートウェイ
マスターDB
課金・認証
サーバーをまたがったレプリケーションDBを作成して同期
サーバー1
サーバー2
サーバー3
SQL Server
インスタンス
サーバーをまたがったレプリケーションDBを作成して同期
クラウド
データセンター内
ファブリック
…
数百台のサーバーでファブリックを構成
Microsoft社の資料抜粋
使ってみよう。SQL Azureに接続。
■使ってみよう
・SQL AzureにSSMS2008 R2から接続。
・SQL Azureに接続して、ストアドをバッチ実行。
・SQL Azureへのデータ移行イメージ
■ただし
・この移行スクリプトとイニシャルデータの作成、テス
トは結構地道な作業になる。(自動生成は可
能)
手早く、賢い使い方1
• SQL Azureのみ利用。クライアントアプリから接
続。(SQL Serverライセンス費用の超削減)
• Code Far型
ユーザー
WindowsForm,
WPFからアクセス
手早く、賢い使い方2
• 特別なミドルウェアを必要としない
WEBアプリとSQL Azure
• 同じデータセンターならSQL Azure転送量無料
• Code Near型
ユーザー
WEBブラウザ
からアクセス
運用管理
■運用管理について
• 開発ポータルで行う作業は、ほぼ全てバッチから
可能(管理用APIをたたくツールあり)
• SQL Azureへのバッチ実行
■管理用API利用ツール
• Cmdlet
• Windows Azure Service Management
API Tool
管理用APIを叩いてみよう
• Cmdlet からサービスの停止、起動してみます
ログはどうなっているの?
■大事なこと
・Azure上ではログの管理方法が異なる。書き込めない。(補足:Driveを
試していない)
・診断ログのAPIがあって下記の情報を閲覧できる。
◇テーブルに格納可能なログ
a)Windows Azureトレース・ログ(出力レベルや内容は独自に記述)
b)Windows診断インフラストラクチャ・ログ
c)Windowsイベント・ログ
d)パフォーマンス・カウンタ
◇ブロブに格納可能なログ
e)IIS 7.0ログ
f)IIS 7.0失敗した要求のトレース・ログ
g)Windows Azureクラッシュ・ダンプ
なんで私はAzureなのか?
• ソースやデータの社内既存資産を活用したい。
• 運用は任せたい。パッチ当てなぞ、したくない。
• SaaSを作りたい。適したプラットフォームを選びた
い。
• オンプレミスを考えた時に、最も連携がよさげ。
おいくら?(Techdays 2010資料抜粋)
コンピューティング時間 (hour)
Windows
Azure
S
M
L
XL
ストレージ (GB/month)
ストレージ トランザクション (回数)
Azure
AppFabric
SQL
Azure
Data
Transfers
\98
?
従量課金モデル (1 connection)
\391.02
?
パックモデル (5 connection)
\975.1
?
Web Edition (1GB)
\979.02
Business Edition (10GB)
\9,799.02
北米およびヨーロッパ
アジア太平洋
一月換算
\8,640
\17,280
\33,840
\67,680
\147
\195.02
/100,000
アクセス コントロール (transaction)
サービス バス
日本円
\11.76
\23.52
\47.04
\94.08
\14.70
\0.98
/10,000
受信 (GB)
送信 (GB)
受信 (GB)
送信 (GB)
\9.80
\14.70
\29.40
\44.10
\980
\1,470
\2,940
\4,410
料金例
•
•
•
•
•
WEBロール1個 =\8,000
ストレージ10G
=\147
ストレージトランザクション10万回 = \98
SQL Azure(WebEdition) = \980
データ転送量50G(Asia) = \3,500
ざっと\13,000円くらい?
どこで買えるの?
• Microsoft Online Services でポチっとな。
※基本カード払い、一定額を超える=請求書
障害発生時の問い合わせ
• DashBoardでステータスを確認
• サポートオンラインから問い合わせ(8h以内に?)
Azure 今後のお楽しみ機能
• AppFabric 2010.4
• Windows Identity Foundation
=ハイブリッド化を推進、AD連携
• VMロール = 何でもできるように?
• SQL Azureのバックアップ機能=安心
一般利用されるまでの道のり
• 事例が300に達する
※事例を模倣しない限り、爆発的には増えない
⇒一部の英雄的なアーキテクトしか触れないようだ
と当然、事例は増えない。
• SQLAzureの容量解放、バックアップ機能
• 認証をオンプレミス環境と統一
• 日本にデータセンター=これで法的制約減る
• Key-Value型の成功事例が多数生まれる
余談 開発者に求められる素養
• プログラミングだけではダメ。
• デプロイの知識は必須。(意外とデプロイ作業をやっ
たことがない人もいるが・・・)
• 運用を意識した設計も超重要(環境は思い通りに
ならない、知りたいことが知りたいときに知れるように
環境を熟知すべし)
• つまり、総合力が必要。全部やってみよう。
• 大きすぎる範囲ではない。きっとできる。
おまけ
■クラウド開発におさえておくべき用語(一部)
ジャンル
用語
説明
データ
Key-Value型
RDBとは違い、Key-Valueのみ保持するデータストア。負荷分散や可用性に優れている。ACID徳性確保は
苦手。
クラウド
パブリッククラウドとプ
ライベートクラウド
パブリッククラウド=インターネット経由で提供されるクラウド、プライベートクラウド=企業のイントラや特
定のネットワークに閉じたクラウド
トランザク
ション
CAP定理
分散システムにおいて、データのConsistency(整合性)・可用性(Availability)・分散化(Partition)の3つを同
時に満たすことはできない。クラウドでは、可用性と分散化が必須。
トランザク
ション
BASEトランザクション
クラウドではACIDなトランザクションは実現しにくい。よってACIDに代わるBASEトランザクションという考え
方がある。Basically Available=高可用性。楽観ロックやキューによって実現可能。Soft-State=あるノード
の状態が失われても、定期的に状態情報を取得すれば状態は復元される。EventuallyConsistent=↓
トランザク
ション
イベンチュアル・コンジ
ステンシー
システム内に、一時的に一貫性が損なわれる状態が生まれても、ある期間の後には、一貫性のある状態
になるような性質を、イベンチュアル・コンジステンシーという。(丸山先生の資料より) 例としてDNS。
※ScalableでAvailableで、かつ、EventuallyConsistentなシステムは可能である。(丸山先生の資料より)
楽観的ロック(データにバージョンを持たせて、違えば更新できないでOKではないか。)
セキュリ
ティ
クレームベース認証
アイデンティティ管理に利用する認証形態。ポイントは、システム内に認証機能を作りこまず、外部からの
トークンによって実現することで、クラウドとオンプレミスの双方で、同じ認証形態が可能というメリットがあ
る。(説明足りずですみません・・・。)
通信
CDN
コンテンツデリバリネットワーク(Contents Delivery Network, CDN)とは、 Webコンテンツをインターネット経
由で配信するために最適化されたネットワークのことである。コンテンツ配信網とも。(wikipedia)
参考URL
■Azure関連情報
Techdays2010のセッション資料
http://www.microsoft.com/japan/events/techdays/2010/session/download.aspx
開発ポータル お使いになる前に
http://www.microsoft.com/japan/windowsazure/getstarted/
著者事例「業務システムでWindows Azureを使うための42の覚え書き」
http://www.atmarkit.co.jp/fdotnet/chushin/azurecasestudy_01/azurecasestudy_01_01.html
Windows Azure Service Management CmdLets
http://code.msdn.microsoft.com/azurecmdlets
Windows Azure Service Management API Tool
http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=windowsazuresamples&ReleaseId=323
3
■その他
ひがやすを「SIerは顧客の良きパートナーとなれ」
http://jibun.atmarkit.co.jp/ljibun01/cs/200912/05/01.html
丸山先生の資料(Baseトランザクション)
http://qcontokyo.com/tokyo-2009/pdf/GeneralSession-Day2-Maruyama.pdf
ダウンロード

基調講演のPPTファイルのダウンロード