Developers Summit 2010 (二日日) 私的不完全議事録 【DevSumi2010】

2 月 18・19 日に目黒雅叙園で行われた「Developers Summit 2010」の二日目に私が聴講したセッションの議事録です。スライドの文字を中心にまとめましたが、講師の口頭の説明も一部織り込んでいます。皆さんの参考になれば幸いです。


【19-C-2】 本当に問題ないですか? エンタープライズにおける Cloud & RIA アーキテクチャ (島村伸之氏)

アジェンダ

  • 失敗事例 1: データ保存場所の問題による提案失敗
  • 失敗事例 2: クラウドに起因する操作性悪化と対応
  • 失敗事例 3: 既存システムから Curl + クラウドへの移行
  • まとめ

失敗事例 1

  • お客様の業務内容は代理申請業務
  • 顧客は FAX、手紙、CD-ROM、メールなどで申請したいデータを会社に預け、会社は申請書を作成して代理申請する。申請が通ったら申請代行手数料を受け取る
  • 1 日の処理件数は 100〜300 件
  • 問題:
    • FAX や手紙で受け取ったデータの電子化に手間がかかる
    • 会社の方針で、原本を 3 年間保管することになっている。倉庫を借りて保管しているが、倉庫代が馬鹿にならない
    • 過去の代理申請内容を探すのが手間 (倉庫まで行って探す)
  • 以下の条件で別の SI ベンダーにシステム化を相談した
    • 申請したい情報を PDF にして蓄積
    • 手紙や FAX は高解像度の画像にした後 PDF 化
    • PDF に対し、検索用キーワードの紐付け
    • 1 年以上前のデータはバックアップに移動(1 件 20〜100 MB、多いもので 300MB)。ただし何かのときのために、バックアップメディアからも検索できるように
  • SI ベンダーからの回答……C/S システム
    • サーバー購入費が高い
    • データセンター運用費が高い。8TB のハードディスクは 1 年でいっぱいになるので、年が変わった直後は(バックメディアに移行するため)スカスカでもったいない
  • 住商情報システムからの提案……パブリッククラウド + Curl
    • 初期コストが抑えられ、運用コストがデータ量に応じたものになる
  • 顧客のコンプライアンス: パブリッククラウド上に蓄積する PDF の扱い
    • 蓄積場所が日本国内であり、かつ場所が明確でなければならない
  • このどちらも満たすことのできない条件だった
  • 同様な事例がネットで見つかった
  • データ保存場所に関する問題は(時間が)解決しそうだ
  • お客様を逃がさないよう、パブリッククラウドを取り下げ、日本国内のデータセンターをつないだプライベートクラウドとお客様の環境を VPN で結ぶ提案をしたが、運用コストが桁違いに上がってしまうということで失注した
  • この事例で得られたこと:

失敗事例 2

  • お客様の業務: マーケティング業務
  • 分析対象データを Excel に入力し、グラフを描画。その結果を他社に提供
  • データが増えすぎて管理できなくなったので、データを一元管理できないか?
  • データの保存場所・保存形式に制限はない (公開データなので)
  • データからグラフの描画は Curl の得意分野
  • 分析対象データは登録と参照のみ。修正や拡張はなし
  • そこでパブリッククラウド + Curl のシステムを提案し、受注
  • パブリッククラウドのための工夫
    • レイテンシの悪さを想定して、事前にデータを取得したり、メッセージを表示したりする
    • 通信失敗時はリトライして、処理を止めないようにする
    • 通信はデータ転送量が少なくなるようにする
  • 全社的に使い出して 10 日くらい経ってから、ユーザから「アプリケーションの動きが遅い時がある」と連絡
  • リッチな UI を使って操作性の悪いシステムを構築した
  • 原因調査をすると……
    • 開発環境では、クライアント・サーバの処理に問題は見つからなかった
    • 本番環境において、サーバの処理顔の味ものでも、処理にかかる時間がバラバラで不安定な状況。ネットワークや CPU の問題ではない
    • パブリッククラウドの環境において、パフォーマンスが悪くなる場合がある
  • 同様な事例:
    • Amazon EC2 でもレイテンシの問題があったらしい
  • 操作性が悪化しないように Curl で対応
    • 変更のないデータは早々にサーバから取得し、クライアント内で保持
    • サーバとの通信に失敗した場合、リトライせずにクライアント内部で持っているデータのみで行える処理(オフラインモード)に移行
  • この事例で得られたこと:
    • パブリッククラウドのレイテンシについては、キャッシュサービスを使って改善
    • サーバのパフォーマンスが悪化しても操作性が悪くならないような仕掛けを持たせる

