Save 37% off PRO during our Black Friday Sale! »

Multi-Tenant Erlang Distributionを目指して - ElixirConf US 2021参加報告 / Toward The Multi-Tenant Erlang Distribution

Multi-Tenant Erlang Distributionを目指して - ElixirConf US 2021参加報告 / Toward The Multi-Tenant Erlang Distribution

EDI#8+kokura.ex#47:ElixirConfUS凱旋会
https://fukuokaex.connpass.com/event/225991/

23f4d5d797a91b6d17d627b90b5a42d9?s=128

Kentaro Kuribayashi

October 21, 2021
Tweet

Transcript

  1. Multi-Tenant Erlang Distributionを目指して ElixirConf US 2021参加報告 栗林 健太郎 EDI#8+kokura.ex#47:ElixirConfUS凱旋会(2021年10月21日)

  2. 栗林 健太郎(あんちぽ) • ソフトウェアエンジニア • GMOペパボ株式会社取締役 CTO • JAIST博士前期課程の学生 @kentaro

    @kentaro 自己紹介
  3. 目次 1. ElixirConf US 2021で話したこと 2. 参加に至った経緯と感想 3. 今後の展望

  4. 1. ElixirConf US 2021で話したこと

  5. Elixir is eating the IoT world! 私のElixirとIoTに関する活動は、高瀬先 生(@takasehideki)の描いたビジョン への、愚直な解釈に基づく。 出所:

    高瀬英希「ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク」 p.21 https://www.slideshare.net/takasehideki/elixiriotcoolnerves-236780506/21 1. デバイス・エッジ・クラウドの各 レイヤをElixirで実装すること 2. それに加えて、各レイヤがそれぞ れ分散Erlangネットワーク上のノー ドとして動作すること
  6. 複雑なIoTシステムの課題 昨今のIoTシステムは、エッジコンピューティングを取り入れ、 1. デバイス層 2. エッジ層 3. クラウド層 の3層構造をとる(右図)。一方で、3層構造により以下の課題が発生する。 1.

    プログラミング言語や通信プロトコルの選択肢が多様である 2. データの取得方式が多様かつデータフローが双方向性を持つ 3. IoTシステムの全体を通じたデータフローの見通しが悪くなる 出所: Kentaro Kuribayashi "Pratipad: A Declarative Framework for Describing Bidirectional Dataflow in IoT Systems with Elixir" https://speakerdeck.com/kentaro/pratipad-a-declarative-framework-for-describing-bidirectional-dataflow-in-iot-systems-with-elixir
  7. そこでPratipadですよ Pratipadとは、 • 前述の3つの課題に対して解決を与 えるためのもの • IoTシステムの双方向データフロー を、宣言的に記述できるフレーム ワーク 注釈:

    pratipadという単語は、サンスクリット語 で「道」という意味。 CIte: kentaro/pratipad: “A Declarative Framework for Describing Bidirectional Dataflow” https://github.com/kentaro/pratipad 出所: Kentaro Kuribayashi "Pratipad" https://github.com/kentaro/pratipad
  8. Pratipadを用いて構築したIoTシステムの例 Room 1 Room 2 Local Area Network Edge Layer

    Device Layer Device Layer My House Wide Area Network Sensing: - CO2 concentration - air pressure - humidity Cloud Layer - visualize - analyze - send back actuation order External API - provide additional metadata (e.g. precipitation) Users - monitor situation - do some actions (e.g. open the window) mTLS connection - aggregate - transform - add more info ・・・ Running on Elixir LED blinks when the cloud system sends a notification to prompt uses to open the window. 出所: Kentaro Kuribayashi "Pratipad: A Declarative Framework for Describing Bidirectional Dataflow in IoT Systems with Elixir" https://speakerdeck.com/kentaro/pratipad-a-declarative-framework-for-describing-bidirectional-dataflow-in-iot-systems-with-elixir
  9. Elixirと分散ErlangネットワークでIoTシステムを構築 Pratipadと他のElixir製フレームワークの組み合わせにより、IoTシステムの3層を 同一の言語とプロトコルを用いて統合的かつ安全に構築できる。 1. 3層のいずれもElixirで構築 ◦ デバイス層: Nerves + Pratipad.Client

    ◦ エッジ層: Pratipad ◦ クラウド層: Phoenix + Pratipad.Client 2. 各層はセキュアな分散Erlangネットワークで接続 ◦ 全ての通信はTLSを利用 ◦ 全てのノードがTLSサーバでありクライアント ◦ クライアント証明書による認証 出所: Kentaro Kuribayashi "Pratipad: A Declarative Framework for Describing Bidirectional Dataflow in IoT Systems with Elixir" https://speakerdeck.com/kentaro/pratipad-a-declarative-framework-for-describing-bidirectional-dataflow-in-iot-systems-with-elixir
  10. Pratipadは双方向かつ多様なデータ取得方式に対応 Push、Pull、Demandの3つのデータ取得方式と双方向データフローを実現する。 Push Pull Demand 出所: Kentaro Kuribayashi "Pratipad: A

    Declarative Framework for Describing Bidirectional Dataflow in IoT Systems with Elixir" https://speakerdeck.com/kentaro/pratipad-a-declarative-framework-for-describing-bidirectional-dataflow-in-iot-systems-with-elixir
  11. 宣言的なデータフロー記述 Pratipadは右図のようなデータフローと 処理の記述方法を提供する。 • データフロー自体を、一つのファ イル内に宣言的に記述できる • データへの処理を、さまざまな形 で記述できる(逐次適用、並行適 用等)

    • データに対する処理内容の記述は 、データフローとは別個に、Elixir モジュールとして記述する Push <~> P1 <~> P2 <~> P3 <~> Output defmodule P1 do alias Pratipad.Processor use Processor @impl GenServer def init(initial_state) do %{:ok, initial_state) end @impl Processor def process(message, state) do # do something with the message end end Dataflow Processor 出所: Kentaro Kuribayashi "Pratipad: A Declarative Framework for Describing Bidirectional Dataflow in IoT Systems with Elixir" https://speakerdeck.com/kentaro/pratipad-a-declarative-framework-for-describing-bidirectional-dataflow-in-iot-systems-with-elixir
  12. 2. 参加に至った経緯と感想

  13. ElixirConf US 2021で発表に至った経緯 1. 2020年4月、北陸先端科学技術大学院大学・博士前期課程に入学 2. 2020年11月、第7回WebSystemArchitecture研究会でElixir/Nervesに関する発 表があったのがきっかけで、Elixir/Nervesに興味を抱く 3. 2020年12月の#NervesJP

    Advent Calendar 2020で記事を3本投稿 4. 20201年11月-2021年1月にかけて、K-Ruby #25、NervesJP #14, 15で Elixir/Nervesについて発表 5. 2021年3月、情報処理学会第207回SE研究発表会で、IoTアプリケーションの 開発効率向上に関する手法の提案と実装について発表 6. 2021年7月、ElixirConf US 2021へ応募、採択決定 7. 2021年9月、IOTS2021へ投稿したPratipadに関する論文が採録決定 8. 2021年10月、ElixirConf US 2021で発表 出所: 栗林健太郎「ElixirConf US 2021登壇報告: IoTシステムの開発における課題の解決を目論むElixir製のフレームワークPratipadについて発表しました - ペパボテ ックブログ」 https://tech.pepabo.com/2021/10/18/elixir-conf-us-2021-antipop/
  14. 第7回WebSystemArchitecture研究会でのNervesに関する発表 出所: 第7回WebSystemArchitecture研究会(オンライン) - connpass https://wsa.connpass.com/event/187128/

  15. #NervesJP Advent Calendar 2020で書いた記事 出所: #NervesJP Advent Calendar 2020 -

    Qiita https://qiita.com/advent-calendar/2020/nervesjp
  16. Elixir/Nerves関連で実施したライトニングトーク 出所: 栗林健太郎 https://speakerdeck.com/kentaro

  17. 情報処理学会第207回SE研究発表会へ投稿した研究報告 出所: 栗林健太郎「情報処理学会の第207回SE研究発表会で、IoTアプリケーションの開発効率向上に関する手法の提案と実装について発表しました - ペパボ研究所 ブログ」 https://rand.pepabo.com/article/2021/03/04/ipsj-sigse-207/

  18. Pratipadに関する発表・論文 • 修論の研究テーマとしての取り組んでいる内容 • IOTS2021という、情報処理学会のインターネットと運用技術研究会主催の シンポジウムに論文が採録されることとなった ◦ 2021年11月25、26日に発表 ◦ その後、論文・発表資料を公開予定

    • 論文では技術的詳細については書いていないので、今回のElixirConf US 2021 ではそちらを中心に話した • もろもろブラッシュアップして修論へしていく予定
  19. 参加してみての感想 • CFPへの応募について検討会をされていたkokura.exのみなさまにきっかけを いただき、参加することができました。感謝! • 今回は、オフラインとオンラインのハイブリッド開催だったこともあって、 スピーカー数は去年の2倍(60名以上) • そのため、採択率は相対的にだいぶ高かったように思われる •

    チャレンジすれば十分つかめるチャンスなので、ぜひElixirConf USに限らず 、現在CFPが出ているElixirConf EUなどに出してみましょう! • 個人的な感想としては、まあ英語が……(略) 出所: Call for Proposals for ElixirConf EU 2022 open till Dec 9, · Eventil https://eventil.com/events/elixirconf-eu-2022/cfp
  20. 3. 今後の展望

  21. Multi-Tenant Erlang Distributionとは 今回のトークの方針にそってIoTシステムプラットフォームを作るとしたら、必要 になってくること。 IoTシステム プラットフォーム Pratipad Pratipad Pratipad

    IoTデバイス群 テナントごとの分散Erlangネットワーク
  22. Multi-Tenant Erlang Distributionの課題 マルチテナント=集約によるリソース効率性を活かしつつ、既存の分散Erlangネ ットワークをそのまま用いるだけでは実現できない、以下の課題を解決する必要 がある。 • テナントごとのネットワークの権限分離 • 既存の分散Erlangプロトコルの拡張

    • TLSクライアント証明書の効率的な配布と管理 また、それらが実現された上で、マルチテナント環境下でのIoTデバイスのOTA など、プラットフォームとして必要な機能の提供も課題となる。 (直接は関係しないが、Neos VRのようなVRプラットフォームを分散Erlangネットワークでつなぎたいという夢も)
  23. 終わり