ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法

Slides:



Advertisements
Similar presentations
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
Advertisements

1 会社名: 氏名: 日付: 会社名: 氏名: 日付:. 2 内容 企業のセキュリティ対策状況 ユーザー管理の重要性 ユーザー管理製品 市場状況 Active Directory とは Active Directory 利用に最低限必要な準備 ユーザー管理のご提案内容 最初の取り組み:ユーザー情報の統合管理.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
Curlの特徴.
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
IIS 4.0で開発をするコツ Webアプリケーション構築.
ファイルキャッシュを考慮したディスク監視のオフロード
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
Digital Network And Communication
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
ネストした仮想化を用いた VMの安全な帯域外リモート管理
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
アスペクト指向プログラミングを用いたIDSオフロード
アスペクト指向プログラミングと Dependency Injection の融合
入出力データ型に透過な Webサービス動的実行システム 松江工業高等専門学校 情報工学科 越田高志 情報処理学会第68回全国大会
部分的再ロードによる Java プログラムの再起動の高速化手法
型付きアセンブリ言語を用いた安全なカーネル拡張
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
パフォーマンス徹底比較 Seasar2 vs Spring
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
Xenによる ゲストOSの監視に基づく パケットフィルタリング
仮想計算機を用いて OSを介さずに行う安全な ファイルアクセス制御
暗黙的に型付けされる構造体の Java言語への導入
セキュリティ機構のオフロードを考慮した 仮想マシンのスケジューリング
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉 滋 教授
他のプロセスに あたえる影響が少ない 実行時ミラーリングシステム
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
ソフトウェア工学 知能情報学部 新田直也.
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
IaaS型クラウドにおける インスタンス構成の動的最適化手法
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
各種ルータに対応する P2P通信環境に関する研究
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
活性化のタイミング制御の実装を分離記述可能な分散動的アスペクト指向言語
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
アスペクト指向言語のための 独立性の高いパッケージシステム
アプリケーション依存の先読みが可能なO/Rマッピングツール
Intel SGXを用いた仮想マシンの 安全な監視機構
複数ホストにまたがって動作する仮想マシンの障害対策
アスペクト指向言語のための 独立性の高いパッケージシステム
J2EEアプリケーションにおける アプリケーションレベルスケジューリング
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
アクセス集中時の Webサーバの性能に対する OSの影響
仮想マシンと物理マシンを一元管理するための仮想AMT
統合開発環境によって表現された 言語機構によるコードのモジュール化
同期処理のモジュール化を 可能にする アスペクト指向言語
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
アスペクト指向言語のための視点に応じた編集を可能にするツール
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
統合開発環境のための プログラミング言語拡張 フレームワーク
開発者との対話を活かした 横断的構造の表現
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Presentation transcript:

ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法 理学部 情報科学科 05_21621 別役 浩平 指導教員 千葉 滋

ユーザ毎にカスタマイズ可能なWebアプリ 自分のページの利便性を向上 サイトの集客に影響 例) iGoogle 一般的にはプラグイン機構などをWeb アプリに組み込む Web アプリ開発者 ・・・カスタマイズ機構をもった Web アプリを開発 プラグイン開発者 ・・・ プラグインなどの拡張を作成 ユーザ ・・・ 拡張を選択し、Web アプリをカスタマイズ!