失敗事例3

  • 業務: 営業管理システム
    • 各支店ではクライアントを使い、日々の売上等の営業報告を登録しているが、使いにくい
    • 月初、サーバで月次処理のバッチが動作するが、この処理が非常に重い。CPU パワーが最近不足気味
    • サーバは日々の処理については重い処理がない
  • パブリッククラウド + Curl への移行を提案
    • Curl によるクライアントの操作性改善
    • CPU パワーを動的に変更
    • サーバアプリはそのままでクラウドへ移行
  • 移行手順:
    1. クライアントを Curl のものに入れ替え
    2. サーバをクラウドに移行
  • 入力画面の開発に 2 ヶ月、各支店にアプリケーションを導入・教育で 1 ヶ月、サーバを移行、テスト運用で 1 ヶ月の計 4 ヶ月で本番投入へ
  • 本番稼働して数ヶ月は大きな問題はなかった
  • ユーザより、想定よりもデータ転送量が多いと連絡があった。「これからどんどん増えていかない?」と不安そう
  • ある支店に行って見てみると、操作性向上によって今までよりも多くの操作をしていた。嬉しい誤算
  • 変更のないデータでもサーバから取得する処理があった
  • この事例で得られたこと:
    • できるだけクライアント・サーバ間の通信を抑える
    • Curl では、Curl ORB for Java のデータのバイナリ転送を用いて、データ転送量を少なくすることが可能

RIA + クラウドの利点

  • クライアントにデータを保持させて、データ転送を抑えることができる
  • データ通信そのもののサイズを小さくすることができる

Google Apps サービスの紹介

  • 4 月にプレスリリースをするので、ご期待ください


【19-E-3】自分でできる Web アプリケーション脆弱性診断 (上野宣氏)

プロフィール

脆弱性診断とは

  • 脆弱性診断
    • 対象となる Web アプリケーションに対して、攻撃者視点からセキュリティの問題を発見し報告
    • セキュリティテスト
  • ペネトレーションテストとの違い
  • どちらも多くは専門業者に委託しているか、脆弱性スキャナーによる診断をしている

自社でできない理由

  • テスト方法が分からない
  • テスト仕様書を作れない
  • どこを診断していいか分からない
  • 脆弱性判定の基準が分からない
  • 診断結果報告書の書き方が分からない
  • 自社の診断を信用してもらえない

診断の基準──LASDEC「ウェブ健康診断」の診断仕様を活用

危険度の判定

  • 診断項目によって異なる危険度が割り当てられている
    • 危険度: 高……被害者ユーザの関与がなくても攻撃者が直接アプリケーションに対して攻撃可能である、能動的な脆弱性
    • 危険度: 中……攻撃成功には被害者ユーザの関与が必要である、受動的な脆弱性
    • 危険度: 低

総合判定基準

  • 用治療・精密検査……危険度が高・中の脆弱性を検出
  • 差し支えない……危険度が低の脆弱性のみ発見
  • 異常は発見されなかった

診断に利用する検出パターンと利用基準の例

  • SQL インジェクション
    • 検出パターン……「'」(シングルクォート) 1 個
    • 脆弱性有無の判定基準……エラーになる
  • XSS (クロスサイトスクリプティング)
    • 検出パターン……「'>"><hr>
    • 脆弱性有無の判定基準……エスケープされずに表示
  • セッション管理の不備
    • 検出パターン……ログインの前後でセッション ID が変化するか
    • 脆弱性有無の判定基準……セッション ID が変わらない場合は指摘

