特集:事例で学ぶWindows Azure実用ポイント 業務システムでWindows Azureを使うための42の覚え書き シグマコンサルティング 橋本 圭一2010/02/23 |
|
Azure関連の記事
●まだ知らない人のための最新Azure入門 - Build Insider
●ここまで進化した、Azure Webサイトの世界観(2014年7月版) - Build Insider
●連載:Windows Azureモバイルサービスで作る簡単スマートフォンアプリ - Build Insider
●Microsoft Azureプレビュー・ポータルの機能とは? - Build Insider
●特集:Windows Azureメディア・サービスを利用したストリーミング配信 - Build Insider
●連載:Microsoft技術におけるアイデンティティ連携開発のいま - Build Insider
●Vittorio Bertocci氏インタビュー: 開発者にとってのWindows Azure Active Directoryの役割と今後の展開 - Build Insider
●その知識、ホントに正しい? Windowsにまつわる都市伝説(6):Microsoft Azureの秘密を探る[その1] - @IT
2010年1月4日のWindows Azure正式リリースに伴い、クラウド・プラットフォームWindows Azureに関する話題や実例も、より身近、より具体的になってきた。また、Windows Azure開発に関する情報の公開も活発になってきており、実際に開発を行う機が熟してきた感がある。そういった中で、実際に導入を判断するユーザーサイドに対する説明情報や、事例に関しては不足しており、「実際にどう始めたらよいのか?」「何がこれまでと異なるのか?」と思われている方も少なくないであろう。
そこで本稿では、業務システムをWindows Azureで運用することの可能性や事例および注意事項について説明する。本稿の2ページ目から、筆者自身の経験を通して書きためた「Windows Azureでハマらないための42の覚え書き」を載せている。その部分が本題なので、ぜひその部分は目を通していただきたい。
■1. 一般的なクラウドのメリットとデメリット
まず、一般的な話として、クラウドの主なメリット、デメリットを個条書きで紹介する。
●一般にシステムをクラウドに置くメリット
- サーバなどのIT資源の購入が不要になり、初期コストが安く済む
- 導入後は、利用した分のみを費用計上できる
- サーバ管理業務が省力化される(パッチ適用やサーバの監視は基本的に不要)
- 小さい会社でも廉価にインフラを持てるので、新規事業をスモール・スタートできる。失敗しても、すぐ撤収できる。ベンチャーの格言「Fail Often, Fail Cheap, Fail Quick」(たくさん失敗、安く失敗、すぐに失敗)を実行しやすい
- 需要が読めないケースでも、後でインフラを増強できる
●一般にシステムをクラウドに置くデメリット
- サービス・レベル保証が99.95%のところが多い。年間4時間は止まるということ
- サーバとの距離によって、通信に遅れが発生する
- セキュリティを高める方法はあるが、(基本的に)重要なデータが流出するリスクはオンプレミスより高い
- インフラの自由度が低い。管理者権限がないため、できないこともある(※Windows Azureでは、近い将来登場すると予想されるVMロールにより解消できる)
- あるクラウドをいったん利用開始すると、ほかのクラウドに変更しにくい場合がある
- サービス提供側としても、顧客としても事例が不足しており、業界として経験値不足である
■2. 事例の紹介
●本稿での業務システム定義
本稿では、業務システムを「仕事に使う情報システム」という大ざっぱな定義で考えることとする。よって、例えば業務システムの種類は、基幹業務や勘定系システム、営業支援やCRM、データ分析、Eコマース(BtoC/BtoB)のサイトなどいろいろとあるが、まずは大ざっぱに、仕事に関連するシステムについて言及していると考えていただきたい。
それでは事例の紹介に入る(現実の事例ではあるが、具体的な企業名は伏せている)。事例の内容について、顧客のビジネス、現状のシステム、課題や要望を順に述べさせていただく。一部は整理しやすいように個条書きにしてある。
●教育事業A社
都内、大阪、名古屋、福岡、仙台に事業所を構える教育事業A社。新規教材販売サービスを立ち上げる兼ね合いで、販売窓口となる代理店を全国展開することになった。大小さまざまな代理店に本社業務を委託するので、全国の代理店が使えるオンラインの顧客管理、教材管理システムが必要となっている。
新規事業であるため、リスクを考えると、ある程度予算を絞ってシステムを導入したいと考えている。また、今後の方針として自社でシステムを持たず、システム部門自体をアウトソースすることも要望として持っている。代理店の全国展開に合わせ、代理店が大小さまざまな規模であることから、専用線ではなくインターネットで提供する形を取らざるを得ない。
●現状のシステム
顧客管理システム、運営するスクールの教材管理システム、社内管理システムがあるが、これらはすべてクライアント/サーバ型のシステム(Windowsフォーム)で作られている。データベースはSQL Server 2000とMicrosoft Accessを利用している。
●現状の課題や要件など
現状では、以下のような課題や要件がある。
- インターネットを利用してサービス提供する必要がある
- 付随して、データセンターが必要となっているが、事業の規模が確定していないため、契約に踏み切りにくい
- 新規事業の見込みを考えると、スケーラビリティを考慮したい(現行システムはビジネスの成長に耐えられず、動作が非常に重くなっている)
- 収益の源泉となっている業務に特殊性があり、パッケージ対応できない。よってスクラッチで作る部分は必要となっている
- 帳票業務が多い(100種類程度)
- 勘定系の業務については、Excelに近い操作性を求めており、リッチ・クライアントでの提供を求めている。
次の図はこれらの要件をまとめたものだ。
新システムの全体図(教育事業A社による要望) |
●なぜクラウドを選択したか
クライアント/サーバ型やSOAのシステムなど、さまざまなシステム形態が考えられる中で、クラウドを選択したのは下記の理由からである。
- 代理店が大小さまざまな事業所であることから、専用線を引くことが費用対効果の面で現実的ではない
- 本事業は新規事業であり、サーバやインフラなどのIT調達コスト、初期コストにお金をかけるより、むしろ営業活動的な点に資金をまとめる必要があった
- 年間で数週間のみ、トラフィックが急増する業務システムであるため、インフラをそのタイミングだけ増強するなど融通が利くこと
- 将来的にシステム部門自体をアウトソースしたいと考えており、クラウドごと別業者に任せるという選択肢も検討している
●なぜWindows Azureを採用したか?
Google App EngineやAmazon EC2など、さまざまなクラウド・プラットフォームが考えられる中で、Windows Azureを選択したのは下記の理由からである。
- 顧客のPCや現行のシステム環境がマイクロソフト・プロダクトで構成されていること
- OS自体のメンテナンスが不要で、管理コストにメリットがあると感じていること
- 既存システムの移行ではなく、新規構築だったこと
- オンプレミス側との連携も視野に入れる必要があり、ほかのクラウドと比較した場合、アドバンテージがあったこと
- 技術プレビュー段階から約1年利用したが、大規模な障害も少なく安定していること
- ほかのPaaS(=サービスとしてのプラットフォーム)に比べると取り組みやすいこと(SQL Azureによりリレーショナル・データベース(以降、RDB)も使えるので、単にWindowsサーバ自体が雲の向こう側にあるイメージに近い)
●リスクヘッジ
クラウド環境が何らかの理由で使用できなくなった場合に対するリスクヘッジとしては、社内に最小限の代替環境(=クラウド環境と同等のオンプレミス側のサーバ環境)を用意して、時間単位でデータの同期を取りながら業務を進めれば、万が一の場合も、社内環境を活用して業務を継続できるというように考えている。
●アーキテクチャについて
次の画面は、今回の事例で作成された業務システムのうち、勘定業務のUI(=ユーザー・インターフェイス)である。
今回の事例となっている業務システムのうち、勘定業務のUI |
勘定業務のUIは、上記のように複雑になっている。HTMLとAjaxを駆使して実現できないこともないが、ユーザビリティを追求した結果、UIにはSilverlightが適していると判断した。また、Windows Azureの可用性保証が99.95%という問題に対し、Silverlightであれば、仮にWindows Azureがダウンして送信不能だった場合に、次期Silverlight 4からそのデータをクライアント側のローカル・データストアに一時的に蓄積できるようになることが見込めるため、現段階からSilverlightを利用している。
システム全体のアーキテクチャは、次の図のようになっている。
今回の事例となっている業務システムのシステム・アーキテクチャ |
クライアントサイドのデータは、エンティティとしてJSON形式でASP.NET MVC側に渡される。サーバサイドでJSONデータが処理され、データベースに書き込まれる。この際に、ORマッピング・ツールとして「LightSpeed」というサードパーティ製のコンポーネントを利用している。このLightSpeedはRuby On Railsライクなプログラミングを実現可能とするコンポーネントであり、Windows Azure上でも動作がサポートされている。実行ログを記録するために、Windows Azureストレージ・サービス(以下、単に「ストレージ」と表記)を利用している。
データベースは、勘定業務という性質上、RDBが必要なことから、SQL Azure Business Editionを利用している。また、勘定系の複雑な金額データを更新する際には、ストアド・プロシージャを多用している。
●画面を見てみよう
本稿でサンプルとして紹介するのは、ここまでに述べた現実の事例から、銀行振替業務と請求回収業務のみを、SaaS(=サービスとしてのソフトウェア)として切り出した架空のサービスである。
◇振替業務と請求回収のSaaSサービス「Tiamat」
今回のサンプルにおける振替業務では、簡単にいうと、金融機関が提供する銀行振替(=銀行引落)の代行サービスを利用して、その金融機関に対して顧客の支払情報を提出し、その処理結果を受け取って引き落としの成否をチェックし、引き落としができなかった場合は請求書の発行などを行う。なお、銀行振替はクレジット・カードによる課金と比較して利用料が安いことから、継続的に課金を行うビジネスで利用されるケースが多い。詳細はここでは割愛する。
それでは下記のURLから、画面を起動してみよう。URLはWindows Azure標準の「<プロジェクト名>.cloudapp.net」から変更しており、いわれなければWindows Azureで動作していることが分からないかもしれない。
パスワードは「a」だ。重要なデータは入っていないテスト環境なので、自由に操作していただいて構わない。一定期間でデータベースを初期化するように処理を組んであるので、その点はご容赦願いたい。
[ホーム]画面からは、[顧客情報一覧](データ一覧系)、[新規顧客登録](エントリ系)、[引落開始月別口座一覧](帳票系)にアクセスできる。
◇データ一覧系
[顧客情報一覧]画面では、[検索する]ボタンを押して、検索を実行していただきたい。参考までに300件程度のデータを表示しているので、動作スピードが伝わるかと思われる。サーバとクライアントでJSON形式データを通信しているが、現状、Windows Azureのインスタンスは日本に最も近いアジアに設置してある。
[顧客情報一覧]画面の表示例 |
各行の左端にあるボタンを押下すると、[会員詳細画面]ダイアログが表示され、顧客情報の詳細を確認できる。[月次請求・入金情報]タブでは、細かな請求・入金のやり取りが記録・参照できるようになっている。
◇エントリ系
[新規顧客登録]画面では、次の画面のように、顧客を新規に登録する機能を提供する。
[新規顧客登録]画面の表示例 |
◇帳票
[引落開始月別口座一覧]画面では、新規に口座情報を登録した顧客の一覧を表示できる。現状の課題として、Windows Azure上では、帳票のプリンタへの[出力]ボタンと、PDFの[生成]ボタンが正常に動作しない。RTF(リッチ・テキスト・フォーマット)形式では正常に出力できる。なお、この一連の帳票機能は、オンプレミスの環境では正常に動作する。
[引落開始月別口座一覧]画面の表示例 |
以上、事例として紹介させていただいた。Windows Azureを使って業務システムを作ることは、十分に実現可能というイメージは伝わっただろうか。
次のページからは、筆者自身が調査した結果、出来上がったWindows Azureでハマらないための42の覚え書きを紹介する。
INDEX | ||
特集:事例で学ぶWindows Azure実用ポイント | ||
業務システムでWindows Azureを使うための42の覚え書き | ||
1.一般的なクラウドのメリットとデメリット/事例の紹介 | ||
2.42の覚え書き:構成と課金/デプロイ | ||
3.42の覚え書き:ログなどの環境依存の機能 | ||
4.42の覚え書き:SQL Azure/システム移行時の注意点/そのほか | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -