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

38
現現現現現現現現現現現 Windows Azure 現現現現現現現現現現 現現現現現現現現現現現現現現現 現現 現

Upload: nate

Post on 14-Feb-2016

32 views

Category:

Documents


4 download

DESCRIPTION

現場 開発者視点で 答える Windows Azure 業務 アプリ開発の 実際. シグマコンサルティング株式会社 橋本 圭一. はじめに. ■本資料の注意 ・クラウドコンピューティングのとらえ方、その比較 、 評価 は、 非常に プレゼンターの主観に基づきます。 ・ Azure の説明の中には、未リリースの製品が含まれています。よって現時点の情報でしかない点も含まれていることをご容赦ください 。 ・一部、 Microsoft 社の資料を転記しておりますので、その点ご了承ください。 ( 各資料に転記と記載 ). はじめまして. ■経歴 - PowerPoint PPT Presentation

TRANSCRIPT

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 の所有から利用へ  コスト削減・期間短縮

CloudService Service

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

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

レイヤー 説明 例SaaS インターネット経由でソフトウエアをサー

ビスとして提供。 ( ユーザーは、ハードウェアを持たず、利用課金 ) 古くは ASP と呼ばれる。

GoogleAppsMicrosoft Online ServicesSalesforce 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 業務 アプリ開発の 実際

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

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

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

汎用的な業務アプリ

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

Windows Azure って何?

■ プレゼンターの結論から申し上げると• エンタープライズ用途実現に非常に適した

PaaS• エンタープライズ向け SaaS にも適している• 最も機能拡張が見込まれる PaaS• 仕様を見ていると後発の強みあり

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

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

オンプレミス

Windows Azure全体像

ファブリックコントローラーによる仮想化・自動化

Workerロール

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

Webロール

キュー

テーブルBLOB

Service Bus

Access Control

SQL Server

Reporting BI Data

Sync

LB

VMロール

Drive

一部 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 フォルダ

ストレージ

キュー

テーブルBLOBDrive

画像= Microsoft 社の資料抜粋

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

テーブル詳細

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

mysns

users

Email =…Name = …

Email =…Name = …

movies Genre =…Title = …

http://< アカウント >.table.core.windows.net/< テーブル名 >

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,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

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