診断手順

  1. 診断提唱リストの作成
  2. 仕様に沿って診断開始
  3. レポート作成

診断対象リストの作成

  • 全画面の診断ではない(ログイン、ログアウト、DB 更新など)
  • 最低限実施する診断項目が規定されている

仕様に沿って診断開始

練習台にはやられ Web アプリケーション

診断レポートの書き方

  • LASDEC で PDF で公開されている

安全な Web サイトを作るためには


【19-D-5】Silverlight を用いたビジネス アプリケーション作成のポイント (西崎 公太氏)

Silverlight のポイント

  • リッチなメディア体験、豊かな表現力
  • 機能性、操作性
  • Web アプリケーション
  • 迅速な開発、配信
  • フレームワーク

ビジネスアプリケーション

  • 日常業務の効率化
  • クライアントの展開、処理のサーバ集中
  • 開発生産性・保守性

要件にマッチした場合は Silverlight は最適

設計・開発のポイント

アプリケーション・アーキテクチャ

  • ビジネス処理をどこで行うか?
    • クライアント、サーバ
  • 通信に何を用いるか
    • WCF
      • SOAP
      • REST
    • HTTP

Composite Aplication Guidance

  • WPF および Silverlight 要のフレームワーク
  • コンセプト
    • UI Composition
    • Modularity
      • 疎結合したモジュールを組み合わせてアプリケーションを構成する

Event Publication / Subscription

  • イベントの発信者と受信者の分離
  • 複数の発信者からのイベントを受信

得られる効果

  • 機能単位での開発
    • 開発者が自分の担当機能に専念できる
  • カスタマイズ性の向上
    • リリース後にモジュールによる機能追加が可能

UI とロジックの結合方法

  • MVVM (Model-View-ViewModel) パターン
    • WPF に適用するパターンとして考案
    • UI (View)と振る舞い(ViewModel)との分離


バインド
┌──┐──→┌─────┐ 操作 ┌───┐
│View│ │ViewModel │──→│Model │
└──┘←──└─────┘ └───┘
通知 (プロパティ、イベント)

  • MVP (Model-View-Presenter) パターン
    • WinForm、ASP.NET などで使用
    • UI (View)と振る舞い(Presenter)との分離



委譲
┌──┐──→┌─────┐ 操作 ┌───┐
│View│ │Presenter │──→│Model │
└──┴ ←─ └─────┘ └───┘
操作 (インターフェイス経由)

得られる効果

  • 再利用性の向上
    • ロジックの粒度を細かくし、再利用しやすくする
  • UI と振る舞いとの分離
    • 単体テストの容易性

非同期

  • Silverlight の Web アクセスはすべて非同期
    • UI スレッドを止めることはできない
    • 別スレッドで実行される(マルチスレッドプログラミングが必要)
  • 処理中に操作ができてしまう
    • ビジネスロジック実行中は、コントロールを無効化するなどの対処が必要
  • マルチスレッドプログラミング
    • 必要であること自体は避けられない
    • より取っつきやすい方法を採用する
      • XXXAsync()〜イベント
      • BeginXXX()〜コールバック・EndXXX()
      • BeginXXX()〜wait〜EndXXX()
        • UI スレッドで wait すると IE が暴走するので要注意。wait は別スレッドで

最後に

  • Silverlight はビジネスアプリケーションに適した一面も持っている
  • 用途に適したアーキテクチャの選定が重要
    • Composite Application Guidance も視野に入れて
  • 非同期処理、マルチスレッドプログラミングが不可欠

質疑応答

  • Composite Application Guidance における性能面のペナルティは。

    →Composite Application Guidance だからといって遅くなるということは特にない


【19-D-6】Programming Amazon Web Services / EC2, SQS, S3, SimpleDB (Jeff Barr 氏)

About your speaker...

  • Amazon Web Services employee since 2002
  • Background:
    • Startups & Consulting (XML, SOAP)
    • Microsoft - Visual Basic 開発
    • Amazon
  • Interests:
    • Development
    • Technology
    • Evangelism - 最近はコードを書くことだけではなく、コードについての話をすることを楽しいと思うようになった
    • Travel - 出張旅行も楽しい
  • 『HOST YOUR WB SITE IN THE CLOUD』出版予定──自分はよく知らないが、日本語訳の予定もあると聞いている