従来技法: プラグイン機構 カスタマイズ可能部分を拡張ポイントとして公開 Web アプリ開発者・・・インタフェースとして拡張ポイントを公開 プラグイン開発者・・・実装クラスをサーバーに登録 ユーザ・・・サーバー上のプラグインを選択 void setLayout(){ PageLayout p = webapp.getLayout(uid); setTitle(p.getTitlePos()); setColor(p.getbgColor()); : Interface PageLayout{ String getTitlePos(); String getbgColor(); : 拡張ポイント Class Layout1 impl. PageLayout{ String getTitlePos(){return “center”; } String getbgColor(){return “black”; } : <Config> <Layout class=“Layout1”/> </Config> Class Layout1 impl. PageLayout{ String getTitlePos(){return “ left”; } String getbgColor(){return “ red”; } : 3 ユーザの設定(xml ファイル)

従来のプラグイン機構の問題点 Web アプリ開発者にとって実装コストが大きい プラグイン開発者の自由度が低い プラグイン機構を実装 拡張ポイントA 拡張ポイントB 拡張ポイントC Plug-in 1 Plug-in 2 Plug-in 4 Plug-in 3 プラグイン開発 プラグイン開発者 カスタマイズ不可能

Per-session AOP を用いたフレームワークの提案 プラグインをアスペクトとして記述 処理の流れ アスペクトを選択したユーザがリクエストを送信 セッションからユーザが選択したアスペクトを特定 そのアスペクトを weave し、Web アプリをロード Web アプリの実行 サーバー ユーザ ④ ユーザ A 本フレームワーク Web アプリ ① ③ ユーザ B weave アスペクト ② ユーザ A が選択したアスペクト ユーザ B が選択したアスペクト

Per-session AOP セッション毎にロード時に weave プラグインをアスペクトで記述 weave ユーザ毎に異なるクラスローダを利用 セッション毎に Web アプリを再ロード プラグインをアスペクトで記述 Web アプリ開発者は、プラグイン機構を実装しなくてよい Webアプリの任意の場所を自由にカスタマイズ可能にできる @Glue class Layout{ @Around(“{setTitle(`center`);}) Pointcut pc1 = Pcd.call(“setTitle(..)”); @Around(“{setColor(`black`);}) Pointcut pc2 = Pcd.call(“setColor(..)”);           : void setLayout(){ setTitle(DefaultSetting.LEFT); setColor(DefaultSetting.WHITE); : weave 6 登録済みアスペクト(GluonJ)

Web アプリのカスタマイズ可能部分をロード 効率化のための実装 クラスローダの親子関係を使用 Web アプリ内で使われているライブラリを全ユーザに共通の 親ローダを用いてロード クラスローダをキャッシュ アスペクトの変更がないユーザのクラスローダをキャッシュ 再ロードの必要がない ユーザ共通の クラスローダ Webアプリ内の ライブラリのみロード ユーザ A の クラスローダ ユーザ B の クラスローダ Web アプリのカスタマイズ可能部分をロード ...

実験 掲示板アプリへのリクエスト送信実験 実験環境 フレームワークの使用・不使用、効率化のための実装の有無にわけて測定 Client マシン 平均応答時間 100 ユーザ、100 スレッドで各ユーザが 10 リクエストを送信 処理の内訳 100 ユーザ、単一スレッドで各ユーザが 10 リクエストを送信 実験環境 Client マシン OS : Windows Vista CPU : Core 2 Duo 3.00 GHz Memory : 4 GB Server マシン OS : Linux 2.6.26 CPU : Xeon 2.83 GHz , 4 Cores

平均応答時間 効率化がない場合に比べて、7~28 倍の速度向上 エントリ 100 でも Tomcat のみの場合に比べ、 3~8 倍遅い 本フレームワークでは無効になる 19832 20000 共通の親ローダを使用 ms 素朴な実装 Tomcat のみ

処理の内訳(単一スレッド) クラスのロードがオーバーヘッドの主因 キャッシュエントリ数を増やすにつれてフレームワーク 内の処理時間が減少 クラスローダの作成やアスペクトの weave 時間が原因 400 共通の親ローダを使用 ms 369 素朴な実装 Tomcat のみ

関連研究 Per-session weaving[戸部、千葉 ‘08] Dynamic weaving 基本的なアイデアは公表済み 素朴な実装ではロードによるオーバーヘッドが大きい 本研究ではローダの親子関係とキャッシュを用いることで オーバーヘッドを削減 Dynamic weaving アスペクトによるカスタマイズが制限される PROSE[Popovici ら ‘02] イベント通知を用いた Dynamic weaving システム 時間的コストが大きい

まとめと今後の課題 まとめ 今後の課題 Per-session AOP を用いたフレームワーク 効率化のための実装 実験 プラグインをアスペクトで記述 効率化のための実装 クラスローダの親子関係を利用 キャッシュの使用 実験 平均応答時間、処理の内訳の測定 今後の課題 現状:プラグイン開発者は自由にアスペクトを記述可能 プラグイン開発者に対する信頼が必要 不正なアスペクトに対するセキュリティ対策 アドバイス実行中のみセキュリティマネージャーを切り替える