Post on 20-Aug-2015
現場開発者視点で答えるWindows Azure業務アプリ開発の実際
シグマコンサルティング株式会社
橋本 圭一
はじめに
■本資料の注意・クラウドコンピューティングのとらえ方、その比較、評価は、非常にプレゼンターの主観に基づきます。
・Azureの説明の中には、未リリースの製品が含まれています。よって現時点の情報でしかない点も含まれていることをご容赦ください。
・一部、Microsoft社の資料を転記しておりますので、その点ご了承ください。(各資料に転記と記載)
はじめまして
■経歴・外国語学部(ロシア語・国際政治) ⇒ SIer・SIerで5年間、製薬業や食品業のお客様のSIを担当・2006年に起業、現在5期目・中小のお客様向けにCIO+システム部門のアウトソース・AzureとSilverlightを楽しむ・おばかアプリに夢中■信条:楽しく、人に喜ばれる
■リタイア後の野望:自分のビールブランドを持つ。
クラウドコンピューティングとは?
• インターネット経由でコンピューターリソースを利用
• 利用した分だけ課金される
• 大規模データセンター(仮想化されたサーバー)
⇒ITの所有から利用へ コスト削減・期間短縮
Cloud
Service Service
クラウドコンピューティングのレイヤー
レイヤー 説明 例
SaaS インターネット経由でソフトウエアをサービスとして提供。(ユーザーは、ハードウェアを持たず、利用課金)古くはASPと呼ばれる。
GoogleAppsMicrosoft OnlineServicesSalesforce 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年度において代表的なクラウドのプレーヤーと製品を分類しています。ポジショニングについては、業務システムという軸で見ているのと、プレゼンターの主観によります。
代表的なプレーヤーを独断で比較事業者サービス名
AmazonEC2
GoogleApp Engine
MicrosoftWindows Azure
SalesforceForce.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全体像
ストレージコンピューティング
…
Service Bus
Access Control
SQL Server
Reporting
BIDataSync
LB 一部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フォルダ
ストレージ
画像=Microsoft社の資料抜粋
テーブル詳細
エンティティテーブルアカウント
users
movies
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,640
M ¥23.52 ¥17,280
L ¥47.04 ¥33,840
XL ¥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