Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Spring Cloud Data Flow で構成される IIJ IoTサービス

1.462 Aufrufe

Veröffentlicht am

JSUG勉強会 2018年その7 Spring Cloud Data FlowとSpring Bootで実装するエンタープライズ統合パターン
第2部 講演資料 https://jsug.doorkeeper.jp/events/84184

Veröffentlicht in: Ingenieurwesen
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

Spring Cloud Data Flow で構成される IIJ IoTサービス

  1. 1. 1© Internet Initiative Japan Inc. Spring Cloud Data Flow で構成される IIJ IoTサービス 株式会社インターネットイニシアティブ 2018年12月14日 クラウド本部 クラウドサービス2部 ビッグデータ技術課 近藤 憲児
  2. 2. 2 IIJ 0から1以上を生みだす 1992 イ ン タ ー ネ ッ ト 「 そ の も の 」 か ら 「 新 た な 使 い 方 」 ま で 私 た ち は 変 化 の 最 先 端 に 立 ち 、 提 案 し つ づ け て い ま す 。 IIJのコアは、インターネットを作り、支え、変えていく「技術者」です。 ネットワーク事業 インテグ レーション事業 現在 ビジネス活用のため、インターネット 商用接続サービスを開始。 IIJのはじまり クラウド事業 セキュリティ事業 モバイル事業 ネットワーク事業 国内初 1993 インターネット 接続サービス開始 研究目的 ビジネス活用 会社、家庭、学校などを「つなぐ」事業です。 ITシステムとネットワークの安全を「守る」事業です。 お客様の要望を、ITで「作って叶える」事業です。 例えばスマホ、IoTなど「無線でつなぐ」事業です。 ネットワーク経由で「システムの機能を貸す」事業です。
  3. 3. 3 自己紹介(IIJ) • 近藤 憲児 • IIJ IoTサービスの開発・運用に従事
  4. 4. 4 お話すること • IIJ IoTサービス 概要 • 以前のアーキテクチャと課題 • Spring Cloud Data Flow の導入による改善アプローチ • スケーラビリティについて • デモ Enterprise Integration Patterns がいかにして具現化されうるのかを、 Spring Cloud Data Flow を本番環境へ導入した知見を基にご紹介
  5. 5. 5 IIJ IoTサービス 概要
  6. 6. 6 IIJ IoTサービスの概要 デバイスゲートウェイ機器 センサー(温湿度・振動・位置・電力等) ネットワーク(モバイル・有線・無線・LPWA) デバイス管理/データ収集・蓄積 アプリケーション/ミドルウェア/データベース データ分析/特定業務開発 データ分析/特定業務開発 センサー(温湿度・振動・位置・電力等) IIJ IoTサービス アプリケーション/ミドルウェア/データベース IoTシステムの「つなぐ」部分をもっと楽に。
  7. 7. 7 IIJ IoTサービスの機能 データハブデータストレージ デバイスモニタリング プライベート コネクタ デバイスコントロール クラウドアダプタ プライベート モバイルゲートウェイ IoT専用SIM • モバイルアクセス
  8. 8. 8 IIJ IoTサービスの機能 データハブデータストレージ デバイスモニタリング プライベート コネクタ デバイスコントロール クラウドアダプタ プライベート モバイルゲートウェイ IoT専用SIM • モバイルアクセス Today’s topics!
  9. 9. 9 IIJ IoTサービスの機能 データハブデータストレージ デバイスモニタリング プライベート コネクタ デバイスコントロール クラウドアダプタ プライベート モバイルゲートウェイ IoT専用SIM • モバイルアクセス データを蓄積する低コストストレージを提供 センサーデータ送信 データストレージ HTTP/TCP/UDP Amazon S3互換API HTTPS ブラウザアクセス ファイルアップロード/ ダウンロード HTTPS
  10. 10. 10 IIJ IoTサービスの機能 データハブデータストレージ デバイスモニタリング プライベート コネクタ デバイスコントロール クラウドアダプタ プライベート モバイルゲートウェイ IoT専用SIM • モバイルアクセス センサーデータの外部システムへの転送 センサーデータ送信 データハブ お客様システムA お客様システムB お客様システムC センサーデータ転送 HTTP/TCP/UDP HTTP/HTTPS インターネット
  11. 11. 11 以前のアーキテクチャと課題
  12. 12. 12 Spark App (データストレージ) 以前のアーキテクチャ Gateway Kafka Spark App (データハブ) Redis 顧客サーバ Object Storage HTTP-Client (データを顧客サーバへ転送する) Redis-Client (転送結果をRedisへ格納する) Aggregator (複数のデータを一つに束ねる) Uploader (束ねたデータをファイルにしてアップロード) Redis-Client (アップロードした結果をRedisへ格納する)
  13. 13. 13 以前のアーキテクチャと課題 処理をstreamingにしたい  マイクロバッチをやめたい 機能拡張性・保守性をあげたい  処理を分けたい スケールが難しい  スケールアップしか方法がない
  14. 14. 14 Spring Cloud Data Flow の導入による 改善アプローチ
  15. 15. 15 Spring Cloud Stream SinkSource Processor Stream Spring Cloud Stream の基本的な概念 • Message を単位とした、Event-Driven な処理を実現することに特化したフ レームワーク • Source, Processor, Sink はそれぞれ Spring Cloud Stream で実装したアプリ ケーション(あるいはtopic)に相当する • Binder は、Kafka や RabbitMQ といった メッセージングシステム であり、 各コンポーネントは Binder を介して Message のやりとりを行う • Binder は EIP の “Channel” に相当 • Source, Processor, Sink を Binder で結合したものを Stream と呼ぶ Binder Binder
  16. 16. 16 Spring Cloud Stream Gateway HTTP-Client (データを顧客サーバへ転送する) Redis-Client (転送結果をRedisへ格納する) Gateway Server Service Activator Service Activator IoTデータ レスポンス データ Message Message Channel Channel HTTP- Client Redis- Client (Kafka topic) Source Processor Sink データハブ EIP Spring Cloud Stream Binder Binder
  17. 17. 17 Spring Cloud Stream Gateway Uploader (束ねたデータをファイル にしてアップロード) Redis-Client (アップロード結果をRedisへ 格納する) Gateway Server Aggregator Service Activator IoTデータ レスポンス データ Message Message Channel データストレージ EIP Aggregator (複数のデータを一つに 束ねる) Service Activator Channel Aggregator, Uploader Redis- Client (Kafka topic) Source Processor Sink Spring Cloud Stream Binder Binder
  18. 18. 18 Spring Cloud Stream Gateway Kafka Redis 顧客サーバ Object Storage Aggregator, Uploader Redis-Client HTTP-Client Redis-Client Streaming処理を 実現
  19. 19. 19 Spring Cloud Stream の機能拡張性 Question: 「データハブで、一つのデータに対して複数の顧客サーバへの転送が行 えるよう、機能拡張を行いたい。どのように設計する?」 Answer: 一つのデータをクローンするProcessorアプリケーションを増やす。 Pseudo- Splitter Redis- Client (Kafka topic) Source Processor Sink HTTP- Client Processor HTTP- Client Redis- Client (Kafka topic) Source Processor Sink
  20. 20. 20 Spring Cloud Stream の機能拡張性 Pseudo- Splitter Redis- Client (Kafka topic) Source Processor Sink データハブ(機能拡張) Gateway Server Service Activator Service Activator Message Channel Message Channel (Pseudo-)Splitter Channel Message Gateway HTTP-Client (データを顧客サーバ へ転送する) Redis-Client (転送結果をRedisへ 格納する) IoTデータ レスポンスデータ HTTP- Client Processor Duplicator (データを複製する) 複製されたIoT データ Spring Cloud Stream EIP
  21. 21. 21 Spring Cloud Stream の機能拡張性 Gateway Kafka Redis 顧客サーバ Object Storage Aggregator, Uploader Redis-Client Pseudo- Splitter HTTP-Client Redis-Client コンポーネントを増 やすだけで機能拡張 を実現
  22. 22. 22 Spring Cloud Data Flow Question: 「Spring Cloud Stream で実装したアプリケーションをどこのサーバ で動かす?アプリケーションの可用性をどう担保する?Stream の定義 をどこで管理する?実装したjarはどこに持っておく?」 などなど … このような microservice 特有の複雑さを、どのように管理する? Answer: Spring Cloud Data Flowを導入する。
  23. 23. 23 Spring Cloud Data Flow Spring Cloud Data Flow • Spring Cloud Stream や Spring Task で実装されたアプリケーションのコン ポーネント間のパイプライン(Stream)の定義や、アプリケーションのデプロ イ/アンデプロイ実行、デプロイ状態の管理などを提供する マネジメント ツール • GUI, CLI 完備 • コンポーネント間のパイプラインをDSLで表現できる • Binder … メッセージングミドルウェア • Kafka, RabbitMQ, Azure EventHubs, Amazon Kinesis Stream … • Deployer … アプリケーションのランタイム環境 • local, Apache YARN(EOL), Apache Mesos, Kubernetes, Cloud Foundry :sourceTopic > pseudo-splitter | http-client > redis-client
  24. 24. 24 Spring Cloud Data Flow Kafka Aggregator, Uploader Redis- Client Pseudo- Splitter HTTP-Client Redis-Client Hadoop Cluster (YARN, HDFS) SCDF server streamのパイプライン やデプロイ状態を管理 Localに配置した jarをデプロイ アプリケーションの冗 長性はYARN(とHDFS) が管理
  25. 25. 25 Spring Cloud Config, Spring Cloud Bus, Spring Cloud Netflix Question: 「Instanceで保持したDB情報の更新をどのように行う?」 「Configのランタイムアップデートをどのように実現する?」 Answer: Spring Cloud Config, Spring Cloud Netflix (Eureka), Spring Cloud Bus を 利用する。 • Spring Cloud Config • 「アプリケーション毎に分散するapplication.yml の、中央集権管理機能を提供するもの」 • Eureka • 「DNSのようなもの」 • Sring Cloud Bus • 「アプリケーションの状態の変化を、他のアプリケーションに伝播させて伝える仕組みを 提供するもの」
  26. 26. 26 Spring Cloud Config, Spring Cloud Bus, Spring Cloud Netflix Edge ServerEvent (ex. REST API) Eureka Server http-client Kafka http://192.168.10.13:21234/management/bus/refresh aggregator redis-client http-client http-client RDB ConfigServer (Spring Cloud Bus) http-client http-client http-client “Who is http-client ?” “192.168.10.13:21234” Register “http-client is 192.168.10.13:21234” Request Resources refresh refresh refresh
  27. 27. 27 スケーラビリティについて
  28. 28. 28 Spring Cloud Data Flow でのスケールアウト Question: 「どのようにスケールさせるのか?」 Answer: Spring Cloud Data Flow で Stream をデプロイする時に、 起動するInstance数を指定する。 stream deploy --name datahub-stream --properties "deployer.http-client.count=3" 例: データハブのHTTP-Clientを3つ立ち上げたい場合
  29. 29. 29 Kafka Kafka Cluster App App App App App App Producer Broker Consumer SubscribePublish http://kafka.apache.org/ Topic
  30. 30. 30 ConsumerClient ConsumerClient PartitionとConsumerClientの関係 Topic Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 Data 8 Data 9 Partitions = 3, ConsumerClient = 3 Topic Partitions = 3, ConsumerClient = 1 Partition-0 Partition-1 Partition-2 Partition-0 Partition-1 Partition-2 Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 Data 8 Data 9 ConsumerClient (ex. Processor App) ConsumerClient Throughput が3倍に
  31. 31. 31 PartitionとConsumerClientの関係 Partition数 : Consumer数 = 1 : 1 が最適? →必ずしもそうではない Partition数をわずかに大きくするとパフォーマンスが上がった さらにPartition数を大きくすると、パフォーマンスは高止まりした
  32. 32. 32 PartitionとConsumerClientの関係 • 𝑝: Partition数 • 𝑐: ConsumerClient数 • 𝑡: Throughput(無単位) • 目的関数を 𝑦 𝑝, 𝑐, 𝑤 = 𝑤0 𝑝2 + 𝑤1 𝑐2 + 𝑤2 𝑝𝑐 + 𝑤3 𝑝 + 𝑤4 𝑐 として、𝐸 𝑤 = 𝑖(𝑦(𝑝𝑖, 𝑐𝑖, 𝑤) − 𝑡𝑖)2 が最小となる 𝑤 = 𝑤0 𝑤1 𝑤2 𝑤3 𝑤4 𝑇 を求める。 ∴ 𝑤 = −𝟏. 𝟏𝟑 − 𝟐. 𝟐𝟑 𝟑. 𝟏𝟏 𝟑𝟔. 𝟓𝟗 𝟏𝟖𝟐. 𝟗𝟖 𝑇 . • 𝛻𝑦 𝑝, 𝑐 | 𝑝=0,𝑐=0 = 36.59, 182.98 ∴ 𝑝 𝑐 = 182 36 ~ 5 1 → IoTサービスでは、およそ Partition数 : ConsumerClient数 = 5 : 1 が最適な比率であった。 最適な Partition数 と ConsumerClient数 の比率は何か? → Throughput が Partition数 と ConsumerClient数 をパラメータに持つ放物面 で近似できると仮定して、回帰曲面を出す。その後、求めた曲面の勾配ベクト ルの内、(p, c) = (0,0) 地点での pとcの比を求める。
  33. 33. 33 デモ
  34. 34. 34 IIJ-BKLT999-0001

×