Upload
dstn
View
389
Download
2
Embed Size (px)
Citation preview
株式会社アプレッソ開発部 第2グループリーダーThunderbusチーフディベロッパー
土岐 拓未
2015年4月17日 dstnHUB
2015年4月リリース予定
1. Thunderbusとは?2. DataSpider Thunderbusコネクタ3. Thunderbusインターナル
アジェンダ
1.Thunderbusとは?
Thunderbus開発のきっかけ
データ処理
コンピュータ-は「データ」を「処理」する
クラウド
オンプレミス
クラウド時代の2つのコンピューティング環境
• クラウド側にAPIが用意されていることが多い
• インターネット経由で利用しやすい• DataSpiderでも多数のアダプタがリリース
• オンプレミスのデータへの接続方式は一般には提供されていない
• VPNなどのインフラ設定が必要
• DataSpiderではMicrosoft AzureAppfabricトリガーのみ対応
マシンパワーを必要する処理はクラウド上の仮想マシンで
オンプレミスに置いておきたいデータはオンプレミスに置いたまま
もっと簡単にデータ連携ができる方法は?
2015年4月リリース予定
Thunderbusを使った連携
クラウド
オンプレミス
処理 Server
ファイル
クラウド上にThunderbusServerを稼働
Thunderbusを使った連携
クラウド
オンプレミス
処理 Server
Agentファイル
オンプレミスのマシンにThunderbus Agentをインストール
Thunderbusを使った連携
クラウド
オンプレミス
処理 Server
Agentファイル
クラウド上のThunderbusServerにHTTPS(WebSocket)で接続
Thunderbusを使った連携
クラウド
オンプレミス
処理 Server
Agentファイル
Thunderbus Server&Agent
が処理を中継してデータ連携を行う
クラウド
オンプレミス
処理 Server
Agentファイル
Thunderbus v1.0 WebDAVサーバーとしてオンプレミスのファイルを処理
デモ
クラウド
オンプレミス
処理 Server
Agent
Thunderbus 今後
データベース・Webサー
バーへのアクセスも可能に拡張予定
DB
Webサーバー
Thunderbusの特徴
• オンプレミスのデータにクラウドからセキュアにアクセス可能
• VPNなどのネットワーク設定不要。サーバーへのHTTPS通信のみで双方向処理を実現
• 簡単な設定でThunderbus Agentを追加可能。接続先の増加にもスピーディに対応
2.DataSpiderThunderbusコネクタ
×
クラウド・オンプレミスを意識しないシームレスなクラウド連携基盤
クラウド
オンプレミス
Server
Agent
DataSpider Thunderbusコネクタ
ファイル
簡単な設定でThunderbus
を利用したクラウド・ファイル連携が可能
DataSpider Thunderbusコネクタ
Thunderbus AgentのファイルをDataSpiderファイルシステム内にマウント
DataSpiderの多様なファイル連携機能をすべて使用可能
ファイルトリガー
CSVアダプタ
Excelアダプタ
固定長アダプタ
可変長アダプタ
ファイル操作アダプタ
デモ
ブラウザ
Server
Agent
デモ環境
Excelファイル
HTTPトリガーでExcel情報取得スクリプトを実行
取得したExcelの情報を返してHTML内に表示
利用例1 Excel-クラウド連携
各拠点で入力されたExcelファイルをThunderbus経由で自動でkintoneに登録
利用例2 店鋪 - 本部間データ連携
多店舗展開する企業の拠点データのデータバックアップ、データ同期、データ配布を自動化
利用例3 グローバル拠点間連携
ネットワーク敷設が困難なグローバルな各拠点間・本社システムのデータ連携を実現
×
ぜひお試しください!
3. Thunderbusインターナル
Thunderbus通信部分
Server
Agent
オンプレミス→クラウドへのHTTPS通信のみで、双方向通信を実現
WebSocket
WebSocket
• クライアント⇔サーバーの双方向通信を実現するためのプロトコル
• 通信の確立にHTTPを使用、その後独自プロトコルで双方向通信を行う
• もともとHTML5の一部として仕様策定が進められていたが、その後独立
• 2011年にRFC6455として標準仕様が確定• 近年のWebサービスにおいてサーバープッシュの通信を行うための標準技術となっている
WebSocket通信イメージ
GET
HTTP 101 Switching Protocol
WebSocket使用を宣言
する特殊なヘッダを付与してHTTPリクエスト プロトコル変更を通知す
るHTTPレスポンスを返す
WebSocket通信を開始
任意のタイミングでサーバー/クライアントどちら
からでもメッセージ送信が可能
WebSocket通信
JavaにおけるWebSocket
• 2013年6月にリリースされたJava EE7でJSR356としてWebSocketのJavaにおけるAPI標準仕様が策定–それまでは各Webコンテナごとの独自実装がされていた
• 現在では主要WebコンテナがJSR356に対応済– Tomat、jetty、GlassFish、WildFly、WebSphere
AS・・・
実装例
JSR 356のポイント
• アノテーションを使用した簡潔な記述
• Server、Client双方でほぼ同じ実装で記述可能
• 実装ライブラリを意識せずに実装が可能
→ライブラリの切り替えが容易(JDBC的なイメージ)
実装した感想
• 学習コストが低く、簡単な動作まではごく単純な実装で可能
• メソッドの呼び出し方法がさまざまな利用形態が想定されており、フレキシブルに使用できる
• プロキシ超えも可能(対応していないライブラリもあり)• 多数のメッセージ送信を行った際のパフォーマンスが良い
– 簡単に計測した結果、HTTPロングポーリング(Comet)の1.3倍~2倍– OracleのブログにはRESTと比べて数十倍の性能差という記述も
Oracle Web Logic Channel「Java EE 7新機能の目玉「WebSocket対応」、「バッチ処理」をアルン・グプタが解説──Java Day Tokyo 2013レポート 」より引用https://blogs.oracle.com/wlc/entry/javaee_c151
インターネットを利用した双方向通信はWebSocket!
結論
が、利用には注意点も
WebSocket通信イメージ(再掲)
GET
HTTP 101 Switching Protocol
任意のタイミングでサーバー/クライアントどちら
からでもメッセージ送信が可能
WebSocket通信
注意点1 リクエスト-レスポンス問題
GET
HTTP 101 Switching Protocol
WebSocket通信
この間にレスポンスを必要とする通信を行おうとしても、プロトコルでは規定されていない→単純なメッセージ送信のみ
リクエスト-レスポンス方式の通信を行おうとする
場合、レスポンスを保証するための独自実装で対応
Thunderbusでの対応
注意点2メタ情報問題
• 単純なテキスト/バイナリメッセージであるためHTTPのようなメタ情報を付与できない
パス情報
パラメータ
HTTPヘッダ
ボディ
メッセージボディ
HTTP WebSocket
独自フォーマットのメッセージ形式を策定して、メタ情報を同時に送信できるように対応
Thunderbusでの対応
2015年4月リリース予定
よろしくお願いします!