38
現場開発者視点で答える Windows Azure 業務アプリ開発の実際 シグマコンサルティング株式会社 橋本 圭一

現場開発者視点で答えるWindows Azure

Embed Size (px)

Citation preview

Page 1: 現場開発者視点で答えるWindows Azure

現場開発者視点で答えるWindows Azure業務アプリ開発の実際

シグマコンサルティング株式会社

橋本 圭一

Page 2: 現場開発者視点で答えるWindows Azure

はじめに

■本資料の注意・クラウドコンピューティングのとらえ方、その比較、評価は、非常にプレゼンターの主観に基づきます。

・Azureの説明の中には、未リリースの製品が含まれています。よって現時点の情報でしかない点も含まれていることをご容赦ください。

・一部、Microsoft社の資料を転記しておりますので、その点ご了承ください。(各資料に転記と記載)

Page 3: 現場開発者視点で答えるWindows Azure

はじめまして

■経歴・外国語学部(ロシア語・国際政治) ⇒ SIer・SIerで5年間、製薬業や食品業のお客様のSIを担当・2006年に起業、現在5期目・中小のお客様向けにCIO+システム部門のアウトソース・AzureとSilverlightを楽しむ・おばかアプリに夢中■信条:楽しく、人に喜ばれる

■リタイア後の野望:自分のビールブランドを持つ。

Page 4: 現場開発者視点で答えるWindows Azure

クラウドコンピューティングとは?

• インターネット経由でコンピューターリソースを利用

• 利用した分だけ課金される

• 大規模データセンター(仮想化されたサーバー)

⇒ITの所有から利用へ コスト削減・期間短縮

Cloud

Service Service

Page 5: 現場開発者視点で答えるWindows Azure

クラウドコンピューティングのレイヤー

レイヤー 説明 例

SaaS インターネット経由でソフトウエアをサービスとして提供。(ユーザーは、ハードウェアを持たず、利用課金)古くはASPと呼ばれる。

GoogleAppsMicrosoft OnlineServicesSalesforce CRM

PaaS 開発プラットフォーム自体をサービスとして提供。開発者は、プラットフォーム上で構築したサービスを自分の顧客に提供することができる。

Force.comGoogle App EngineWindows AzureHeroku

IaaS インターネット経由でインフラ(仮想サーバー、ディスク)をサービスとして提供。開発者は、OSの選択から構築可能。

AmazonEC2 / S3

Page 6: 現場開発者視点で答えるWindows Azure

なんでクラウドをやるの?■業界動向• SI縮小=作るから利用するへのシフト• インターネット以降の投資がひと段落(WEB化ひと段落)では次は?

• OSの進化は停滞気味• リアルタイムWEBの台頭(Twitter,4sq)• よりスピーディな開発が求められている■稼ぎ方が今後変わる• 保守が重要性を占める=クラウドで預かれる• 顧客との共生へ(ひがやすおさんも言っている)

Page 7: 現場開発者視点で答えるWindows Azure

クラウドで何をしよう?

■何をしよう?

• 人が欲しがるものを作りなさい(VC格言)

■キーポイント

• モバイルデバイス対応がカギ(携帯端末がインターネットトラフィックを増大させている)

→業務システムもマルチデバイス対応が増える見込み

• 新規事業向き(失敗即撤退)

やはりベンチャー向き

Page 8: 現場開発者視点で答えるWindows Azure

クラウドの皮肉

■色々と出る問題• 結局すべてはクラウドに乗らない。• 法律等の問題で社外に出せないデータも多い• 仮想化=クラウド? バズワードの迷走• 環境を与えてもらっても稼ぎ方がわからない• お隣が騒がしいと、迷惑を受ける(NW遅延)• 明日も同じレスポンスとは限らない• 質が高いとは言えないSLA• 即儲からず、投資から。規模の戦いが必要。

Page 9: 現場開発者視点で答えるWindows Azure

クラウドのメリットについておさらい

• ハードウェアやOSの購買、インフラ構築費用が不要

• 費用として支払うため、資産計上しなくて済む初期投資

• すぐにアプリの開発、利用が可能になる

• 新規事業などの変化の早いニーズに対応スピード

• システム管理業務をアウトソース、パッチ適用も自動化

• 遠隔地での冗長化で事業継続性を確保運用

• 従量制課金であるため、不要時に即 停止可能

• 需要が測りきれない新サービスに有効短期利用

• サーバーを後で増強できる。

• 需要に応じて、リソースを増減できる。スケーラビリティ

Page 10: 現場開発者視点で答えるWindows Azure

クラウドのデメリットについておさらい• 99.95% というところが多い。=年間4時間STOP