Overview

  • Cloud Computing and AWS
  • Amazon Simple Storage Service
  • Amazon Elastic Compute Cloud
  • Amazon Simple Queue Service
  • Amazon SimpleDB
  • Using AWS with PHP & CloudFusion

Characteristics of Clold Computing

  • Technical
    • XML Web service
    • On demand
    • "Infinite" scale
    • Elastic - 輪ゴムのように伸び縮みする柔軟性
    • Fully programmable - 最も重要だと思う点
  • Business
    • Utility pricing - 個別の要素(帯域、ストレージ等)に価格設定。(utility とは水道や電気、ガスのような生活必需品のこと)
    • Pay as you go - 従量制。使って初めて料金が発生する
    • Flexible
    • Economical

Amazon Web Services Use Cases

  • Backup / Archive
  • Media Sharing
  • Media Distribution
  • Academic Computing - 学術機関には無料開放している
  • Web Site Hosting - 現在一番人気のユースケース
  • Programmed Trading
  • Media Rendering - 3D グラフィック、画像形式変換など
  • Search Engine Crawler
  • Social Networking - Facebook アプリケーションは 3/4 が AWS。mixi プラットフォーム上の開発者の中にも AWS 利用者がいる
  • Online Gaming

Amazon Simple Storage Service

  • Highly Scalable Data Storage in-the-cloud
  • Store objects up to 5 GB in size
  • Read and write entire objects
  • Full control of access rights
  • Three Separate S3 installations:
    • US Standard, US - Notrhern California, Europe
  • Physical data import/export - Ship a disk to us - PB 級のデータでも可

Amazon Elastic Computing Cloud

  • Resizable Compute Capacity
    • As much as you need, when you need it. Scale up or down in minutes.
  • Complete Programmed Control via API
    • Create, scale, and manage compute instances programmatically.
  • Variety of Instance Sizes
    • CPU Power, COres, RAM, Disk.
  • Wide Variety of Pre-build AMIs (Amazon Machine Images)
    • Linux, Windows Server 2003 and 20089, and OpenSolaris.
  • Secure & Flexible Network Security Model
    • Full control of access for each running instance.

      X. 500 certificate required for SSH access.

AWS Management Console

  • EC2 Functions in Cnsole:
    • Launch & manage instances
    • Control security groups
    • Monitor performance
    • Cretae disk volumes
    • Map IP addresses
    • Manage key pairs
    • ...

AWS Regions & Availability Zones

  • US East, EU West, US West region
  • Choice of Region (location) and Availability Zone
  • Low latency
  • Fault tolerance
  • Next region to open: Singapore (2010 年第一四半期)
  • Tokyo region に興味のある人とお話ししたいので、このセッションの後にでも。実際に「Tokyo region は作らないのか」という質問はとても多い

Amazon SimpleDB

  • Simple, easy to use, low-cost, web database service.
  • Flexible data model, designed for web apps.
  • Simple semi-structured data storage and query.
  • All data is automatically indexed for fast retrieval.

Amazon Simple Queue Service (SQS)

  • Core architectural element for messaging:
    • Simplify scaling
    • Add fault tolerance
    • Decouple components
  • Unlimited queues per account
  • Unlimited messages per queue
  • Simple programming model

API

  • S3, EC2 に API が用意されている

Programming AWS With PHP and CloudFusion

  • Download from SVN
  • Add Directory to PHP's include_path
  • Add AWS keys to config.inc.php
  • Include one file: require_once('cloudfusion.class.php')

Important AWS Sites


横田聡氏による「【19-D-7】RIA + クラウド + モバイルで広がる業務の効率化」も聴講したのですが、事例紹介が「デブサミ限定ということでお客様から発表の許可をいただいたので、ブログに載せたりツイッターでつぶやいたりするのはご遠慮ください」とのことでした。後半の技術的な説明は後日スライドが公開され次第、リンクを張る予定です。