Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IBM Tech Dojo Functions
Search
Taiji HAGINO
PRO
June 16, 2021
Technology
0
220
IBM Tech Dojo Functions
本資料は2021-06-16開催のIBM Tech Dojo Functions編用のものです。
Taiji HAGINO
PRO
June 16, 2021
Tweet
Share
More Decks by Taiji HAGINO
See All by Taiji HAGINO
コミュニティマーケティング推進協会 DevRel分野フェローとしての活動指針
taijihagino
PRO
0
45
Tokyo Azure Meetup and why don't we learn English
taijihagino
PRO
0
1
Datadog Japan Meetup 2023 Fall
taijihagino
PRO
0
190
How to use ChatGPT for practicing English
taijihagino
PRO
0
490
Bi-monthly Webinar - Observability Datadog 101 (20230403pos)
taijihagino
PRO
0
60
How to Drive User Community without Community Manager
taijihagino
PRO
1
50
Facets of Observavility
taijihagino
PRO
0
360
Serverless Application Monitoring | DevOps.com Webinar
taijihagino
PRO
0
21
5分で振り返るCMX Summit Thrive
taijihagino
PRO
0
99
Other Decks in Technology
See All in Technology
技術イベントはなんとかひねり出す 日経の技術広報の取り組み/techpr3
nishiuma
0
220
ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP
yuitosato
29
12k
これまでのキャリアとこれからMLエンジニアとしてどう動くか
masatakashiwagi
0
300
サービスメッシュ環境における OpenTelemetry 活用 / OpenTelemetry in Service Mesh
k6s4i53rx
2
830
生成AI・LLM時代における 機械学習エンジニアとしてのキャリア戦略・開発戦略 / my-career-and-development-strategies-for-ml-engineer-2024
yuya4
3
240
HoneycombとOpenTelemetryでオブザーバビリティに入門してみる
sumiren
2
150
KubeCon EU 2024 : Knative Maintainers Session
salaboy
0
370
ビジネスとコード品質の接合点 そしてコード品質がそこに及ぼす影響 / The Intersections of Business and Engineering, and The Impact of Code Quality There
mtx2s
10
1k
データ化エンジニアとしての1年を振り返る
sansantech
PRO
3
250
統計的学習理論読み Chapter 2
kmatsui
1
200
大規模データとの戦い方
knih
1
460
Vos logs méritent mieux que la config par défaut
lyrixx
2
300
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
28
46k
RailsConf 2023
tenderlove
0
510
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
113
18k
Building Adaptive Systems
keathley
29
1.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Keith and Marios Guide to Fast Websites
keithpitt
407
22k
GraphQLの誤解/rethinking-graphql
sonatard
48
9.1k
Happy Clients
brianwarren
91
6.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
10 Git Anti Patterns You Should be Aware of
lemiorhan
644
57k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
242
20k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Transcript
Taiji Hagino IBM Customer Success Manager IBM Champion Regional Director
@taiponrock IBM Developer Dojo Serverless/IBM Cloud Functions ⼊⾨編
@taiponrock Please follow me! My books for Programing “はじめてのNode-RED”, “Node-RED活⽤マニュアル”
(⼯学社) “Practical Node-RED Programming”, (Packt Publishing) My books for Developer Relations “Developer Marketing DevRel Q&A”, “英語で広がる開発者のキャリア” (Impress R&D) 萩野たいじ (Taiji Hagino) Customer Success Manager | Developer Advocate IBM Champion Program Japan Director IBM 特別⾮常勤講師 筑波⼤学 元美容師で元⾳楽家。ソフトウェアエンジニアへ転⾝後、有限会社アキュレートシ ステムを起業。その後、商社系SIerでのテクニカルエバンジェリスト経験を経て、 IBM GlobalチームのDeveloper Advocateとして DevRel(Developer Relations) を推進。現在はIBMのCustomer Success Managerとして活動中。
学習の⽬的とゴール ⽬的 Serverless/FaaSの概要について理解し、 IBM Cloud Functionsを使えるようになる ゴール IBM Cloud Functionsによるアプリケー
ションの開発⽅法を理解する このコースを学ぶ⽅の想定スキル Webアプリケーション開発経験者の⽅ サーバーレス初⼼者・未経験の⽅
事前準備 1. IBM Cloudアカウント(無料)の取得 2. Webブラウザー Chrome または Firefoxの導⼊
https://ibm.biz/BdzWbA Create IBM Cloud Account -> 無料 -> クレジットカード不要 ->
だれでも使える -> いつまででも使える -> すぐに使える
⽬次 1. サーバーレスとは 2. IBM Cloud Functionsについて 3. IBM Cloud
Functionsの使い⽅
1. サーバーレスとは 2. IBM Cloud Functionsについて 3. IBM Cloud Functionsの使い⽅
8 8 サーバーレスの定義 サーバーレス・コンピューティ ング(Serverless computing)と は、クラウド・プロバイダーが アプリケーションに必要なマシ ン・リソースの割り当てを動的 に管理し、事前に購⼊されたこ
とに基づく請求ではなく、各ア プリケーション要求を満たすた めに使⽤される個々のリソース 量に基づいた請求を⾏うような クラウド・コンピューティング の実⾏モデルである。 出典: フリー百科事典『ウィキペディア(Wikipedia)』
9 9 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 クラウドサービスの種類
10 10 PaaS FaaS (Serverless) PaaSとFaaS(サーバーレス)の違い Middleware Runtime(サービス作成) Data Applications
Runtime(サービス提供) ベンダーが提供 ユーザーが準備 Middleware Runtime(関与不要) Data Applications
11 11 独⾃アプリを動かせるクラウドサービスの形態
12 通常のPaaSでは
13 Hardware Firmware OS プログラム⾔語毎のruntime (virtual machine) プログラム DBなどの ミドルウェア
CPU メモリ ストレージ ネットワークI/O OS ランタイム可動時間 (使⽤メモリ量) 従量課⾦要素 サーバーリソース →
14 サーバーレスでは
15 Hardware Firmware OS プログラム⾔語毎のruntime (virtual machine) プログラム DBなどの ミドルウェア
アプリが呼び出された回数 実⾏している時間 従量課⾦要素 サーバーリソースのことは考えなくて良い=サーバーレス
16 16 FaaS(サーバーレス)の特徴 ü コードを書き、それを連携させるだけで⼀連の 処理を実⾏できる ü 実⾏に必要なサーバーはクラウドサービスプロ バイダー側で⾃動的に割り当てる。またスケー ルアップ(アウト)も必要に応じて⾃動的に対
処する ü 実⾏が終了すると⾃動的にインスタンスが消去 される。従って、課⾦はコードが動いていた時 間だけになる ü さまざまなサービスがコードを起動するトリ ガーとして⽤意されている。それを利⽤して定 期的、あるいは何らかのイベントを起点にサー ビスを起動できる
17 FaaS(サーバーレス)の注意点 ü 実⾏環境はベンダー管理なので個別にチューニ ングの余地が無い ü 提供ベンダーに依存するが、対応しているプロ グラミング⾔語が限定的 ü 原則設計思想がFunction/Action、つまり個の関
数の集合体となるので、コールバックの処理に 対する考慮が必要
1. サーバーレスとは 2. IBM Cloud Functionsについて 3. IBM Cloud Functionsの使い⽅
19 19 meets
20 © 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の概要
21 IBM Cloud www getXXXinfo Create Action • Action(Function)を直接クラウド上に作成するだけ •
実⾏環境とか気にしなくてOK makeXXXfile convertXXXdata PHP, Node.js, Python, Swift Call Action IBM Cloud Functionsのイメージ
22 22 IBM Cloud Functions (OpenWhisk) の特徴
23 23 IBM Cloud Functions (OpenWhisk) 従来型開発との⽐較
Cloud Functions の⽤語
Namespace/ネームスペース 名前空間は、アクションやトリガーなどの Cloud Functions エンティティーを ⼊れるものであり、リソース・グループに属しています。 名前空間に対するアクセス権限をユーザーに付与すると、そのユーザーが Cloud Functions エンティティーにアクセスできるようになります。
Action/アクション アクションは、1 つの特定のタスクを実⾏する 1 ⽚のコードです。 アクション は、任意の⾔語で書くことができます。例えば、JavaScript や Swift コードの
⼩さなスニペットにしたり、Docker コンテナーに組み込まれたカスタム・バイ ナリー・コードにしたりできます。 ユーザーは、ソース・コードまたは Docker イメージとして Cloud Functions にアクションを提供します。 アクションは、Cloud Functions API、CLI、または iOS SDK を使⽤して直接呼 び出されたときに処理を実⾏します。 また、アクションは、IBM Cloud サービ スおよびサード・パーティー・サービスからのイベントに、トリガーを使⽤し て⾃動的に応答することもできます。
Sequence/シーケンス ⼀連のアクションをチェーニングして、コードを記述することなく、シーケン スにまとめることができます。 シーケンスは、順番に呼び出されるアクション のチェーンであり、1 つのアクションの出⼒が次のアクションへの⼊⼒として 渡されます。 シーケンスを作成すれば、既存のアクションを組み合わせて、素 早く簡単に再利⽤できます。 シーケンスは、アクションと同様に、REST
API から呼び出したり、イベントに応答して⾃動的に呼び出したりできます。
Event/イベント イベントの例には、データベース・レコードへの変更、IoT センサーによる⼀ 定の気温を超えたことの感知、GitHub リポジトリーへの新規コードのコミット、 Web アプリまたはモバイル・アプリからの単純な HTTP 要求などがあります。 外部および内部イベント・ソースからのイベントは、トリガーを介して送信さ
れ、ルールによってアクションがそうしたイベントに反応できます。
Trigger/トリガー トリガーは、ある種のイベントに対して指定されたチャネルです。 トリガーと は、ユーザーから起動されるか、イベント・ソースによって起動されるかに関 わらず、特定のタイプのイベントに対応するための宣⾔です。
Rule/ルール ルールは、トリガーをアクションと関連付けます。 トリガーが起動するたびに、 ルールはトリガー・イベントを⼊⼒として使⽤し、関連付けられているアク ションを呼び出します。 適切なルール・セットを使⽤して、1 つのトリガーの イベントで複数のアクションを呼び出すことも、複数のトリガーのイベントに 対して 1
つのアクションを応答として呼び出すこともできます。
Feed/フィード フィード は、Cloud Functions で消費可能なトリガー・イベントを起動するよ うに、外部イベント・ソースを構成するための便利な⽅法です。 例えば、Git フィードでは、Git リポジトリーへのあらゆるコミットに対してトリガー・イベ ントを起動することがあります。
Package/パッケージ サービスおよびイベント・プロバイダーとの統合をパッケージで追加すること ができます。 パッケージは、フィードおよびアクションのバンドルです。 フィードは、トリガー・イベントを起動するように外部イベント・ソースを構 成するコードです。 例えば、IBM Cloudant 変更フィードで作成されるトリ ガーは、IBM
Cloudant データベースで⽂書が変更されるか追加されるたびにそ のトリガーを起動するようにサービスを構成します。 パッケージ内のアクショ ンは、再使⽤可能なロジックを表します。サービス・プロバイダーがアクショ ンを利⽤可能にすることによって、開発者はそのサービスをイベント・ソース として使⽤し、そのサービスの API を呼び出すことができます。 既存のパッケージ・カタログを利⽤すると、素早く簡単に、有⽤な 機能でアプリケーションを強化したり、エコシステム内の外部サー ビスにアクセスしたりできます。 Cloud Functions パッケージ対応の 外部サービスの例として、IBM Cloudant、The Weather Company、 Slack、GitHub があります。
33 33 IBM Cloud services
Quiz
1. Functionとはなんですか︖ A. アクションのこと。 B. 外部APIを呼び出すコードの⽂字列。 C. ⼀連のタスクを実⾏する⼀連のアクション、ルール、 およびトリガー。 D.
上記のどれでもない。
1. Functionとはなんですか︖ A. アクションのこと。 B. 外部APIを呼び出すコードの⽂字列。 C. ⼀連のタスクを実⾏する⼀連のアクション、ルール、 およびトリガー。 D.
上記のどれでもない。
2. シーケンスとはなんですか︖ A. 任意の順序で呼び出すことができる共有パッケージ 内のアクションのグループ。 B. 順番に呼び出される⼀連のアクション。1つのアク ションの出⼒が次のアクションに渡される。 C. アクションをトリガーするために使⽤される⼀連の
イベント。 D. 上記のどれでもない。
2. シーケンスとはなんですか︖ A. 任意の順序で呼び出すことができる共有パッケージ 内のアクションのグループ。 B. 順番に呼び出される⼀連のアクション。1つのアク ションの出⼒が次のアクションに渡される。 C. アクションをトリガーするために使⽤される⼀連の
イベント。 D. 上記のどれでもない。
3. ネームスペース(名前空間)とはな んですか︖ A. リソースグループに属するアクションやトリガーな どのCloud Functionsエンティティのグループ。 B. アクションのトリガーのソース。例︓データベース の変更。
C. 別のIBM Cloudサービスとの統合。 D. 上記のどれでもない。
3. ネームスペース(名前空間)とはな んですか︖ A. リソースグループに属するアクションやトリガーな どのCloud Functionsエンティティのグループ。 B. アクションのトリガーのソース。例︓データベース の変更。
C. 別のIBM Cloudサービスとの統合。 D. 上記のどれでもない。
4. イベントの例として適切なものはど れですか︖ A. GitHubへのコミット。 B. アクションの呼び出し。 C. 特定のタスクを実⾏するコード。 D.
上記のどれでもない。
4. イベントの例として適切なものはど れですか︖ A. GitHubへのコミット。 B. アクションの呼び出し。 C. 特定のタスクを実⾏するコード。 D.
上記のどれでもない。
5. トリガーとはなんですか︖ A. アクションに関連付けたルール。 B. アクションの結果。 C. イベントへ関連させた反応。 D. 上記のどれでもない。
5. トリガーとはなんですか︖ A. アクションに関連付けたルール。 B. アクションの結果。 C. イベントへ関連させた反応。 D. 上記のどれでもない。
IBM Cloud Functions は OpenWhisk に基づいています。 OpenWhisk は、NGINX、Kafka 、Docker、CouchDB などのコ
ンポーネントを組み合わせて、 サーバーレスでイベント・ベー スのプログラミング・サービス を形成するオープン・ソース・ プロジェクトです。 IBM Cloud Functions のバックエンドの仕組み
46 46
47 47
48 48
49 49
50 50
51 51
52 52
53 53
54 54
55 55
56 56
57 © 2018 IBM Corporation FaaS(サーバーレス)を起動するためのトリガー IBM Cloud Functionsは、イベントドリブン(逐次駆動)で ファンクションを起動できます。
起動のための「トリガー」は設定可能です。 例えば、ある特定の時間でデータベースの「Cloudant」が 更新されたときをトリガーとして指定できます。 まだ、設定できるトリガーはあまり多くありませんが、今 後増えていくでしょう。 ▪アクション同⼠をつなげて⼀つのAPIとして提供することも可能
1. サーバーレスとは 2. IBM Cloud Functionsについて 3. IBM Cloud Functionsの使い⽅
59 © 2018 IBM Corporation IBM Cloudへログイン IBM Cloud へログインし、メニューからFunctionsを選択します。
60 © 2018 IBM Corporation Functionsの開始画⾯ Functionsのダッシュボードから各操作を実施します。
61 © 2018 IBM Corporation Functionsの6つのメニュー
62 © 2018 IBM Corporation Functionsでアプリを作成 IBM Cloud Functionsでのサーバーレスアプリの開発は、⼆つのステップに分かれます。 (1)アクションの作成
(2)トリガーやAPIによる呼び出しの設定 まず、実⾏させたい処理に合わせてコードを記述します。 このコードは「アクション」としてIBM Cloud Functionsに登録します。 次に、登録したコードを呼び出す条件を設定します。 外部のイベントやHTTPリクエストを条件とすることで、アクションの実⾏を⾃動化できます。 なお、IBM Cloud Functionsのアプリは「GUI」「CLI」どちらのユーザーインタフェースを利⽤して も開発できますが、ここでは、GUIを⽤いた開発の⽅法を解説します。 Functionsの開始画⾯中央にある「作成の開始」ボタンをクリックして始めます。
63 © 2018 IBM Corporation アクションの作成 「アクションの作成」リンクをクリックします。開いた画⾯で「アクション名」に任意 の 名 前
(こ こ で は「Hello Dojo」)を ⼊ ⼒ し ま す。「パ ッケージを囲む」はそのままにして、「ラン タイム」で開発する⾔語やバージョン(ここでは「Node.js 10」)を選び、「作成」をクリックし ます。
64 © 2018 IBM Corporation アクションの作成 画⾯中央のエディタでコードを編集できます。 コードを編集してアクションを開発するときに、気を付けなければならない点が三つあります。 1. アクションが呼び出されると、まず「main」関数が実⾏されるため、main関数が必須
2. アクションへの⼊⼒および出⼒はともに「JSON」形式。データ構造は⾃由に指定できる 3. IBM Cloud Functionsではアクションが呼び出されるたびにインスタンスが作成され、処理が 完了するとインスタンスは破棄される。よって、アプリはステートレスに記述する ずはコードを書き換えずに、 このアクションを動かしてみ ましょう。右上の「起動」を クリックすると、アクション を実⾏できます。
65 © 2018 IBM Corporation アクションの作成 右側に結果のウィンドウが表⽰され、「Hello World」のメッセージが確認できます。
66 © 2018 IBM Corporation アクションの更新 次にコードを書き換えてみましょう。 アクションが呼び出されたときに「パラメーター」を渡すことも可能です。 次のように、コードを書き換えて「保存」ボタンをクリックします。 「name」というパラメーターが渡された場合に、出⼒を変更するようなコードを追加しています。
function main(params) { if (params.name) { return { message: 'Hello ' + params.name }; } return { message: 'Hello Dojo' }; }
67 © 2018 IBM Corporation アクションの更新 アクションに渡すパラメーターを設定します。 右上の「⼊⼒の変更」をクリックし、次のようにJSON形式でパラメーターを⼊⼒します。 「Taiji」の部分は各⾃好きな名前に置き換えてください。 「適⽤」ボタンをクリックし、再度「起動」ボタンをクリックします。
パラメーターが反映され、結果のメッセージが変わりました。 { "name" : ”Taiji"}
68 © 2018 IBM Corporation アクションをつなげるシーケンス アクションにパラメーターを渡せる特徴を使って、アクションを複数つなげることも可能です。 複数のアクションをつなげたものを「シーケンス」と呼びます。 シーケンスもIBM Cloud
Functions内では、アクションの⼀つとして扱われます。
69 © 2018 IBM Corporation トリガーの作成 アクションの呼び出し⽅法を設定します。 まず「トリガー」を作成します。トリガーは、アクションを実⾏するための条件です。トリガー を使うと、イベントドリブン(逐次駆動)でアクションを呼び出せます。
70 © 2018 IBM Corporation トリガーの作成 次にタイマーを設定します。 ここでは「UTC分」の右側にあるプルダウンから「2分毎」を選択します。 「作成ボタン」をクリックするとトリガーが作成されます。
71 © 2018 IBM Corporation トリガーとアクションの関連付け トリガーとアクションをひも付けるために「ルール」を作成します。 画⾯右上にある「追加」をクリックし、接続するアクションを設定します。 「既存の(数字)の選択」を選んで、プルダウンメニューから、先 ほ
ど 作 成 し た「Hello Dojo」ア ク シ ョ ン(Default Package/Hello Dojo)を選択します。「追加」ボタンをクリックす ると、2分ごとに「Hello World」アクションが実⾏されるようになります。
72 © 2018 IBM Corporation 定義済みのアクション IBM Cloud Functionsには事前定義済みのアクションも⽤意されています。 例えば、「IoT
Gateway」アクションを使⽤すれば、Raspberry PiのようなIoTデバイスとの連携 もできます。
73 © 2018 IBM Corporation アクションのAPI呼び出し IBM Cloud Functionsで作ったアクションを外部サービスとWebhookで連携したい、あるいは⾃社 アプリのバックエンドサービスとして利⽤したいなど、アクションを「HTTPリクエスト」で呼び
出したいケースはよくあるでしょう。 IBM Cloud Functionsでは、アクションをAPI化する⽅法が複数提供されています。 作成したトリガーの画⾯メニューから「エンドポイント」を選択
74 © 2018 IBM Corporation より細かなAPI設定 例えばレート制限やOAuth認証といった機能を実現したい場合は、APIゲートウエイの機能を利⽤ します。IBM Cloud Functionsではゲートウエイ機能を無料で使えるのも⼤きな特徴です。
APIを限られた利⽤者や企業に公開したい場合は、この機能を使うのがよいでしょう。 作成したトリガーの画⾯メニューから「エンドポイント」を選択
75 © 2018 IBM Corporation 認証不要でのアクション呼び出し ⾃社のWebアプリのバックエンド処理で使⽤する場合は、認証なしで呼び出して容易に実装した いこともあるでしょう。そのようなケースでは、「Webアクション」が利⽤できます。 作成したアクションの画⾯メニューから「エンドポイント」を選択しWebアクションを有効化する
76 © 2018 IBM Corporation 実⾏されたアクションの確認 Functions画⾯のモニターメニューから実⾏されたアクションを確認することができます。