• 基幹業務では、不安を残す。

• (が、業種による。例:9-19 が業務時間など)

サービス保証

• サーバーが距離的に遠いと、速度が遅くなる

• ※USにある場合などは、もっさりした表示速度になる。速度の問題

• 高める方法はあるが、重要データ漏えいのリスクはある。

• 法律で国外に置けないデータもある。セキュリティ

• OS自体の管理権限がないため、できないこともある。インフラの自由度

• サービス提供側としても顧客としても事例が不足

• 導入は急いでいなければ後からでも経験値不足

Page 11: 現場開発者視点で答えるWindows Azure

クラウド化の検討ポイント例

自社開発

すべき

SaaS

利用可能

PaaSを

活用した

自社開発

SaaS

利用可能

コア業務※他社との差別化ができる収益の基

非コア業務

ミッションクリティカル※停止不可

非ミッションクリティカル※停止可能

2009年度において代表的なクラウドのプレーヤーと製品を分類しています。ポジショニングについては、業務システムという軸で見ているのと、プレゼンターの主観によります。

Page 12: 現場開発者視点で答えるWindows Azure

代表的なプレーヤーを独断で比較事業者サービス名

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サービス

エンタープライズアプリケーション向き?

汎用的な業務アプリ

Page 13: 現場開発者視点で答えるWindows Azure

Windows Azureって何?

■プレゼンターの結論から申し上げると

• エンタープライズ用途実現に非常に適したPaaS

• エンタープライズ向けSaaSにも適している

• 最も機能拡張が見込まれるPaaS

• 仕様を見ていると後発の強みあり

• これまでで、最も簡単に売れないWindows

Page 14: 現場開発者視点で答えるWindows Azure

オンプレミス

Windows Azure全体像

ストレージコンピューティング

Service Bus

Access Control

SQL Server

Reporting

BIDataSync

LB 一部Microsoft社の資料抜粋

Page 15: 現場開発者視点で答えるWindows Azure

Hosted Service のポイント

・WebRole = WEBアプリIIS7(ASP.NET, FastCGI)

・WorkerRole = 非同期処理(QUEUE経由)バッチ,その他何でも用途 JAVA-Tomcatも動作

・VMロール=AmazonのAMIのようにOSを自分で自由に変更できる(提供予定)

WebロールWorkerロール

VMロール(予定)

LBInternet

Page 16: 現場開発者視点で答えるWindows Azure

使ってみよう。簡易なWEBサービスを移行。

• Windows Azure上にWEBアプリを移行。

• WEBサービスを利用したアプリ(EDI)

• 手順は3つ。

• ①CloudServiceプロジェクトの追加

• ②既存WEBアプリに参照設定の追加

• ③パッケージを作成。

Page 17: 現場開発者視点で答えるWindows Azure

待っている間に開発ポータルツアー

• シンプルなインターフェースで使いやすい。

Page 18: 現場開発者視点で答えるWindows Azure

Storage Service

• テーブル =Key-Value型のデータストア(実データ)

• BLOB =バイナリ格納、ファイルストレージ(CDN対応)

• キュー =メッセージ通信

• ドライブ =ファイルI/Oでアクセス可能なNTFSフォルダ

ストレージ

画像=Microsoft社の資料抜粋

Page 19: 現場開発者視点で答えるWindows Azure

テーブル詳細

エンティティテーブルアカウント

users

movies

Microsoft社の資料抜粋

Page 20: 現場開発者視点で答えるWindows Azure

使ってみよう。StorageServiceに接続。

■使ってみよう

・選択した画像データのURLをTableに格納する。

・その内容をTweetする。

・選択肢にはおまけあり。

Page 21: 現場開発者視点で答えるWindows Azure

SQL Azure

• SQLServer2008とほぼ 同等。• 制約条件(容量1G,10G、管理機能使えない、

CLR、ユーザー定義型不可)• DBのみの利用も可能。• 今後リリースされる機能に期待大(Report,BI,Sync)

画像=Microsoft社の資料抜粋

Page 22: 現場開発者視点で答えるWindows Azure

SQL Azureのアーキテクチャ

ゲートウェイ マスターDB 課金・認証フロントノード群

数百台のサーバーでファブリックを構成

サーバーをまたがったレプリケーションDBを作成して同期

SQL Serverインスタンス

…クラウドデータセンター内ファブリック

サーバー1 サーバー2 サーバー3

サーバーをまたがったレプリケーションDBを作成して同期

Microsoft社の資料抜粋

Page 23: 現場開発者視点で答えるWindows Azure

