現場 開発者視点で 答える windows azure 業務 アプリ開発の 実際
DESCRIPTION
現場 開発者視点で 答える Windows Azure 業務 アプリ開発の 実際. シグマコンサルティング株式会社 橋本 圭一. はじめに. ■本資料の注意 ・クラウドコンピューティングのとらえ方、その比較 、 評価 は、 非常に プレゼンターの主観に基づきます。 ・ Azure の説明の中には、未リリースの製品が含まれています。よって現時点の情報でしかない点も含まれていることをご容赦ください 。 ・一部、 Microsoft 社の資料を転記しておりますので、その点ご了承ください。 ( 各資料に転記と記載 ). はじめまして. ■経歴 - PowerPoint PPT PresentationTRANSCRIPT
現場開発者視点で答えるWindows Azure
業務アプリ開発の実際
シグマコンサルティング株式会社橋本 圭一
はじめに
■ 本資料の注意・クラウドコンピューティングのとらえ方、その比較、 評価は、非常にプレゼンターの主観に基づきます。
・ Azure の説明の中には、未リリースの製品が含まれています。よって現時点の情報でしかない点も含まれていることをご容赦ください。
・一部、 Microsoft 社の資料を転記しておりますので、その点ご了承ください。 ( 各資料に転記と記載 )
はじめまして
■ 経歴・外国語学部 ( ロシア語・国際政治 ) ⇒ SIer・ SIer で 5 年間、製薬業や食品業のお客様の SI を担当・ 2006 年に起業、現在 5 期目・中小のお客様向けに CIO +システム部門のアウトソース・ Azure と Silverlight を楽しむ・おばかアプリに夢中■ 信条:楽しく、人に喜ばれる
■ リタイア後の野望:自分のビールブランドを持つ。
クラウドコンピューティングとは?
• インターネット経由でコンピューターリソースを利用• 利用した分だけ課金される• 大規模データセンター ( 仮想化されたサーバー )⇒IT の所有から利用へ コスト削減・期間短縮
CloudService Service
クラウドコンピューティングのレイヤー
レイヤー 説明 例SaaS インターネット経由でソフトウエアをサー
ビスとして提供。 ( ユーザーは、ハードウェアを持たず、利用課金 ) 古くは ASP と呼ばれる。
GoogleAppsMicrosoft Online ServicesSalesforce CRM
PaaS 開発プラットフォーム自体をサービスとして提供。開発者は、プラットフォーム上で構築したサービスを自分の顧客に提供することができる。
Force.comGoogle App EngineWindows AzureHeroku
IaaS インターネット経由でインフラ(仮想サーバー、ディスク)をサービスとして提供。開発者は、 OS の選択から構築可能。
AmazonEC2 / S3
なんでクラウドをやるの?■ 業界動向• SI 縮小=作るから利用するへのシフト• インターネット以降の投資がひと段落 ( WEB 化ひと段落)では次は?• OS の進化は停滞気味• リアルタイム WEB の台頭 (Twitter,4sq)• よりスピーディな開発が求められている■ 稼ぎ方が今後変わる• 保守が重要性を占める=クラウドで預かれる• 顧客との共生へ(ひがやすおさんも言っている)
クラウドで何をしよう?
■ 何をしよう?• 人が欲しがるものを作りなさい (VC 格言 )■ キーポイント• モバイルデバイス対応がカギ(携帯端末がインター
ネットトラフィックを増大させている)→ 業務システムもマルチデバイス対応が増える見込
み• 新規事業向き(失敗即撤退) やはりベンチャー向き
クラウドの皮肉
■色々と出る問題• 結局すべてはクラウドに乗らない。• 法律等の問題で社外に出せないデータも多い• 仮想化=クラウド? バズワードの迷走• 環境を与えてもらっても稼ぎ方がわからない• お隣が騒がしいと、迷惑を受ける (NW遅延 )• 明日も同じレスポンスとは限らない• 質が高いとは言えない SLA• 即儲からず、投資から。規模の戦いが必要。
クラウドのメリットについておさらい
•ハードウェアやOSの購買、インフラ構築費用が不要•費用として支払うため、資産計上しなくて済む
初期投資
•すぐにアプリの開発、利用が可能になる•新規事業などの変化の早いニーズに対応
スピード•システム管理業務をアウトソース、パッチ適用も自動化•遠隔地での冗長化で事業継続性を確保
運用
•従量制課金であるため、不要時に即 停止可能•需要が測りきれない新サービスに有効
短期利用
•サーバーを後で増強できる。•需要に応じて、リソースを増減できる。
スケーラビリティ
クラウドのデメリットについておさらい
•99.95% というところが多い。=年間4時間STOP•基幹業務では、不安を残す。•(が、業種による。例:9-19 が業務時間など)
サービス保証
•サーバーが距離的に遠いと、速度が遅くなる•※USにある場合などは、もっさりした表示速度になる。
速度の問題•高める方法はあるが、重要データ漏えいのリスクはある。•法律で国外に置けないデータもある。
セキュリティ
•OS自体の管理権限がないため、できないこともある。インフラの自由度
•サービス提供側としても顧客としても事例が不足•導入は急いでいなければ後からでも
経験値不足
クラウド化の検討ポイント例
自社開発すべき
SaaS利用可能
PaaS を活用した自社開発
SaaS利用可能
コア業務※他社との差別化ができる収益の基
非コア業務
ミッションクリティカル※停止不可
非ミッションクリティカル※停止可能
2009 年度において代表的なクラウドのプレーヤーと製品を分類しています。ポジショニングについては、業務システムという軸で見ているのと、プレゼンターの主観によります。
代表的なプレーヤーを独断で比較事業者サービス名
Amazon EC2Google App Engine
Microsoft Windows AzureSalesforce Force.com
開発ツール 開発技術開発言語に依存
テキスト・エディタEclipse
VS2008VS2010
ブラウザEclipse
開発言語 利用する OS に依存 Python 、 JAVA .NET 利用可言語PHP 、 JAVA 、 Ruby
Apex
データベース SimpleDBMySQL 、 Oracle 、SQL Server 2005
BigTable SQL AzureStorage Service
Force.com Database
開発容易性 A B B C既存資産活用 A C A C運用の手間 C A A Aオンプレミス連携
B C B+ B導入容易性 A C B A事例 A B C A適した用途 ゲームアプリ
業務アプリなど何でも
Apps と連携するようなグループウェア?スケールアウトが必要な簡易WEB サービス
エンタープライズアプリケーション向き?
汎用的な業務アプリ
Windows Azure って何?
■ プレゼンターの結論から申し上げると• エンタープライズ用途実現に非常に適した
PaaS• エンタープライズ向け SaaS にも適している• 最も機能拡張が見込まれる PaaS• 仕様を見ていると後発の強みあり
• これまでで、最も簡単に売れない Windows
オンプレミス
Windows Azure全体像
ファブリックコントローラーによる仮想化・自動化
Workerロール
ストレージコンピューティング
Webロール
キュー
テーブルBLOB
…
Service Bus
Access Control
SQL Server
Reporting BI Data
Sync
LB
VMロール
Drive
一部 Microsoft 社の資料抜粋
Hosted Service のポイント
・ WebRole = WEB アプリIIS7(ASP.NET, FastCGI)
・ WorkerRole = 非同期処理 (QUEUE 経由 )バッチ , その他何でも用途 JAVA-Tomcat も動作
・ VM ロール= Amazon の AMI のように OS を自分で自由に変更できる (提供予定 )
Web ロール
Workerロール
VMロール (予定 )
LBInternet
使ってみよう。簡易な WEB サービスを移行。
• Windows Azure上に WEB アプリを移行。• WEB サービスを利用したアプリ (EDI)• 手順は3つ。• ①CloudService プロジェクトの追加• ②既存WEB アプリに参照設定の追加• ③パッケージを作成。
待っている間に開発ポータルツアー
• シンプルなインターフェースで使いやすい。
Storage Service
• テーブル = Key-Value型のデータストア ( 実データ )• BLOB =バイナリ格納、ファイルストレージ (CDN 対応 )• キュー =メッセージ通信 • ドライブ =ファイル I/O でアクセス可能な NTFS フォルダ
ストレージ
キュー
テーブルBLOBDrive
画像= Microsoft 社の資料抜粋
テーブル詳細
エンティティテーブルアカウント
mysns
users
Email =…Name = …
Email =…Name = …
movies Genre =…Title = …
http://< アカウント >.table.core.windows.net/< テーブル名 >
Microsoft 社の資料抜粋
使ってみよう。 StorageService に接続。
■使ってみよう・選択した画像データの URL を Table に格納する。
・その内容を Tweet する。・選択肢にはおまけあり。
SQL Azure
• SQLServer2008 とほぼ 同等。• 制約条件 ( 容量1G,10G 、管理機能使えない、 CLR 、ユーザー定義型不可 )• DB のみの利用も可能。• 今後リリースされる機能に期待大 (Report,BI,Sync)
画像= Microsoft 社の資料抜粋
SQL Azure のアーキテクチャ
ゲートウェイ マスター DB 課金・認証フロントノード群
数百台のサーバーでファブリックを構成
サーバーをまたがったレプリケーション DB を作成して同期
SQL Serverインスタンス
…クラウドデータセンター内ファブリック
サーバー1 サーバー2 サーバー3
サーバーをまたがったレプリケーション 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 資料抜粋 )日本円 一月換算
Windows Azure
コンピューティング時間 (hour)
S \11.76 \8,640M \23.52 \17,280L \47.04 \33,840XL \94.08 \67,680
ストレージ (GB/month) \14.70 \147
ストレージ トランザクション ( 回数 )\0.98/10,000 \98
AzureAppFabric
アクセス コントロール (transaction)\195.02/100,000 ?
サービス バス 従量課金モデル (1 connection) \391.02 ?
パックモデル (5 connection) \975.1 ?
SQLAzure
Web Edition (1GB) \979.02
Business Edition (10GB) \9,799.02
DataTransfers
北米およびヨーロッパ 受信 (GB) \9.80 \980
送信 (GB) \14.70 \1,470
アジア太平洋 受信 (GB) \29.40 \2,940
送信 (GB) \44.10 \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=3233
■ その他ひがやすを「 SIer は顧客の良きパートナーとなれ」http://jibun.atmarkit.co.jp/ljibun01/cs/200912/05/01.html
丸山先生の資料 (Base トランザクション )http://qcontokyo.com/tokyo-2009/pdf/GeneralSession-Day2-Maruyama.pdf