Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Node-REDを使用した クラウドネイティブアプリケーションの構築

Node-REDを使用した クラウドネイティブアプリケーションの構築

本資料は、2020年3月4日に開催したNode-RED UG勉強会での資料です。
この資料は、NodeConf EU 2019向けにNick O'Learyが作成したものをベースに日本語解説を加えたものになります。

Taiji HAGINO

March 04, 2020
Tweet

More Decks by Taiji HAGINO

Other Decks in Programming

Transcript

  1. 萩野 たいじ(Taiji Hagino) Sr. Developer Advocate IBM Champion Program Regional

    Director IBM ⾮常勤講師 筑波⼤学 Node-RED/Node.js, Swift, Hyperledger Fabric, Functions 共著︓はじめてのNode-RED、DevRel Q&A 連載︓⽉間I/O Node-RED実践プログラミング @taiponrock フォロー、友達リクエストはお気軽に︕ @taiponrock #nodered #noderedjp
  2. City Leader AKIRA ONISHI City Team TAIJI HAGINO KYOKO NISHITO

    AYA TOKURA NORIKO KATO Program Manager TOSHIO YAMASHITA Client Team YASUSHI OSONOI JUNKI SAGAWA IBM Developer Advocate Tokyo Team Tokyo Team is a part of Worldwide Developer Advocate Teams! https://developer.ibm.com/cities/tokyo-jp/
  3. 2013年、IBMのNick O’Leary、Dave CJを始めと するIBM Emerging Technologyチームによって オープンソースとして発明されました。 Node-REDの⽣い⽴ち 2013年︓ 2015年︓

    2016年︓ 2018年︓ Nick O’Leary、Dave CJを 始めとする、IBM Emerging Technology Servicesチー ムにより作られ、同年オープ ンソースとなる。 Raspberry Piのデフォルト イメージに追加される。 JS Foundationのfounding projectになる。 1,000,000インストールを記 録。 2019年︓ Node.js FoundationとJS Foundationが合併して設⽴ されたOpenJS Foundation 配下となる。
  4. ノード ⼀つ⼀つの箱には既に決 まった処理が実装されて いる フロー 使いたい処理のノードを並べ るだけ。 線でつないだ順番に処理が実 ⾏される。 ⾔ってみればワークフロー。

    公開ノード 主要なAPIの呼び出しなど、よく使われ る処理は、誰かが作って公開している事 が多い。 Watson API呼び出しのノードはIBMが開 発し公開している。 設定パネル 処理のパラメーターな ど、ノードに対する設 定を⾏う。 デプロイボタン ノードを配置、フロー作成、パラメーター変 更など、何か作成したり更新した場合に、こ のボタンを押すと反映される。 メニュー フローの削除やイン ポート・エクスポー トなどはこちらから。
  5. アーキテクチャ 14 Node-REDには2つの論理パーツがあります。 ランタイムはNode.jsアプリケーションです。デプロイ されたフローの実⾏を担当します。 エディターは、ユーザーがフローを編集できるWebアプ リケーションです。 メインのインストール可能なパッケージには、エディ ターを提供するWebサーバーとランタイムを管理するた めのREST管理APIの両⽅のコンポーネントが含まれてい

    ます。 内部的に、これらのコンポーネントは個別にインス トールし、既存のNode.jsアプリケーションに埋め込む ことができます。 node-red runtime editor HTTP Admin API @node-red/editor-api Client-side Editor @node-red/editor-client Flow Runtime @node-red/runtime Core Nodes @node-red/nodes Node Registry @node-red/registry Common Utils @node-red/util https://ibm.biz/NRWorkshop @taiponrock #nodered #noderedjp
  6. ノード 17 ノードは、フローの基本的な構成要素です。 フローの開始位置にあるノードは、着信のHTTPリクエスト、 タイマーイベント、ハードウェアIOイベントなどの外部イ ベントの発⽣を待機します。 次に、接続されているノードにメッセージを渡します。 ノードはこれらのメッセージを受信し、いくつかの作業・処 理を⾏ってから、それらをフローに渡します。 payload:

    “Jedi are totally amazing!” payload: “Jedi are totally amazing!” sentiment: { score: 4 } この例では、センチメント分析ノードがメッセージの 「payload」プロパティを調べ、センチメントを評価 し、その結果(スコア)をメッセージの新しいプロパ ティとして追加しています。 https://ibm.biz/NRWorkshop @taiponrock #nodered #noderedjp
  7. Part 1 21 https://ibm.biz/NRWorkshop Part 2 Part 3 Part 4

    Part 5 Getting Started with Node-RED Setting up your Cloud environment Deploy you application to the Cloud Connect your app to a cloud-hosted db Setup a deployment pipeline to Cloud
  8. Part 1 Getting Started with Node-RED 22 Get a Node-RED

    application running locally against a CouchDB database https://ibm.biz/NRWorkshop
  9. 24 https://ibm.biz/NRWorkshop Backbone、Ember、AngularJSなどに代 わり、 JavaScript Webアプリを構造化し て整理するためのMV*フレームワーク 現在⼈気のある多くのJavaScript MV*フ レームワークにおいて、MV*コンセプトを

    使⽤して実装されたのと同じTodoアプリ ケーションを提供するプロジェクト。 todoリストを管理するためのシンプルな Web API仕様を定義。 Todo-BackendプロジェクトはTodoMVCプ ロジェクトに触発され、⼀部のコード(具 体的にはtodoクライアントアプリ)が TodoMVCから直接借⽤された。
  10. Part 2 Setting up your Cloud environment 32 Create an

    IBM Cloud account and install the ibmcloud command-line tool https://ibm.biz/NRWorkshop
  11. Part 3 Deploy you application to the IBM Cloud 33

    Get your application running in the IBM Cloud https://ibm.biz/NRWorkshop
  12. 35 flow.json : the flow configuration flow_cred.json : credentials file

    package.json settings.js : runtime settings manifest.yaml : deployment manifest https://ibm.biz/NRWorkshop
  13. Part 4 Connect your application to a cloud-hosted db 37

    Create a cloud-hosted Cloudant instance and configure the application to use it with separate development and production databases https://ibm.biz/NRWorkshop
  14. Part 5 Setup a deployment pipeline to IBM Cloud 39

    Create a deployment pipeline use TravisCI to automatically deploy your application when pushing updates to a GitHub repository https://ibm.biz/NRWorkshop
  15. Thanks 41 github.com/taijihagino Taiji HAGINO Sr. Developer Advocate IBM Champion

    Program Regional Director IBM facebook.com/taiponrock linkedin.com/taiponrock @taiponrock
  16. ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独⾃の⾒解を反映したものです。それらは情報 提供の⽬的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助⾔を意図したものではなく、またそのような結果を⽣むも のでもありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努⼒しましたが、「現状のまま」提供され、明⽰または暗 ⽰にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使⽤によって、あるいはその他の関連によって、いかなる損害 が⽣じた場合も、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかな る保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使⽤を規定する適⽤ライセンス契約の条項を変更することを意図したもので もなく、またそのような結果を⽣むものでもありません。 本講演資料でIBM製品、プログラム、またはサービスに⾔及していても、IBMが営業活動を⾏っているすべての国でそれらが使⽤可能であることを暗⽰ するものではありません。本講演資料で⾔及している製品リリース⽇付や製品機能は、市場機会またはその他の要因に基づいてIBM独⾃の決定権をもっ

    ていつでも変更できるものとし、いかなる⽅法においても将来の製品または機能が使⽤可能になると確約することを意図したものではありません。本講 演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上⾼の向上、またはその他の結果が⽣じると述べる、または暗⽰すること を意図したものでも、またそのような結果を⽣むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使⽤し た測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラ ミングの量、⼊出⼒構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、 個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。 記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使⽤したか、またそれらのお客様が達成した結果の実例として⽰された ものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。 IBM、IBM ロゴ、ibm.com、[以下当該情報に関連し商標リスト中に掲載されたIBMブランドやIBMの製品名称があれば追加する]は、 世界の多くの国で 登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があ ります。現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。