使ってみよう。SQL Azureに接続。

■使ってみよう

・SQL AzureにSSMS2008 R2から接続。

・SQL Azureに接続して、ストアドをバッチ実行。

・SQL Azureへのデータ移行イメージ

■ただし

・この移行スクリプトとイニシャルデータの作成、テストは結構地道な作業になる。(自動生成は可能)

Page 24: 現場開発者視点で答えるWindows Azure

手早く、賢い使い方1

• SQL Azureのみ利用。クライアントアプリから接続。(SQL Serverライセンス費用の超削減)

• Code Far型

ユーザー

WindowsForm,WPFからアクセス

Page 25: 現場開発者視点で答えるWindows Azure

手早く、賢い使い方2

• 特別なミドルウェアを必要としない

WEBアプリとSQL Azure

• 同じデータセンターならSQL Azure転送量無料

• Code Near型ユーザー

WEBブラウザからアクセス

Page 26: 現場開発者視点で答えるWindows Azure

運用管理

■運用管理について

• 開発ポータルで行う作業は、ほぼ全てバッチから可能(管理用APIをたたくツールあり)

• SQL Azureへのバッチ実行

■管理用API利用ツール

• Cmdlet

• Windows Azure Service Management API Tool

Page 27: 現場開発者視点で答えるWindows Azure

管理用APIを叩いてみよう

• Cmdlet からサービスの停止、起動してみます

Page 28: 現場開発者視点で答えるWindows Azure

ログはどうなっているの?

■大事なこと・Azure上ではログの管理方法が異なる。書き込めない。(補足:Driveを試していない)

・診断ログのAPIがあって下記の情報を閲覧できる。◇テーブルに格納可能なログa)Windows Azureトレース・ログ(出力レベルや内容は独自に記述)b)Windows診断インフラストラクチャ・ログc)Windowsイベント・ログd)パフォーマンス・カウンタ◇ブロブに格納可能なログe)IIS 7.0ログf)IIS 7.0失敗した要求のトレース・ログg)Windows Azureクラッシュ・ダンプ

Page 29: 現場開発者視点で答えるWindows Azure

なんで私はAzureなのか?

• ソースやデータの社内既存資産を活用したい。

• 運用は任せたい。パッチ当てなぞ、したくない。

• SaaSを作りたい。適したプラットフォームを選びたい。

• オンプレミスを考えた時に、最も連携がよさげ。

Page 30: 現場開発者視点で答えるWindows Azure

おいくら?(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

Page 31: 現場開発者視点で答えるWindows Azure

料金例

• WEBロール1個 =¥8,000

• ストレージ10G =¥147

• ストレージトランザクション10万回 = ¥98

• SQL Azure(WebEdition) = ¥980

• データ転送量50G(Asia) = ¥3,500

ざっと¥13,000円くらい?

Page 32: 現場開発者視点で答えるWindows Azure

どこで買えるの?

• Microsoft Online Services でポチっとな。

※基本カード払い、一定額を超える=請求書

Page 33: 現場開発者視点で答えるWindows Azure

障害発生時の問い合わせ

• DashBoardでステータスを確認

• サポートオンラインから問い合わせ(8h以内に?)

Page 34: 現場開発者視点で答えるWindows Azure

Azure 今後のお楽しみ機能

• AppFabric 2010.4

• Windows Identity Foundation

=ハイブリッド化を推進、AD連携

• VMロール = 何でもできるように?

• SQL Azureのバックアップ機能=安心

Page 35: 現場開発者視点で答えるWindows Azure

一般利用されるまでの道のり

• 事例が300に達する

※事例を模倣しない限り、爆発的には増えない

⇒一部の英雄的なアーキテクトしか触れないようだと当然、事例は増えない。

• SQLAzureの容量解放、バックアップ機能

• 認証をオンプレミス環境と統一

• 日本にデータセンター=これで法的制約減る

• Key-Value型の成功事例が多数生まれる

Page 36: 現場開発者視点で答えるWindows Azure

余談 開発者に求められる素養

• プログラミングだけではダメ。

• デプロイの知識は必須。(意外とデプロイ作業をやったことがない人もいるが・・・)

• 運用を意識した設計も超重要(環境は思い通りにならない、知りたいことが知りたいときに知れるように環境を熟知すべし)

• つまり、総合力が必要。全部やってみよう。

• 大きすぎる範囲ではない。きっとできる。

Page 37: 現場開発者視点で答えるWindows Azure

おまけ■クラウド開発におさえておくべき用語(一部)ジャンル 用語 説明

データ 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)

Page 38: 現場開発者視点で答えるWindows Azure

参考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