Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

2015年2月26日 dsthHUB 『DataSpiderインターナル プラガブルアーキテクチャで広がる可能性』

1,461 views

Published on

DataSpiderは「プラガブルアーキテクチャ」になっており、DataSpiderの様々な機能はDataSpiderServer起動後に読み込まれる、プラグインによるサービスとして提供されています。
このため、DataSpider本体を変更することなく、プラグイン(=機能)を追加・削除することができます。また、フレームワークに従ってプラグインを開発するだけで必要な機能を追加できるため、機能拡張性にも優れています。

Published in: Software
  • Be the first to comment

2015年2月26日 dsthHUB 『DataSpiderインターナル プラガブルアーキテクチャで広がる可能性』

  1. 1. DataSpiderインターナル "プラガブルアーキテクチャ"で 広がる可能性 株式会社アプレッソ 開発部 開発グループ リーダー 佐々木 健二 2015年2月26日 dstn HUB
  2. 2. 自己紹介 • 佐々木健二 • 開発部に所属 • 趣味 – ランニング • 毎年「Nippon IT チャリテイ駅伝」に出場
  3. 3. 754チーム中11位
  4. 4. 最近の業務 • サポート業務 • DataSpider保守開発 • DataSpider開発計画 • DataSpider SDK • 営業支援、OEM開発支援
  5. 5. アジェンダ • プラガブルアーキテクチャについて • プラガブルアーキテクチャの利点 • 拡張クラスローダ • プラグインの起動プロセス • SDKとは? • SDKの未来
  6. 6. プラガブルアーキテクチャについて
  7. 7. プラガブルアーキテクチャとは? • プラガブルとは… – プラグイン(=部品)が抜き差し可能なこと つまり、プラガブルアーキテクチャとは プラグインが抜き差し可能になっている アーキテクチャのこと
  8. 8. DataSpiderServerにおける プラグインとは? • マネージャやアダプタのこと – DataSpiderServerは、核となるカーネルと、 数多くのプラグイン(マネージャ、アダプタなど)で 構成されている
  9. 9. DataSpiderServerの アーキテクチャ図 Java VM カーネル WebContainer Trigger Manager DataProcessing Component Manager FileSystem Manager HTTPTrigger FileTrigger ScheduleTrigger FTPTrigger CSV Excel DBFS LFS ExtLFS DataProcessing Connection Manager Oracle DataSpiderServer マネージャ Mail Web User Manager Global Resources Adapters Converters FTP Users Groups アダプタ
  10. 10. カーネルとは? • DataSpiderServerの中核部分 – マネージャの起動/停止、登録/削除を行っている
  11. 11. マネージャとは? • DataSpiderServerの各種機能をサービスとして 提供しているモジュール – ファイルシステムマネージャ • DataSpiderファイルシステムへのアクセスを提供 – Webコンテナ • Webアクセスの機能を提供 – ユーザマネージャ • ユーザ、グループ管理の機能を提供 【例】
  12. 12. アダプタとは? • 各種データソースに接続してデータの入出力を 行うモジュール – Excelアダプタ • Excelファイルのデータを読み書きする – Oracleアダプタ • Oracleデータベースのデータを読み書きする – Mailアダプタ • メールの送受信を行う 【例】
  13. 13. プラグインの起動プロセス
  14. 14. プラグインの構造 • プラグインは宣言部分と機能の実装に 分離されている 宣言部分 (プロパティファイル) 機能の実装 (Java JAR) プラグインのロードクラスや、 種類、表示名、依存関係など を定義 フレームワークに従って、 プラグインで提供する機能を Javaで実装
  15. 15. プラグインの起動プロセス • DataSpiderServer起動時に、プラグインの ロード、初期化、サービスの開始を行う 1. プラグインのクラスをロード 2. プラグインを初期化 3. プラグインのサービスを開始
  16. 16. プラグインのロード 02/23 19:16:40|INFO|ds.boot|DataSpider Serverを起動します。 02/23 19:16:40|INFO|ds.boot|システムのロードを行います。システム名[DataSpider Server] 02/23 19:16:41|INFO|ds.boot|システムのロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュールのロードを行います。 02/23 19:16:41|INFO|ds.boot|モジュール[Web Container]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[Session Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[SystemModule Container]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[AccessLog Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[Database Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[File Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[License Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[Document Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[Application Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[Calendar Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[Callback Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[Command Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[Environment Manager]のロードに成功しました。 02/23 19:16:41|INFO|ds.boot|モジュール[User Manager]のロードに成功しました。 プラグインの宣言部分の 読み込み、クラスのロード、 マネージャの設定値の初期化 などを行う server.log
  17. 17. 02/23 19:16:42|INFO|ds.boot|モジュールの初期化を開始します。 02/23 19:16:42|INFO|ds.boot|モジュール[Server]を初期化しています。 02/23 19:16:42|INFO|ds.boot|モジュール[Server]の初期化に成功しました。 02/23 19:16:42|INFO|ds.boot|モジュール[Web Container]を初期化しています。 02/23 19:16:42|INFO|ds.boot|モジュール[Web Container]の初期化に成功しました。 02/23 19:16:42|INFO|ds.boot|モジュール[Session Manager]を初期化しています。 02/23 19:16:42|INFO|ds.boot|モジュール[Session Manager]の初期化に成功しました。 02/23 19:16:42|INFO|ds.boot|モジュール[SystemModule Container]を初期化しています。 02/23 19:16:42|INFO|ds.boot|モジュール[SystemModule Container]の初期化に成功しました。 02/23 19:16:42|INFO|ds.boot|モジュール[AccessLog Manager]を初期化しています。 02/23 19:16:42|INFO|ds.boot|モジュール[AccessLog Manager]の初期化に成功しました。 02/23 19:16:42|INFO|ds.boot|モジュール[Database Manager]を初期化しています。 02/23 19:16:42|INFO|ds.boot|モジュール[Database Manager]の初期化に成功しました。 02/23 19:16:42|INFO|ds.boot|モジュール[File Manager]を初期化しています。 02/23 19:16:42|WARN|ds.kernel.mgr.file|拡張ローカルファイルシステムは利用できません。 単純ローカルファイルシステムとしてロードされます。 02/23 19:16:42|WARN|ds.kernel.mgr.file|拡張ローカルファイルシステムは利用できません。 単純ローカルファイルシステムとしてロードされます。 プラグインの初期化 各プラグインで実装されている初期化 処理を呼び出す。 例えば、リポジトリDBの接続、ファイルシ ステムの初期化、アダプタのオペレーション、 グローバルリソースの定義の読み込みなど。 アダプタの場合、ライセンスチェックやライブ ラリのチェックなどが行われる。 server.log
  18. 18. 02/23 19:16:44|INFO|ds.boot|システムのサービスを開始しています。 02/23 19:16:44|INFO|ds.boot|モジュール[Web Container]のサービスを開始しています。 02/23 19:16:45|INFO|org.apache.catalina.startup.Embedded|Starting tomcat server 02/23 19:16:45|INFO|org.apache.catalina.core.StandardEngine|Starting Servlet Engine: Apache Tomcat/6.0.36 02/23 19:16:47|INFO|org.apache.coyote.http11.Http11Protocol|Coyote HTTP/1.1を http-7700 で初期化します 02/23 19:16:47|INFO|org.apache.coyote.http11.Http11Protocol|Coyote HTTP/1.1を http-7700 で起動します 02/23 19:16:47|INFO|ds.boot|モジュール[Web Container]のサービスを開始しました。 02/23 19:16:47|INFO|ds.boot|モジュール[Session Manager]のサービスを開始しています。 02/23 19:16:47|INFO|ds.boot|モジュール[Session Manager]のサービスを開始しました。 02/23 19:16:47|INFO|ds.boot|モジュール[SystemModule Container]のサービスを開始しています。 02/23 19:16:47|INFO|ds.boot|モジュール[Trigger Manager]のサービスを開始しています。 02/23 19:16:47|INFO|ds.boot|モジュール[Azure Service Bus Trigger]のサービスを開始しています。 02/23 19:16:47|INFO|ds.boot|モジュール[Azure Service Bus Trigger]のサービスを開始しました。 02/23 19:16:47|INFO|ds.boot|モジュール[Database Trigger]のサービスを開始しています。 02/23 19:16:47|INFO|ds.boot|モジュール[Database Trigger]のサービスを開始しました。 02/23 19:16:47|INFO|ds.boot|モジュール[File Trigger]のサービスを開始しています。 プラグインのサービス開始 各プラグインで実装されているサービスを 開始する。 例えば、Webコンテナの起動、トリガーの 開始、コンポーネントプールの初期化など。 server.log
  19. 19. プラガブルアーキテクチャの利点
  20. 20. 1. 拡張性 プラガブルアーキテクチャの 利点 2. 保守性
  21. 21. 拡張性 • DataSpider本体を変更することなく、 プラグインを追加・削除することができる – フレームワークに従ってプラグインを開発するだけで、 機能を拡張することができる – 不要なプラグイン(アダプタ)は削除することも可能
  22. 22. 保守性 • 他のプラグインに影響を及ぼすことなく、 プラグインを追加・変更・削除することができる – プラグインは個々に分離されているため、 影響範囲は対象のプラグインだけに局所化できる – プラグインごとにクラスローダを拡張しているため、 異なるバージョンのライブラリを複数同時にロード することができる 例えば、Oracleアダプタの場合、Oracleのバージョンごと にJDBCドライバ(ライブラリ)を同時に使用するこができる
  23. 23. 拡張クラスローダ
  24. 24. クラスローダとは? • JavaのクラスをJVMのメモリにロードする役割を 持つオブジェクト – クラスローダは通常複数あり、それらはツリー構造に なっている – クラスの探索には、まず親のクラスローダに移譲し、 そこで見つからなければ子自身で探索する
  25. 25. DataSpiderServerの クラスローダ • DataSpiderServerには大きく3つのカテゴリの クラスローダがある – システム共通のクラスローダ – マネージャのクラスローダ – アダプタのクラスローダ
  26. 26. クラスローダの役割 • システム共通のクラスローダ – DataSpiderServer全体のコンポーネントから 利用することが可能 • マネージャのクラスローダ – マネージャ共通で利用するクラスローダ、 各マネージャそれぞれが利用するクラスローダがある • アダプタのクラスローダ – アダプタ共通で利用するクラスローダ、 各アダプタそれぞれが利用するクラスローダがある
  27. 27. ModuleClassLoader クラスローダの関係 URLClassLoader DataSpiderURLClassLoader CommonClassLoader SharedClassLoader SharedClassLoader server system common kernel share modules module plugin data_processing share modules moduleModuleClassLoader ・ ・ ・ ・ ・ ・ ModuleClassLoader ModuleClassLoaderModuleClassLoaderModuleClassLoader ・ ・ ・ ・ ・ ・ マネージャのクラスローダ アダプタのクラスローダ システム共通のクラスローダ クラスローダ ディレクトリツリー
  28. 28. クラス探索の流れ (アダプタの場合) ModuleClassLoader URLClassLoader DataSpiderURLClassLoader CommonClassLoader SharedClassLoader SharedClassLoader server system common kernel share modules module plugin data_processing share modules moduleModuleClassLoader ・ ・ ・ ・ ・ ・ ModuleClassLoader ModuleClassLoaderModuleClassLoaderModuleClassLoader ・ ・ ・ ・ ・ ・ マネージャのクラスローダ アダプタのクラスローダ システム共通のクラスローダ クラスローダ ディレクトリツリー 1. システム共通のクラスローダでクラスを探索 2. アダプタ共通のクラスローダでクラスを探索 3 アダプタのクラスローダでクラスを探索
  29. 29. クラスローダを拡張する利点 • 実行するクラスが依存するクラスを選択的に ロードできる 例えば、Oracleアダプタの場合、Oracleのバージョンごとに JDBCドライバ(ライブラリ)を同時に使用するこができる 例えば、アダプタのクラスローダ場合、アダプタが必要とする アダプタフレームワークのクラスを選択してロードする • 異なるバージョンのライブラリを複数同時に ロードできる
  30. 30. クラスを共有するときの 注意点 • ライブラリの競合に気をつける – システム全体のクラスローダとアダプタのクラスローダの 両方に、異なるバージョンの同じライブラリがある場合 server system common plugin data_processing share modules module commonlib_v1.jar commonlib_v2.jar URLClassLoader DataSpiderURLClassLoader CommonClassLoader SharedClassLoader ModuleClassLoader アダプタのクラスローダ システム共通のクラスローダ (1) A.classを探索 (2) commonlib_v1.jarに含まれていたので、 A.classをロード (3) アダプタにあるcommonlib_v2.jarに 含まれるA.classはロードされない
  31. 31. SDKとは?
  32. 32. SDKとは • アダプタを開発するための開発者キット – プログラミング言語はJava – APIドキュメント(Javadoc) – 開発ガイドドキュメント – サンプルコード – ビルドファイル 【主な提供物】
  33. 33. SDKの使いどころ • 既存のJavaプログラムをDataSpiderから 実行したい • DataSpiderで対応していないデータソース、 プロトコル、サービスに接続したい • Mapperでは実現が難しい複雑なロジックを 実装したい
  34. 34. SDKの未来
  35. 35. SDKのロードマップ 4.0 4.1 4.2 • Java8対応 • プログラム埋め込みMapperロジック • トリガーSDK • SDKテストフレームワーク • テンプレートコード自動生成 • Eclipseプラグイン • アダプタ開発用サーバ
  36. 36. まとめ • DataSpiderServerは、拡張性、保守性に 優れたプラガブルアーキテクチャを採用している • クラスローダの拡張はプラガブルアーキテクチャを 実現する上で重要な技術 • 標準アダプタで実現が難しい場合は、 SDKで開発することが可能 • SDKの未来にご期待ください
  37. 37. ご清聴ありがとうございました。

×