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

IBM Developer Dojo Serverless/FaaS 20200722

IBM Developer Dojo Serverless/FaaS 20200722

本資料は、2020年7月22日開催のIBM Developer Dojo Serverless/FaaS編向けのものです。

Taiji HAGINO

July 22, 2020
Tweet

More Decks by Taiji HAGINO

Other Decks in Technology

Transcript

  1. Taiji Hagino IBM Developer Advocacy Tokyo Team Sr. Developer Advocate

    IBM Champion Regional Director @taiponrock IBM Developer Dojo Serverless/IBM Cloud Functions ⼊⾨編
  2. Taiji (Eddie) Hagino Sr. Developer Advocate IBM Champion Program Regional

    Director IBM Lecturer Tsukuba University @taiponrock Please follow me! Node-RED/Node.js, Swift, Hyperledger Fabric, Functions Books: Node-RED beginner book, Node-RED Experience Handbook, DevRel Q&A Articles: I/O Magazine (Node-RED programming)
  3. Tokyo Leader Akira ONISHI IBM Developer Advocate Tokyo Team Tokyo

    Team is a part of Worldwide Developer Advocate Teams! https://developer.ibm.com/cities/tokyo-jp/ Developer Advocates Noriko KATO Developer Advocates Kyoko NISHITO Developer Advocate Yasushi OSONOI Developer Advocates Aya TOKURA Developer Advocates Taiji HAGINO
  4. 学習の⽬的とゴール ⽬的 Serverless/FaaSの概要について理解し、 IBM Cloud Functionsを使えるようになる ゴール IBM Cloud Functionsによるアプリケー

    ションの開発⽅法を理解する このコースを学ぶ⽅の想定スキル Webアプリケーション開発経験者の⽅ サーバーレス初⼼者・未経験の⽅
  5. Create IBM Cloud Account -> 無料 -> クレジットカード不要 -> だれでも使える

    -> いつまででも使える -> すぐに使える こちらのURLからアクセスをお願いします。 https://ibm.biz/BdqpW3
  6. 新しい取り組み“バッジ取得プログラム”のご案内 10 IBM Cloud & AI develop Basic Online Developer

    Dojo ” IBM Cloud & AI develop Basic Online Developer badge“について - 2020年6⽉1⽇より開始のIBM Developer Dojo 12回シリーズと同様の内容のIBM Developer Dojoのクラスが対象 https://www.ibm.com/jp-ja/partnerworld/events/developer-dojo - スキルアップのため全クラスの受講をお奨めします。 - 12回のクラスのうちPAYGアカウントまたはサブスクリプションが必要としない8つのクラスの課題を実施 - 8クラスのうち5クラスの課題について指定された結果を⾃分のアカウントが⾒えるようにスクリーンショットを撮影 - 5クラス分の課題のスクリーンショットをPDFにして以下の宛先に送付 - 提出した課題が承認されるとAcclaimからバッジが発⾏されます。 ※バッジ発⾏のためにこれ以外の処理が発⽣する場合、別途ご連絡させていただきます 2020年6⽉1⽇ お問い合わせは、Online Developer Dojo バッジ事務局 (ビジネス・パートナープログラム ヘルプデスク [email protected]
  7. 13 13 サーバーレスの定義 サーバーレス・コンピューティ ング(Serverless computing)と は、クラウド・プロバイダーが アプリケーションに必要なマシ ン・リソースの割り当てを動的 に管理し、事前に購⼊されたこ

    とに基づく請求ではなく、各ア プリケーション要求を満たすた めに使⽤される個々のリソース 量に基づいた請求を⾏うような クラウド・コンピューティング の実⾏モデルである。 出典: フリー百科事典『ウィキペディア(Wikipedia)』
  8. 14 14 Networking Storage Servers Virtualization O/S Middleware Runtime Data

    Applications Networking Storage Servers Virtualization O/S Middleware Runtime Data Applications Networking Storage Servers Virtualization O/S Middleware Runtime Data Applications ベンダーが提供 ユーザーが準備 IaaS PaaS (Serverless含む) SaaS クラウドサービスの種類
  9. 15 15 PaaS FaaS (Serverless) PaaSとFaaS(サーバーレス)の違い Middleware Runtime(サービス作成) Data Applications

    Runtime(サービス提供) ベンダーが提供 ユーザーが準備 Middleware Runtime(関与不要) Data Applications
  10. 18 Hardware Firmware OS プログラム⾔語毎のruntime (virtual machine) プログラム DBなどの ミドルウェア

    CPU メモリ ストレージ ネットワークI/O OS ランタイム可動時間 (使⽤メモリ量) 従量課⾦要素 サーバーリソース →
  11. 20 Hardware Firmware OS プログラム⾔語毎のruntime (virtual machine) プログラム DBなどの ミドルウェア

    アプリが呼び出された回数 実⾏している時間 従量課⾦要素 サーバーリソースのことは考えなくて良い=サーバーレス
  12. 21 21 FaaS(サーバーレス)の特徴 ü コードを書き、それを連携させるだけで⼀連の 処理を実⾏できる ü 実⾏に必要なサーバーはクラウドサービスプロ バイダー側で⾃動的に割り当てる。またスケー ルアップ(アウト)も必要に応じて⾃動的に対

    処する ü 実⾏が終了すると⾃動的にインスタンスが消去 される。従って、課⾦はコードが動いていた時 間だけになる ü さまざまなサービスがコードを起動するトリ ガーとして⽤意されている。それを利⽤して定 期的、あるいは何らかのイベントを起点にサー ビスを起動できる
  13. 25 © 2018 IBM Corporation IBM Cloud FunctionsはIBMが提供するFaaS (Serverless)のサービスです。 IBM

    Cloudの特徴の⼀つとして、できるだけオープンな技術で基盤を作り、ユーザーがベンダーロック インされない環境として利⽤できるようにしている点があります。 IBM Cloud Functionsではオープンソースの「Apache OpenWhisk」(https://openwhisk.apache.org/) を使っています。よって、Apache OpenWhiskと同じ操作で⾃分が所望するサービスを作成できます。 IBM Cloud Functionsの概要
  14. 26 IBM Cloud www getXXXinfo Create Action • Action(Function)を直接クラウド上に作成するだけ •

    実⾏環境とか気にしなくてOK makeXXXfile convertXXXdata PHP, Node.js, Python, Swift Call Action IBM Cloud Functionsのイメージ
  15. Action/アクション アクションは、1 つの特定のタスクを実⾏する 1 ⽚のコードです。 アクション は、任意の⾔語で書くことができます。例えば、JavaScript や Swift コードの

    ⼩さなスニペットにしたり、Docker コンテナーに組み込まれたカスタム・バイ ナリー・コードにしたりできます。 ユーザーは、ソース・コードまたは Docker イメージとして Cloud Functions にアクションを提供します。 アクションは、Cloud Functions API、CLI、または iOS SDK を使⽤して直接呼 び出されたときに処理を実⾏します。 また、アクションは、IBM Cloud サービ スおよびサード・パーティー・サービスからのイベントに、トリガーを使⽤し て⾃動的に応答することもできます。
  16. Package/パッケージ サービスおよびイベント・プロバイダーとの統合をパッケージで追加すること ができます。 パッケージは、フィードおよびアクションのバンドルです。 フィードは、トリガー・イベントを起動するように外部イベント・ソースを構 成するコードです。 例えば、IBM Cloudant 変更フィードで作成されるトリ ガーは、IBM

    Cloudant データベースで⽂書が変更されるか追加されるたびにそ のトリガーを起動するようにサービスを構成します。 パッケージ内のアクショ ンは、再使⽤可能なロジックを表します。サービス・プロバイダーがアクショ ンを利⽤可能にすることによって、開発者はそのサービスをイベント・ソース として使⽤し、そのサービスの API を呼び出すことができます。 既存のパッケージ・カタログを利⽤すると、素早く簡単に、有⽤な 機能でアプリケーションを強化したり、エコシステム内の外部サー ビスにアクセスしたりできます。 Cloud Functions パッケージ対応の 外部サービスの例として、IBM Cloudant、The Weather Company、 Slack、GitHub があります。
  17. IBM Cloud Functions は OpenWhisk に基づいています。 OpenWhisk は、NGINX、Kafka 、Docker、CouchDB などのコ

    ンポーネントを組み合わせて、 サーバーレスでイベント・ベー スのプログラミング・サービス を形成するオープン・ソース・ プロジェクトです。 IBM Cloud Functions のバックエンドの仕組み
  18. 62 © 2018 IBM Corporation FaaS(サーバーレス)を起動するためのトリガー IBM Cloud Functionsは、イベントドリブン(逐次駆動)で ファンクションを起動できます。

    起動のための「トリガー」は設定可能です。 例えば、ある特定の時間でデータベースの「Cloudant」が 更新されたときをトリガーとして指定できます。 まだ、設定できるトリガーはあまり多くありませんが、今 後増えていくでしょう。 ▪アクション同⼠をつなげて⼀つのAPIとして提供することも可能
  19. 67 © 2018 IBM Corporation Functionsでアプリを作成 IBM Cloud Functionsでのサーバーレスアプリの開発は、⼆つのステップに分かれます。 (1)アクションの作成

    (2)トリガーやAPIによる呼び出しの設定 まず、実⾏させたい処理に合わせてコードを記述します。 このコードは「アクション」としてIBM Cloud Functionsに登録します。 次に、登録したコードを呼び出す条件を設定します。 外部のイベントやHTTPリクエストを条件とすることで、アクションの実⾏を⾃動化できます。 なお、IBM Cloud Functionsのアプリは「GUI」「CLI」どちらのユーザーインタフェースを利⽤して も開発できますが、ここでは、GUIを⽤いた開発の⽅法を解説します。 Functionsの開始画⾯中央にある「作成の開始」ボタンをクリックして始めます。
  20. 68 © 2018 IBM Corporation アクションの作成 「アクションの作成」リンクをクリックします。開いた画⾯で「アクション名」に任意 の 名 前

    (こ こ で は「Hello Dojo」)を ⼊ ⼒ し ま す。「パ ッケージを囲む」はそのままにして、「ラン タイム」で開発する⾔語やバージョン(ここでは「Node.js 10」)を選び、「作成」をクリックし ます。
  21. 69 © 2018 IBM Corporation アクションの作成 画⾯中央のエディタでコードを編集できます。 コードを編集してアクションを開発するときに、気を付けなければならない点が三つあります。 1. アクションが呼び出されると、まず「main」関数が実⾏されるため、main関数が必須

    2. アクションへの⼊⼒および出⼒はともに「JSON」形式。データ構造は⾃由に指定できる 3. IBM Cloud Functionsではアクションが呼び出されるたびにインスタンスが作成され、処理が 完了するとインスタンスは破棄される。よって、アプリはステートレスに記述する ずはコードを書き換えずに、 このアクションを動かしてみ ましょう。右上の「起動」を クリックすると、アクション を実⾏できます。
  22. 76 © 2018 IBM Corporation トリガーとアクションの関連付け トリガーとアクションをひも付けるために「ルール」を作成します。 画⾯右上にある「追加」をクリックし、接続するアクションを設定します。 「既存の(数字)の選択」を選んで、プルダウンメニューから、先 ほ

    ど 作 成 し た「Hello Dojo」ア ク シ ョ ン(Default Package/Hello Dojo)を選択します。「追加」ボタンをクリックす ると、2分ごとに「Hello World」アクションが実⾏されるようになります。
  23. 77 © 2018 IBM Corporation 定義済みのアクション IBM Cloud Functionsには事前定義済みのアクションも⽤意されています。 例えば、「IoT

    Gateway」アクションを使⽤すれば、Raspberry PiのようなIoTデバイスとの連携 もできます。
  24. 78 © 2018 IBM Corporation アクションのAPI呼び出し IBM Cloud Functionsで作ったアクションを外部サービスとWebhookで連携したい、あるいは⾃社 アプリのバックエンドサービスとして利⽤したいなど、アクションを「HTTPリクエスト」で呼び

    出したいケースはよくあるでしょう。 IBM Cloud Functionsでは、アクションをAPI化する⽅法が複数提供されています。 作成したトリガーの画⾯メニューから「エンドポイント」を選択
  25. 79 © 2018 IBM Corporation より細かなAPI設定 例えばレート制限やOAuth認証といった機能を実現したい場合は、APIゲートウエイの機能を利⽤ します。IBM Cloud Functionsではゲートウエイ機能を無料で使えるのも⼤きな特徴です。

    APIを限られた利⽤者や企業に公開したい場合は、この機能を使うのがよいでしょう。 作成したトリガーの画⾯メニューから「エンドポイント」を選択
  26. 免責事項 86 IBM Developer Dojoは開発者の⽅を対象に、IBM Cloudを主とした技術情報をお伝えする⽬的で開催しています。 講師や運営スタッフにより、開催毎に最適と判断した内容でお届けしています。 現在、ハンズオンを伴う講義はお客様の費⽤負担がない環境と⼿順でご案内しています。講義終了後、不要に なりました制作物はお客様ご⾃⾝で削除をお願いいたします。クレジットカードの登録が伴わない場合、費⽤は ⼀切発⽣致しませんが、ご登録いただいたお客様はご注意ください。

    講師陣はみなさまの利⽤状況を個別に確認することはできません。 ご理解とご協⼒をお願いいたします。 利⽤したサービスの削除⽅法については講義の中でご案内します。 ご不明な点がございましたら、当⽇確認をお願いいたします。 講義終了後、 IBM Developer Dojoに関するお問い合わせは「Slack」にお願いします。それ以外のIBM Cloudの お問い合わせにつきましては、弊社サポートセンターまで、次のいづれかの⽅法でお問い合わせください。 IBM Cloudダッシュボードの「サポート」メニューから「Case」を作成し、英語でご記⼊ください IBM Cloudサポートセンター「相談する」ボタンからチャットまたは電話でご連絡ください https://www.ibm.com/jp-ja/cloud/support ご参加ありがとうございました。
  27. 新しい取り組み“バッジ取得プログラム”のご案内 IBM Cloud & AI develop Basic Online Developer Dojo

    ” IBM Cloud & AI develop Basic Online Developer badge“について - 2020年6⽉1⽇より開始のIBM Developer Dojo 12回シリーズと同様の内容のIBM Developer Dojoのクラスが対象 https://www.ibm.com/jp-ja/partnerworld/events/developer-dojo - スキルアップのため全クラスの受講をお奨めします。 - 12回のクラスのうちPAYGアカウントまたはサブスクリプションが必要としない8つのクラスの課題を実施 - 8クラスのうち5クラスの課題について指定された結果を⾃分のアカウントが⾒えるようにスクリーンショットを撮影 - 5クラス分の課題のスクリーンショットをPDFにして [email protected] に送付 - 提出した課題が承認されるとAcclaimからバッジが発⾏されます。 ※バッジ発⾏のためにこれ以外の処理が発⽣する場合、別途ご連絡させていただきます 2020年6⽉1⽇ お問い合わせは、Online Developer Dojo バッジ事務局 (ビジネス・パートナープログラム ヘルプデスク [email protected]