SlideShare a Scribd company logo
© 2017 IBM Corporation
⽇本アイ・ビー・エム
システムズ・エンジニアリング株式会社
Bluemixソリューション 今関 靖⼀郎
サーバーレス・アプリ開発のはじめかた
© 2017 IBM Corporation
2
IBM Bluemix
www.bluemix.net
ご注意
この資料は⽇本アイ・ビー・エム株式会社および⽇本アイ・ビー・エム システムズ・エンジニアリング株式会社の
正式なレビューを受けておりません。
資料の内容には正確を期するよう注意しておりますが、この資料の内容は2017年6⽉現在の情報であり、製品の新
しいリリース、修正などによって動作/仕様が変わる可能性があります。
当資料は、資料内で説明されている製品の仕様を保証するものではありません。従って、この情報の利⽤またはこ
れらの技法の実施はひとえに使⽤者の責任において為されるものであり、資料の内容によって受けたいかなる被害
に関しても⼀切の補償をするものではありません。
また、IBM、IBMロゴおよびibm.comは、世界の多くの国で登録されたInternational Business Machines
Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合がありま
す。現時点でのIBMの商標リストについてはhttp://www.ibm.com/legal/copytrade.shtmlをご覧ください。
© 2017 IBM Corporation
3
IBM Bluemix
www.bluemix.net
⾃⼰紹介
q 今関 靖⼀郎 (Imazeki Seiichiro)
¦ ⽇本アイ・ビー・エム システムズ・エンジニアリング株式会社所属
q 現在何している⼈?
¦ IBM Bluemix Platform (PaaS)を中⼼に研修講師、提案活動、技術⽀援、問題判別等諸々
とりあえず何でもやってます
¦ Qiitaでたまに記事も書いています: Ra1nmaker
q 最近のお気に⼊りサービスBest 3
1. IBM OpenWhisk 2. Cloud Automation Manager (CAM) 3. Data Science Experience (DSX)
for 分析
IaaSレベルの
環境構築の⾃動化サーバーレス
Ra1nmaker Qiita 検索
© 2017 IBM Corporation
4
IBM Bluemix
www.bluemix.net
FaaS (Function as a Service)
本⽇のテーマ
Cloud Foundry
(2014年6⽉~)
IBM Containers
(2015年2⽉~)
OpenWhisk
(2016年2⽉~)
2014
2015
2016
ü 制御されたコンテナー環境
ü Bluemixの標準
ü 様々なサービスと容易に連携
ü ⾔語の単位で提供され、利⽤
・・・
ü 可搬性のあるコンテナー環境
ü Bluemixのサービスと連携
ü MWの単位で提供され、利⽤
ü 脆弱性確認機能を提供
• WebSphere Liberty profile
• IBM Integration Bus
• その他カスタム・イメージ
ü イベント駆動型
ü 事前に処理を定義し、イベント
発⽣時のみ計算リソースを確保
し、処理を⾏う
. .
.
.
Event
昨年からBluemix Platformで提供されているアプリの実⾏環境「IBM OpenWhisk」に
ついてお話ししていきます
PaaS (Platform as a Service) CaaS (Container as a Service)
© 2017 IBM Corporation
5
IBM Bluemix
www.bluemix.net
本セッションの⽬的
サーバーレスとは〇〇だ1
IBM OpenWhiskとは〇〇だ2
IBM OpenWhiskを利⽤したシステム開発の進め⽅は○○3
q 以下の内容を把握いただくことを⽬的に進めていきます
1. IBM OpenWhisk概要
2. IBM OpenWhiskでの開発
IBM OpenWhiskは○○なときに利⽤を検討しよう4
© 2017 IBM Corporation
6
IBM Bluemix
www.bluemix.net
1. IBM OpenWhisk概要
この章で触れる内容
ü サーバーレス/FaaS (Function as a Service)の概要
ü IBM OpenWhiskの概要
© 2017 IBM Corporation
7
IBM Bluemix
www.bluemix.net
サーバーレス・アーキテクチャーとは?
「⾮常駐型プロセス」を必要なときに呼び出し、実⾏するシステム・アーキテクチャー
ランタイム*
(サーバー or コンテナー)
従来のアーキテクチャー
ü APサーバー・プロセスは常駐プロセスとして
稼働し続け、リクエストを待つ
ü 複数の処理を1つのプロセス上で実⾏する
ü 稼働させる台数は事前に決める必要がある
* ランタイム: アプリの実⾏環境
APサーバー
アプリ
処理A
処理B
常に稼働
複数の処理を
実装
サーバーレス・アーキテクチャー
ü 呼び出されたら処理を⾏うプロセスを起動
ü 処理が終わったらプロセスは停⽌ or 削除
ü 1つのプロセス上で1つの処理のみ実施する
ü 事前に何台プロセスを動くかは考慮不要
利⽤者
Endpoint
処理A
Controller
New
New
処理A
処理B
処理B
*Endpoint: 処理を受け付けるコンポーネント, Controller: 処理を制御するコンポーネント
実⾏後
停⽌ or 削除
呼ばれたら
⽣成し実⾏
利⽤者
© 2017 IBM Corporation
8
IBM Bluemix
www.bluemix.net
サーバーレスの実現: FaaS (Function as a Service)
イベント*に合わせて関数を呼び出し、処理を実⾏する基盤を提供するサービス
Over
Alarm
Commit
イベント*:ユーザーや他のプログラムが実⾏した操作
様々なイベントをトリガーに
Click
イベントに対する関数を呼び出し、実⾏
センサーでの異常発⽣
指定時刻の経過
Webhook機能
を持つサービス
でのイベント発⽣
Webページ上での
ボタンのクリック
FaaS (Function as a Service)
BaaS (Backend as a Service)などなど
データベース メッセージング 分析系, AI, その他
New
サービスに対する設定 ユーザー・データ
・・・
ランタイム (⾮常駐プロセス)
Endpoint, Controller
などの制御基盤
関数A 関数B
New
実⾏条件
⽣成
関数から呼び出し
: FaaS利⽤者が設定/⽤意するもの
© 2017 IBM Corporation
9
IBM Bluemix
www.bluemix.net
FaaSでの実装: データの処理を意識した開発
q 「データをどう処理するか」の考え⽅で関数を開発していく
¦ 「状態」は⼊出⼒されるデータ、「処理」は関数と分離して設計/開発を⾏う
¦ 関数の書き⽅や利⽤できるライブラリーはFaaSの提供プロバイダーに依存する
q 利⽤する⾔語の関数の書き⽅がわかっていれば、誰でも簡単に始められる
¦ データをどう処理するか、の⼿続きをまずは純粋に実装すれば簡単に動くものができる
⼊出⼒を必須とした関数を積み重ねてデータを処理していくスタイルで開発
データ データ’ データ’’
関数 関数’
Twitter
のつぶやき
つぶやき
を整形
整形された
つぶやきデータ
感情分析
(Watson Tone Analyzer)
感情タグを含む
Twitterつぶやき
⼊⼒ ⼊⼒出⼒ 出⼒
例) Twitterデータのエンリッチメント処理
© 2017 IBM Corporation
10
IBM Bluemix
www.bluemix.net
サーバーレス/FaaSって何が嬉しいの?
ランニング・コスト
ランニング・コスト, スケーリング, インテグレーションの3点にメリットがある
インテグレーションスケーリング
常時プロセスを稼働させないと
いけないため、アイドル時も課⾦
従来 (常駐型)
処理を実⾏したぶんだけの課⾦
100ms単位で切り上げで処理時間を計算
サーバーレス/FaaS
従来 (常駐型)
サーバーレス/FaaS
従来 (常駐型)
サーバーレス/FaaS
拡張のタイミング/トリガーの検討が必要
拡張にかかる時間が数⼗秒 ~ 数分
拡張が前提の仕組みで、イベント発⽣
ごとにスケーリングするので考慮不要
提供されているサービスからデータを
受け取る仕組みを提供
連携したいサービスに合わせて
インターフェースを実装する必要がある
1ヶ⽉ 2ヶ⽉
X万円 × 3ヶ⽉…
…
関数
300秒
3ヶ⽉
1ヶ⽉ 2ヶ⽉ …3ヶ⽉
900秒 600秒New
…
New
New
・・・
スケーリングの条件?
何台が適切?
呼び出しに依存し
スケーリング
各⽉実⾏した秒数分の課⾦
設定のみ
© 2017 IBM Corporation
11
IBM Bluemix
www.bluemix.net
IBM OpenWhisk
IBM Bluemix Platformが提供する、FaaS (Function as a Service)実⾏環境
※ 2017年6⽉時点、⽶国南部地域でのみ提供されています
Docker (その他⾔語)Node.js (v6) Python (v3/v2) Swift (v3) JavaTM (v8)
開発に利⽤できる⾔語: 5種類
サービスとの連携
4種類のデフォルト・ランタイムと⾃由に実装できるDockerを選択できる
Bluemix内外のサービスとの連携するための標準パーツが事前に定義
ドキュメント指向データベース
Cloudant NoSQL Database
メッセージング基盤
IBM MessageHub (Kafka)
翻訳API
Watson Translator
⾳声認識/発話
Watson Speech to Text
Text to Speech
気象情報/天気予報API
Weather Company Data
Slack
GitHub
モバイルへのPush通知
Push Notification
Full Managedな基盤
ü 開発者の責任領域は⾃⾝で開発する関数のコードと実⾏履歴の管理のみ
ü 専⽤のコマンドライン・インターフェース or GUIで簡単セットアップ/操作
オープンソースとして公開 FaaSの仕組みをオンプレなど、別の場所にも導⼊できる
OpenWhiskの制御基盤の運⽤管理はIBMにお任せ
© 2017 IBM Corporation
12
IBM Bluemix
www.bluemix.net
OpenWhiskはオープンな仕様として外部に公開中
[引⽤] http://openwhisk.org/
[引⽤] https://github.com/apache/incubator-openwhisk
Apache OpenWhiskとしてApache License V2.0で公開
© 2017 IBM Corporation
13
IBM Bluemix
www.bluemix.net
OpenWhiskのアーキテクチャー
Dockerをベースに構成され、関数(アクション)はコンテナー上で実⾏される
*詳細はdeveloperWorks - IBM Bluemix OpenWhisk: What’s Under the Hood from a Customer Point of Viewを参照
CLI iOS SDK UI
Controller
NGINX
Cloudant or CouchDB
CONSUL
Registrator
Activator
Invoker
ActionAction
APIエンドポイントとして
動くプロキシー
API呼び出しの制御と管理
認証情報や資産(コード等)
のデータを保管
DNSの提供
Slave (ActivatorとInvoker)の
ヘルス・ステータスを保持
コンテナーをConsulに
⾃動登録/削除
Apache Kafka Zookeeper
トリガーに合わせて
アクションを呼び出す
Controller, Activator, Invoker間
をつなぐメッセージ・バス
コンテナー・プールの管理
とアクションの実⾏
コンテナー上で関数を実⾏
※ OpenrestyベースのAPI Gatewayコンポーネントを提供
IBM OpenWhiskの場合はAPI Connectが4⽉より提供
API Gateway
© 2017 IBM Corporation
14
IBM Bluemix
www.bluemix.net
OpenWhiskの⽤語
ルール
アクション
シーケンス
フィード
トリガー
イベント
結果 (Result)
イベントを
受け取る
時間経過, DB更新
などなど
受け取ったイベントに
対し、処理対象を指定
トリガーとアクション
を紐付ける
アクション同⼠を
連続でつなぐ
データを処理する関数
Wanted
© 2017 IBM Corporation
15
IBM Bluemix
www.bluemix.net
2. IBM OpenWhiskでの開発
この章で触れる内容
ü IBM OpenWhiskでの開発の進め⽅
© 2017 IBM Corporation
16
IBM Bluemix
www.bluemix.net
OpenWhiskでの開発の進め⽅
アクション (関数) の作成 アクションの⾃動化設定 テスト / 動作確認
2. ルールに従ってコード作成
⾔語: Node.js
メモリー : 256MB
タイムアウト: 60秒
1. アクションの定義
3. シーケンスの作成 (オプション)
( )
or
or
トリガー & ルールの作成
API Gatewayの設定
API Connectの設定
{ API }
ü メソッド/パス
ü APIキー
ü レート制限
ü CORS
ü XXが起きたらACTを呼び出す
ü メソッド/パス
ü 認証
ü アセンブル
ü APIプラン など
テスト実⾏とモニタリング
APIのアクセス確認
実⾏!!
{ API }
実⾏!!GET https://~
GET https://~
APIのアクセス確認
Automated
Web API (simplified)
Web API (complicated)
© 2017 IBM Corporation
17
IBM Bluemix
www.bluemix.net
OpenWhiskでの開発に使うインターフェース
以下の2種類のインターフェースをベースにOpenWhiskで開発を進める
1. Webブラウザー 2. CLI (テキスト・エディター+wskコマンド)
簡単に始めて、テストができる ⾃動化、細かく設定し動かせる
© 2017 IBM Corporation
18
IBM Bluemix
www.bluemix.net
実装例: お天気予報ボットを作ってみる
Push Message
LINEやSlack
⼣⽅16:00に通知
時間になったら実⾏
毎⽇16:00に呼び出しT
天気予報の情報を取得
提供のアクションを使⽤A
取得した天気予報情報を加⼯
通知可能な形に変換A
LINE/Slackに通知
仕様に合わせて通知A
S
このような形でユーザーに通知
T : トリガーA : アクション S : シーケンス R : ルール
R
© 2017 IBM Corporation
19
IBM Bluemix
www.bluemix.net
デモに必要なもの
q Bluemixのアカウント [必須]
¦ [⼿順] IBM Bluemixフリートライアルアカウント作成⼿順
q Weather Company Data for Bluemixサービスのデプロイ [必須]
¦ ⽶国南部地域でスペースを作り、カタログの「データ & 分析」から⽤意
qLINE or Slackのアカウント [お好きに]
¦ LINE:
nLINE Business Centerアカウントを⽤意
¦ Slack:
nIncoming Webhookの設定がわかれば簡単にセットアップできる
Web ( )
© 2017 IBM Corporation
20
IBM Bluemix
www.bluemix.net
OpenWhiskのWebコンソールから開発開始!!
トップ画⾯から
開発画⾯へ
クリック
© 2017 IBM Corporation
21
IBM Bluemix
www.bluemix.net
( )
1 23 1BN
M ( .0
1 ( )
(
5
1 6N :
( )
1. アクションの定義
Step1. 「アクションの作成」をクリック
Step2. アクション名や⾔語(実⾏ランタイム)などを指定し、作成
LINE/Slack
© 2017 IBM Corporation
22
IBM Bluemix
www.bluemix.net
アクション(関数)の定義の仕⽅は2種類ある
Web アクションスタンダード・アクション
ü データ処理のためのアクション
ü 出⼒はJSONフォーマットで返却
ü Web応答を返すためのアクション
ü コンテンツやヘッダーの⽣成が可能
ü 認証なしで実⾏できるURLを提供
JSON形式のデータ
出⼒
{
"result": "ok",
"score": "1.0"
}
アクション
{
"type": "car",
"color": "red"
}
JSON形式のデータ
⼊⼒
HTML
</>
アクション
出⼒
HTTP
リクエスト
HEADER 1
HEADER 2
APIEndpoint
レスポンス
データ処理 応答のため
の処理
データ処理⽤のスタンダード(標準)とWeb応答を返すためのWebの2種類が提供
⼀⽅的な通知なので
スタンダードで!!
© 2017 IBM Corporation
23
IBM Bluemix
www.bluemix.net
( )
1 23 1BN
M ( .0
1 ( )
(
5
1 6N :
( )
2. ルールにしたがってコードを作成
Step1. エディター画⾯で関数を作成
Step2. 関数ができたら「ライブにする」で保存
Step3. 「このアクションを実⾏」で動作確認
LINE/Slack
© 2017 IBM Corporation
24
IBM Bluemix
www.bluemix.net
アクションの実装ルール
def main(dist):
:
key = dist.key
:
:
return {"result": "OK", ・・・}
関数 (コード断⽚){
"key": "sample"
"msg": "test",
:
}
⼊⼒: JSON形式のデータ
{
"result": "OK"
:
}
出⼒: JSON形式のデータ
ルール1.
main関数が呼び出されるので*1
main関数に必要な処理を記載
ルール2.
⼊⼒は必ずJSON形式
データ構造は⾃由に指定可能
ルール3.
出⼒は必ずJSON形式
後続の処理に合わせて定義
*1) wskコマンドラインでアクションを作成する場合は別名の関数を呼び出しに指定することも可能
⼊⼒/出⼒のデータ・フォーマットに気をつけて、各⾔語に合わせて関数を作成
デフォルト・パラメーター
設定もできる
"error"は予約語なので
使わない
Python
© 2017 IBM Corporation
25
IBM Bluemix
www.bluemix.net
( )
1 23 1BN
M ( .0
1 ( )
(
5
1 6N :
( )
3. シーケンスの作成 (オプション) (1/4)
Step1. 「パブリック・パッケージの参照」を選択
Step2. Weather Dataパッケージのforecastアクションを選択
アクションを選択
WEATHERを選択
インスタンスを指定
認証情報を紐付ける
Step3. 「シーケンスにリンク」をクリック
LINE/Slack
© 2017 IBM Corporation
26
IBM Bluemix
www.bluemix.net
( )
1 23 1BN
M ( .0
1 ( )
(
5
1 6N :
( )
3. シーケンスの作成 (オプション) (2/4)
Step4. つなげたいアクションを選択
Step5. 「シーケンスに追加」をクリック
アクションを選択
LINE/Slack
© 2017 IBM Corporation
27
IBM Bluemix
www.bluemix.net
( )
1 23 1BN
M ( .0
1 ( )
(
5
1 6N :
( )
3. シーケンスの作成 (オプション) (3/4)
Step6. 設定したシーケンスのアクション実⾏順を確認
Step7. アクションを追加するなら「拡張」を選択
Weather Dataの
Forecastアクションを実⾏
Forecastアクション後
のデータを加⼯
LINE/Slack
© 2017 IBM Corporation
28
IBM Bluemix
www.bluemix.net
( )
1 23 1BN
M ( .0
1 ( )
(
5
1 6N :
( )
3. シーケンスの作成 (オプション) (4/4)
Step8. シーケンス作成完了後、「これは適切なようです」をクリック
Step9. シーケンス名を指定し、「アクション・シーケンスの保存」をクリック
何の処理か
わかるように命名
通知のための
アクションを追加
LINE/Slack
© 2017 IBM Corporation
29
IBM Bluemix
www.bluemix.net
シーケンス実装のルール: パラメーターの受け渡し
前のアクションの出⼒がそのまま次に実⾏するアクションの⼊⼒になるため注意が必要
function (params){
return {"message":"Action1: " + params.message}
}
{"name":"John"}
"John"
{"message":" Action1: John"}
アクション1の出⼒
アクション1
アクション1への⼊⼒
アクション1のみ実⾏した場合
アクション1の出⼒
アクション1, アクション2の順で実⾏する場合
function (params){
return {"message":"Action1: " + params.name}
}
{"name":"John"}
{"error": "The action did not return a dictionary."}
function (params){
return {"message":"Action2: " + params.arg}
}
アクション2の出⼒
アクション1の出⼒
アクション1への⼊⼒
アクション1
"arg"キーは
指定されていない
アクション2が
実⾏エラーとなる
アクション2
© 2017 IBM Corporation
30
IBM Bluemix
www.bluemix.net
4. トリガー & ルールの作成 (1/4)
Step1. 実⾏したいシーケンスを選択し、「⾃動化」をクリック
ü &
Step2. 「PERIODIC」を選択し、「新規アラーム」をクリック
/
!!
16:00
© 2017 IBM Corporation
31
IBM Bluemix
www.bluemix.net
4. トリガー & ルールの作成 (2/4)
Step3. 実⾏したい時刻の条件や実⾏時の⼊⼒値、トリガー名を指定
ü &
1⽇に1回なら
DAILYを選択
実⾏したい時刻を
UTCで指定
トリガー名は設定が
わかるように指定*
*) 2017年6⽉の時点でトリガーの設定の参照/変更はできない
Step4. 「定期的なトリガーの作成」をクリック
/
!!
16:00
© 2017 IBM Corporation
32
IBM Bluemix
www.bluemix.net
4. トリガー & ルールの作成 (3/4)
Step5. 作成したアラームが選択し、「次へ」をクリック
ü &
Step6. 問題がなければ「これは適切なようです」をクリック
/
!!
16:00
© 2017 IBM Corporation
33
IBM Bluemix
www.bluemix.net
4. トリガー & ルールの作成 (4/4)
Step7. ルール名を⼊⼒し、「ルールの保存」をクリック
ü &
/
!!
以上で設定完了!!
あとは時間まで待つか
テスト実⾏して動作確認
16:00
16:00
LINE/Slack
© 2017 IBM Corporation
34
IBM Bluemix
www.bluemix.net
テスト実⾏とモニタリング
Step1. 作成したトリガーの「 」アイコンをクリック
ü &
/
!!
Step2. 必要に応じてJSON⼊⼒値を指定し,「この値で実⾏」をクリック
© 2017 IBM Corporation
35
IBM Bluemix
www.bluemix.net
テスト実⾏とモニタリング
Step3. 実⾏したアクションの結果は「モニター」画⾯で参照できる
ü &
/
!!
直近200件までの
アクティビティーを表⽰
© 2017 IBM Corporation
36
IBM Bluemix
www.bluemix.net
以上、通知の実装は完了!!
© 2017 IBM Corporation
37
IBM Bluemix
www.bluemix.net
API Gateway機能によるWeb API公開
組み込みのAPI Gatewayを利⽤し、セキュアにアクションをAPI公開する機能を提供
API公開のための設定 API公開後の管理
どのアクションを
どのメソッドで呼び出すか指定
APIキーによる認可の有無や
APIのレート制約を指定
APIドキュメントの⽣成/公開
APIの利⽤状況の確認
© 2017 IBM Corporation
38
IBM Bluemix
www.bluemix.net
API公開機能を利⽤した実装例
送信
応答 (200 ok)
APIGateway
Signatureの確認
送信データの妥当性確認A
MessageHubに送信
メッセージをパブリッシュA
S
LINEにReply Message
Reply Tokenを利⽤した応答A
Webアクション(Raw HTTP)で構成
メッセージ送信
アクションの呼び出し
T MessageHubからサブスクライブ
MessageHubで
⾮同期連携
メッセージ送信
Web ( )
© 2017 IBM Corporation
39
IBM Bluemix
www.bluemix.net
API Connectを活⽤した実装
Slack
Marvel Developer API
Slash Command
JSONフォーマット
に加⼯
「Spider-Man」と聞くと画像をくれる
送信
APIConnect
アクションの呼び出し
画像の送信
Web ( )
© 2017 IBM Corporation
40
IBM Bluemix
www.bluemix.net
IBM OpenWhiskの利⽤をはじめるユースケース
以下の代表的なユースケースに該当するなら、OpenWhiskの適⽤を検討してみる
スケジュール実⾏Webシステムのバックエンド
モバイルのバックエンド
データ処理 (クレンジング, エンリッチメント)
Cognitiveなサービスを活⽤したデータ処理
チャットボットのバックエンド メッセージ基盤を利⽤したデータ処理
センサー・デバイスからの不定期実⾏
バックエンド (Backend) データ処理 (Data Processing) ⾃動化 (Automated)
まずはスケジュール実⾏や
Webシステムのバックエンドなど
実装が容易なものから利⽤を検討
© 2017 IBM Corporation
41
IBM Bluemix
www.bluemix.net
OpenWhisk (サーバーレス)に向かないケース
q 求められる応答時間がシビアな処理 (ms単位)
¦ 処理時間はプロセスの起動時間も含まれる、コールドスタートは特に遅い
n 起動時間はばらつきが⽣じやすく、それゆえ安定した応答時間は保証できない
n (経験的に)定期的に処理を呼び出す、余計なパッケージは追加しない、などを意識
q ⻑時間かかる/延々とかかる処理
¦ ⽬安として5分以上かかる処理は避ける
n OpenWhiskのアクション実⾏タイムアウトの最⼤値は5分 (300秒)
n 機械学習のトレーニング処理やビデオ・ストリーミングは厳しい
l 餅は餅屋でそれ⽤の基盤/サービスを使うのが適切
q ⼤量データを裁く処理
¦ 1度に1GB以上を越える処理はまず避ける
n アクションの割り当てメモリーサイズの最⼤は512MB
n オンメモリーにデータを載せすぎるとLinuxのOoM Killerの餌⾷に・・・
要注意!!
© 2017 IBM Corporation
42
IBM Bluemix
www.bluemix.net
q 以下の内容をお伝えいたしました
本セッションのまとめ
サーバーレスとは、「⾮常駐型プロセス」を必要なときに呼び出し、実⾏する
システム・アーキテクチャーだ1
IBM OpenWhiskとは、IBMが提供するFull ManagedなFaaS実⾏環境だ2
IBM OpenWhiskを利⽤したシステム開発
の進め⽅は右図の通り3
1. IBM OpenWhisk概要
2. IBM OpenWhiskでの開発
IBM OpenWhiskはP.40の代表的なユース
ケースに該当するなら利⽤を検討4
( ) /
& Rd m
1 G
stw &()0
i r l )
aeu W
e c fW eu
( )
lw W
3/ . W
3/ CC W
ü s jm of
ü 3/
ü y l
ü 2 5
ü M NP 6 X O
ü s jm of
ü
ü p
ü 3/ T
fl Stniw b
3/W a f
!!
!!GET https://~
GET https://~
3/W a f
I B
: 3/ G B A
: 3/ B A
© 2017 IBM Corporation
43
IBM Bluemix
www.bluemix.net
サンプルも提供されていますので、試してみてください
q 以下のリンクにチュートリアルやデモ・サンプルが公開
¦ https://github.com/apache/incubator-openwhisk-external-resources#applications
例: OpenWhisk Dark Vision
動画をフレームに分けて
Visual Recognitionで処理
OpenWhiskとWatson Visual Recognitionを活⽤した動画/静⽌画の分析Webアプリケーション・サンプル
デモ
https://openwhisk-darkvision.mybluemix.net/#!/
ソースコード
https://github.com/IBM-Bluemix/openwhisk-darkvisionapp
© 2017 IBM Corporation
44
IBM Bluemix
www.bluemix.net
© 2017 IBM Corporation
45
IBM Bluemix
www.bluemix.net
よくある質問: あれ、Node-REDと似てない?
より直感的にコーディングレスに開発できる反⾯、複雑化や運⽤に配慮が必要
Node-RED: デバイス, API, オンライン・サービスのコーディネーション・ツール (http://nodered.org/)
ブラウザ・ベースのUIで処理フローを作成し、直接実⾏環境にデプロイ
冗⻑化の実装: 従来の常駐プロセス型なので冗⻑化の⽅法は検討
- HTTP/HTTPS: Load Balancerを別途⽤意
- MQTT: KafkaのConsumer Groupの仕組みを活⽤
ヒープの監視は重要
- フローが複雑/多くなれば、1プロセスが消費するメモリーは増加
ユーザーは基盤の
冗⻑性を意識せず開発
フローの複雑化: 適当に作るとスパゲッティー状態に・・・
- ⽬からウロコ!Node-REDのデザインパターン10選を参考にブラッシュアップ ⾔語にこだわらなくて良い
1つの関数でシンプルに実装
関数の単位でメモリー割当て
データ量次第だがOoMは起きにくい

More Related Content

What's hot

Twilio x SendGrid x Bluemix 実践ハンズオン
Twilio x SendGrid x Bluemix 実践ハンズオンTwilio x SendGrid x Bluemix 実践ハンズオン
Twilio x SendGrid x Bluemix 実践ハンズオン
Masaya Fujita
 
Node-REDのフローをバックアップしよう
Node-REDのフローをバックアップしようNode-REDのフローをバックアップしよう
Node-REDのフローをバックアップしよう
Kota Suizu
 
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験するIBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
Masaya Fujita
 
10分でわかるBluemix
10分でわかるBluemix10分でわかるBluemix
10分でわかるBluemix
softlayerjp
 
Try IoT with Node-RED
Try IoT with Node-REDTry IoT with Node-RED
Try IoT with Node-RED
Kimihiko Kitase
 
WWCT ラズパイ Bluemix 講習資料
WWCT ラズパイ Bluemix 講習資料WWCT ラズパイ Bluemix 講習資料
WWCT ラズパイ Bluemix 講習資料
Masaya Fujita
 
Node red for-collecting_information
Node red for-collecting_informationNode red for-collecting_information
Node red for-collecting_information
Harada Kazuki
 
Introducing IBM Cloud & Cognitive
Introducing IBM Cloud & CognitiveIntroducing IBM Cloud & Cognitive
Introducing IBM Cloud & Cognitive
Atsumori Sasaki
 
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
Hayama Kyouhei
 
Bluemix(Node-RED)を使った空間の付加価値提案
Bluemix(Node-RED)を使った空間の付加価値提案Bluemix(Node-RED)を使った空間の付加価値提案
Bluemix(Node-RED)を使った空間の付加価値提案
BMXUG
 
IoT と Watson と クラウドが出会ったら、そこは Bluemix だった!
IoT と Watson と クラウドが出会ったら、そこは Bluemix だった!IoT と Watson と クラウドが出会ったら、そこは Bluemix だった!
IoT と Watson と クラウドが出会ったら、そこは Bluemix だった!
softlayerjp
 
IBM cloud 冬の勉強会 google の視点も織り交ぜ理解するkubernetes , istio , grafeas とibm cloud pr...
IBM cloud 冬の勉強会 google の視点も織り交ぜ理解するkubernetes , istio , grafeas とibm cloud pr...IBM cloud 冬の勉強会 google の視点も織り交ぜ理解するkubernetes , istio , grafeas とibm cloud pr...
IBM cloud 冬の勉強会 google の視点も織り交ぜ理解するkubernetes , istio , grafeas とibm cloud pr...
Tsuyoshi Hirayama
 
Ibm bluemix を使ってモバイルのセンサーデータを利用する
Ibm bluemix を使ってモバイルのセンサーデータを利用するIbm bluemix を使ってモバイルのセンサーデータを利用する
Ibm bluemix を使ってモバイルのセンサーデータを利用する
Masaya Fujita
 
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
Masaya Fujita
 
.NET Micro Framework (プラレールと電子工作)
.NET Micro Framework (プラレールと電子工作).NET Micro Framework (プラレールと電子工作)
.NET Micro Framework (プラレールと電子工作)
Akira Hatsune
 
Tech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSMTech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSM
勇 黒沢
 
Node-REDのノード開発容易化ツール Node generator
Node-REDのノード開発容易化ツールNode generatorNode-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツール Node generator
BMXUG
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
Minoru Naito
 
C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)
Keiji Kamebuchi
 
(Live Tokyo) 米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション
(Live Tokyo) 米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション(Live Tokyo) 米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション
(Live Tokyo) 米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション
Couchbase Japan KK
 

What's hot (20)

Twilio x SendGrid x Bluemix 実践ハンズオン
Twilio x SendGrid x Bluemix 実践ハンズオンTwilio x SendGrid x Bluemix 実践ハンズオン
Twilio x SendGrid x Bluemix 実践ハンズオン
 
Node-REDのフローをバックアップしよう
Node-REDのフローをバックアップしようNode-REDのフローをバックアップしよう
Node-REDのフローをバックアップしよう
 
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験するIBM Bluemix Node-REDを使って簡単アプリ作成を体験する
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
 
10分でわかるBluemix
10分でわかるBluemix10分でわかるBluemix
10分でわかるBluemix
 
Try IoT with Node-RED
Try IoT with Node-REDTry IoT with Node-RED
Try IoT with Node-RED
 
WWCT ラズパイ Bluemix 講習資料
WWCT ラズパイ Bluemix 講習資料WWCT ラズパイ Bluemix 講習資料
WWCT ラズパイ Bluemix 講習資料
 
Node red for-collecting_information
Node red for-collecting_informationNode red for-collecting_information
Node red for-collecting_information
 
Introducing IBM Cloud & Cognitive
Introducing IBM Cloud & CognitiveIntroducing IBM Cloud & Cognitive
Introducing IBM Cloud & Cognitive
 
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
 
Bluemix(Node-RED)を使った空間の付加価値提案
Bluemix(Node-RED)を使った空間の付加価値提案Bluemix(Node-RED)を使った空間の付加価値提案
Bluemix(Node-RED)を使った空間の付加価値提案
 
IoT と Watson と クラウドが出会ったら、そこは Bluemix だった!
IoT と Watson と クラウドが出会ったら、そこは Bluemix だった!IoT と Watson と クラウドが出会ったら、そこは Bluemix だった!
IoT と Watson と クラウドが出会ったら、そこは Bluemix だった!
 
IBM cloud 冬の勉強会 google の視点も織り交ぜ理解するkubernetes , istio , grafeas とibm cloud pr...
IBM cloud 冬の勉強会 google の視点も織り交ぜ理解するkubernetes , istio , grafeas とibm cloud pr...IBM cloud 冬の勉強会 google の視点も織り交ぜ理解するkubernetes , istio , grafeas とibm cloud pr...
IBM cloud 冬の勉強会 google の視点も織り交ぜ理解するkubernetes , istio , grafeas とibm cloud pr...
 
Ibm bluemix を使ってモバイルのセンサーデータを利用する
Ibm bluemix を使ってモバイルのセンサーデータを利用するIbm bluemix を使ってモバイルのセンサーデータを利用する
Ibm bluemix を使ってモバイルのセンサーデータを利用する
 
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
【Twilio勉強会 with Bluemix in 福岡】 電話のボタン応答無しで!?音声認識による自動回答サービスを作ろう!
 
.NET Micro Framework (プラレールと電子工作)
.NET Micro Framework (プラレールと電子工作).NET Micro Framework (プラレールと電子工作)
.NET Micro Framework (プラレールと電子工作)
 
Tech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSMTech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSM
 
Node-REDのノード開発容易化ツール Node generator
Node-REDのノード開発容易化ツールNode generatorNode-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツール Node generator
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)
 
(Live Tokyo) 米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション
(Live Tokyo) 米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション(Live Tokyo) 米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション
(Live Tokyo) 米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション
 

Similar to Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかた

【JSLGG】お手軽watsonアプリ開発セミナー
【JSLGG】お手軽watsonアプリ開発セミナー【JSLGG】お手軽watsonアプリ開発セミナー
【JSLGG】お手軽watsonアプリ開発セミナー
softlayerjp
 
Amazon Redshift 概要 (20分版)
Amazon Redshift 概要 (20分版)Amazon Redshift 概要 (20分版)
Amazon Redshift 概要 (20分版)
Amazon Web Services Japan
 
XPagesDay 2016 - XPages Future Roadmap
XPagesDay 2016 - XPages Future RoadmapXPagesDay 2016 - XPages Future Roadmap
XPagesDay 2016 - XPages Future Roadmap
Atsushi Sato
 
IBM Bluemix DevOps Services で Javaの Web アプリを開発する
IBM Bluemix DevOps Services で Javaの Web アプリを開発するIBM Bluemix DevOps Services で Javaの Web アプリを開発する
IBM Bluemix DevOps Services で Javaの Web アプリを開発する
Ippei SUZUKI
 
AppFormix勉強会資料
AppFormix勉強会資料AppFormix勉強会資料
AppFormix勉強会資料
Juniper Networks (日本)
 
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介20172017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
Tsuyoshi Hirayama
 
Ibm cognos10 bi_セルフスタディーキットのご紹介
Ibm cognos10 bi_セルフスタディーキットのご紹介Ibm cognos10 bi_セルフスタディーキットのご紹介
Ibm cognos10 bi_セルフスタディーキットのご紹介
Shinsuke Yamamoto
 
見せます! 半歩先のクラウド型アプリケーション開発
見せます! 半歩先のクラウド型アプリケーション開発見せます! 半歩先のクラウド型アプリケーション開発
見せます! 半歩先のクラウド型アプリケーション開発
Tatsuki Manchu
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
Amazon Web Services Japan
 
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
Amazon Web Services Japan
 
デモで理解する!Bluemixモバイル・サービス
デモで理解する!Bluemixモバイル・サービスデモで理解する!Bluemixモバイル・サービス
デモで理解する!Bluemixモバイル・サービス
IBMソリューション
 
事例でわかるBIGLOBEクラウドホスティング
事例でわかるBIGLOBEクラウドホスティング事例でわかるBIGLOBEクラウドホスティング
事例でわかるBIGLOBEクラウドホスティングビジネスBIGLOBE
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~
Takeshi Shinmura
 
Hinemos製品紹介201907
Hinemos製品紹介201907Hinemos製品紹介201907
Hinemos製品紹介201907
Hinemos
 
0101 Hinemos製品紹介_202101
0101 Hinemos製品紹介_2021010101 Hinemos製品紹介_202101
0101 Hinemos製品紹介_202101
Hinemos
 
イノベート・ハブ九州 Bluemix勉強会(第2回)
イノベート・ハブ九州 Bluemix勉強会(第2回)イノベート・ハブ九州 Bluemix勉強会(第2回)
イノベート・ハブ九州 Bluemix勉強会(第2回)
Atsumori Sasaki
 
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜Teruo Adachi
 
Bluemixではじめるアナリティクス
BluemixではじめるアナリティクスBluemixではじめるアナリティクス
Bluemixではじめるアナリティクス
IBMソリューション
 
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Yoshito Tabuchi
 
IoT Application Development by XPages on Bluemix
IoT Application Development by XPages on BluemixIoT Application Development by XPages on Bluemix
IoT Application Development by XPages on Bluemix
Atsushi Sato
 

Similar to Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかた (20)

【JSLGG】お手軽watsonアプリ開発セミナー
【JSLGG】お手軽watsonアプリ開発セミナー【JSLGG】お手軽watsonアプリ開発セミナー
【JSLGG】お手軽watsonアプリ開発セミナー
 
Amazon Redshift 概要 (20分版)
Amazon Redshift 概要 (20分版)Amazon Redshift 概要 (20分版)
Amazon Redshift 概要 (20分版)
 
XPagesDay 2016 - XPages Future Roadmap
XPagesDay 2016 - XPages Future RoadmapXPagesDay 2016 - XPages Future Roadmap
XPagesDay 2016 - XPages Future Roadmap
 
IBM Bluemix DevOps Services で Javaの Web アプリを開発する
IBM Bluemix DevOps Services で Javaの Web アプリを開発するIBM Bluemix DevOps Services で Javaの Web アプリを開発する
IBM Bluemix DevOps Services で Javaの Web アプリを開発する
 
AppFormix勉強会資料
AppFormix勉強会資料AppFormix勉強会資料
AppFormix勉強会資料
 
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介20172017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
 
Ibm cognos10 bi_セルフスタディーキットのご紹介
Ibm cognos10 bi_セルフスタディーキットのご紹介Ibm cognos10 bi_セルフスタディーキットのご紹介
Ibm cognos10 bi_セルフスタディーキットのご紹介
 
見せます! 半歩先のクラウド型アプリケーション開発
見せます! 半歩先のクラウド型アプリケーション開発見せます! 半歩先のクラウド型アプリケーション開発
見せます! 半歩先のクラウド型アプリケーション開発
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
 
デモで理解する!Bluemixモバイル・サービス
デモで理解する!Bluemixモバイル・サービスデモで理解する!Bluemixモバイル・サービス
デモで理解する!Bluemixモバイル・サービス
 
事例でわかるBIGLOBEクラウドホスティング
事例でわかるBIGLOBEクラウドホスティング事例でわかるBIGLOBEクラウドホスティング
事例でわかるBIGLOBEクラウドホスティング
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~
 
Hinemos製品紹介201907
Hinemos製品紹介201907Hinemos製品紹介201907
Hinemos製品紹介201907
 
0101 Hinemos製品紹介_202101
0101 Hinemos製品紹介_2021010101 Hinemos製品紹介_202101
0101 Hinemos製品紹介_202101
 
イノベート・ハブ九州 Bluemix勉強会(第2回)
イノベート・ハブ九州 Bluemix勉強会(第2回)イノベート・ハブ九州 Bluemix勉強会(第2回)
イノベート・ハブ九州 Bluemix勉強会(第2回)
 
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
 
Bluemixではじめるアナリティクス
BluemixではじめるアナリティクスBluemixではじめるアナリティクス
Bluemixではじめるアナリティクス
 
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
Xamarin 紹介:Windows Phone / iOS / Android アプリ同時開発のススメ 2015/8/20 版
 
IoT Application Development by XPages on Bluemix
IoT Application Development by XPages on BluemixIoT Application Development by XPages on Bluemix
IoT Application Development by XPages on Bluemix
 

Bluemix大勉強会 - サーバーレス・アプリ開発のはじめかた

  • 1. © 2017 IBM Corporation ⽇本アイ・ビー・エム システムズ・エンジニアリング株式会社 Bluemixソリューション 今関 靖⼀郎 サーバーレス・アプリ開発のはじめかた
  • 2. © 2017 IBM Corporation 2 IBM Bluemix www.bluemix.net ご注意 この資料は⽇本アイ・ビー・エム株式会社および⽇本アイ・ビー・エム システムズ・エンジニアリング株式会社の 正式なレビューを受けておりません。 資料の内容には正確を期するよう注意しておりますが、この資料の内容は2017年6⽉現在の情報であり、製品の新 しいリリース、修正などによって動作/仕様が変わる可能性があります。 当資料は、資料内で説明されている製品の仕様を保証するものではありません。従って、この情報の利⽤またはこ れらの技法の実施はひとえに使⽤者の責任において為されるものであり、資料の内容によって受けたいかなる被害 に関しても⼀切の補償をするものではありません。 また、IBM、IBMロゴおよびibm.comは、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合がありま す。現時点でのIBMの商標リストについてはhttp://www.ibm.com/legal/copytrade.shtmlをご覧ください。
  • 3. © 2017 IBM Corporation 3 IBM Bluemix www.bluemix.net ⾃⼰紹介 q 今関 靖⼀郎 (Imazeki Seiichiro) ¦ ⽇本アイ・ビー・エム システムズ・エンジニアリング株式会社所属 q 現在何している⼈? ¦ IBM Bluemix Platform (PaaS)を中⼼に研修講師、提案活動、技術⽀援、問題判別等諸々 とりあえず何でもやってます ¦ Qiitaでたまに記事も書いています: Ra1nmaker q 最近のお気に⼊りサービスBest 3 1. IBM OpenWhisk 2. Cloud Automation Manager (CAM) 3. Data Science Experience (DSX) for 分析 IaaSレベルの 環境構築の⾃動化サーバーレス Ra1nmaker Qiita 検索
  • 4. © 2017 IBM Corporation 4 IBM Bluemix www.bluemix.net FaaS (Function as a Service) 本⽇のテーマ Cloud Foundry (2014年6⽉~) IBM Containers (2015年2⽉~) OpenWhisk (2016年2⽉~) 2014 2015 2016 ü 制御されたコンテナー環境 ü Bluemixの標準 ü 様々なサービスと容易に連携 ü ⾔語の単位で提供され、利⽤ ・・・ ü 可搬性のあるコンテナー環境 ü Bluemixのサービスと連携 ü MWの単位で提供され、利⽤ ü 脆弱性確認機能を提供 • WebSphere Liberty profile • IBM Integration Bus • その他カスタム・イメージ ü イベント駆動型 ü 事前に処理を定義し、イベント 発⽣時のみ計算リソースを確保 し、処理を⾏う . . . . Event 昨年からBluemix Platformで提供されているアプリの実⾏環境「IBM OpenWhisk」に ついてお話ししていきます PaaS (Platform as a Service) CaaS (Container as a Service)
  • 5. © 2017 IBM Corporation 5 IBM Bluemix www.bluemix.net 本セッションの⽬的 サーバーレスとは〇〇だ1 IBM OpenWhiskとは〇〇だ2 IBM OpenWhiskを利⽤したシステム開発の進め⽅は○○3 q 以下の内容を把握いただくことを⽬的に進めていきます 1. IBM OpenWhisk概要 2. IBM OpenWhiskでの開発 IBM OpenWhiskは○○なときに利⽤を検討しよう4
  • 6. © 2017 IBM Corporation 6 IBM Bluemix www.bluemix.net 1. IBM OpenWhisk概要 この章で触れる内容 ü サーバーレス/FaaS (Function as a Service)の概要 ü IBM OpenWhiskの概要
  • 7. © 2017 IBM Corporation 7 IBM Bluemix www.bluemix.net サーバーレス・アーキテクチャーとは? 「⾮常駐型プロセス」を必要なときに呼び出し、実⾏するシステム・アーキテクチャー ランタイム* (サーバー or コンテナー) 従来のアーキテクチャー ü APサーバー・プロセスは常駐プロセスとして 稼働し続け、リクエストを待つ ü 複数の処理を1つのプロセス上で実⾏する ü 稼働させる台数は事前に決める必要がある * ランタイム: アプリの実⾏環境 APサーバー アプリ 処理A 処理B 常に稼働 複数の処理を 実装 サーバーレス・アーキテクチャー ü 呼び出されたら処理を⾏うプロセスを起動 ü 処理が終わったらプロセスは停⽌ or 削除 ü 1つのプロセス上で1つの処理のみ実施する ü 事前に何台プロセスを動くかは考慮不要 利⽤者 Endpoint 処理A Controller New New 処理A 処理B 処理B *Endpoint: 処理を受け付けるコンポーネント, Controller: 処理を制御するコンポーネント 実⾏後 停⽌ or 削除 呼ばれたら ⽣成し実⾏ 利⽤者
  • 8. © 2017 IBM Corporation 8 IBM Bluemix www.bluemix.net サーバーレスの実現: FaaS (Function as a Service) イベント*に合わせて関数を呼び出し、処理を実⾏する基盤を提供するサービス Over Alarm Commit イベント*:ユーザーや他のプログラムが実⾏した操作 様々なイベントをトリガーに Click イベントに対する関数を呼び出し、実⾏ センサーでの異常発⽣ 指定時刻の経過 Webhook機能 を持つサービス でのイベント発⽣ Webページ上での ボタンのクリック FaaS (Function as a Service) BaaS (Backend as a Service)などなど データベース メッセージング 分析系, AI, その他 New サービスに対する設定 ユーザー・データ ・・・ ランタイム (⾮常駐プロセス) Endpoint, Controller などの制御基盤 関数A 関数B New 実⾏条件 ⽣成 関数から呼び出し : FaaS利⽤者が設定/⽤意するもの
  • 9. © 2017 IBM Corporation 9 IBM Bluemix www.bluemix.net FaaSでの実装: データの処理を意識した開発 q 「データをどう処理するか」の考え⽅で関数を開発していく ¦ 「状態」は⼊出⼒されるデータ、「処理」は関数と分離して設計/開発を⾏う ¦ 関数の書き⽅や利⽤できるライブラリーはFaaSの提供プロバイダーに依存する q 利⽤する⾔語の関数の書き⽅がわかっていれば、誰でも簡単に始められる ¦ データをどう処理するか、の⼿続きをまずは純粋に実装すれば簡単に動くものができる ⼊出⼒を必須とした関数を積み重ねてデータを処理していくスタイルで開発 データ データ’ データ’’ 関数 関数’ Twitter のつぶやき つぶやき を整形 整形された つぶやきデータ 感情分析 (Watson Tone Analyzer) 感情タグを含む Twitterつぶやき ⼊⼒ ⼊⼒出⼒ 出⼒ 例) Twitterデータのエンリッチメント処理
  • 10. © 2017 IBM Corporation 10 IBM Bluemix www.bluemix.net サーバーレス/FaaSって何が嬉しいの? ランニング・コスト ランニング・コスト, スケーリング, インテグレーションの3点にメリットがある インテグレーションスケーリング 常時プロセスを稼働させないと いけないため、アイドル時も課⾦ 従来 (常駐型) 処理を実⾏したぶんだけの課⾦ 100ms単位で切り上げで処理時間を計算 サーバーレス/FaaS 従来 (常駐型) サーバーレス/FaaS 従来 (常駐型) サーバーレス/FaaS 拡張のタイミング/トリガーの検討が必要 拡張にかかる時間が数⼗秒 ~ 数分 拡張が前提の仕組みで、イベント発⽣ ごとにスケーリングするので考慮不要 提供されているサービスからデータを 受け取る仕組みを提供 連携したいサービスに合わせて インターフェースを実装する必要がある 1ヶ⽉ 2ヶ⽉ X万円 × 3ヶ⽉… … 関数 300秒 3ヶ⽉ 1ヶ⽉ 2ヶ⽉ …3ヶ⽉ 900秒 600秒New … New New ・・・ スケーリングの条件? 何台が適切? 呼び出しに依存し スケーリング 各⽉実⾏した秒数分の課⾦ 設定のみ
  • 11. © 2017 IBM Corporation 11 IBM Bluemix www.bluemix.net IBM OpenWhisk IBM Bluemix Platformが提供する、FaaS (Function as a Service)実⾏環境 ※ 2017年6⽉時点、⽶国南部地域でのみ提供されています Docker (その他⾔語)Node.js (v6) Python (v3/v2) Swift (v3) JavaTM (v8) 開発に利⽤できる⾔語: 5種類 サービスとの連携 4種類のデフォルト・ランタイムと⾃由に実装できるDockerを選択できる Bluemix内外のサービスとの連携するための標準パーツが事前に定義 ドキュメント指向データベース Cloudant NoSQL Database メッセージング基盤 IBM MessageHub (Kafka) 翻訳API Watson Translator ⾳声認識/発話 Watson Speech to Text Text to Speech 気象情報/天気予報API Weather Company Data Slack GitHub モバイルへのPush通知 Push Notification Full Managedな基盤 ü 開発者の責任領域は⾃⾝で開発する関数のコードと実⾏履歴の管理のみ ü 専⽤のコマンドライン・インターフェース or GUIで簡単セットアップ/操作 オープンソースとして公開 FaaSの仕組みをオンプレなど、別の場所にも導⼊できる OpenWhiskの制御基盤の運⽤管理はIBMにお任せ
  • 12. © 2017 IBM Corporation 12 IBM Bluemix www.bluemix.net OpenWhiskはオープンな仕様として外部に公開中 [引⽤] http://openwhisk.org/ [引⽤] https://github.com/apache/incubator-openwhisk Apache OpenWhiskとしてApache License V2.0で公開
  • 13. © 2017 IBM Corporation 13 IBM Bluemix www.bluemix.net OpenWhiskのアーキテクチャー Dockerをベースに構成され、関数(アクション)はコンテナー上で実⾏される *詳細はdeveloperWorks - IBM Bluemix OpenWhisk: What’s Under the Hood from a Customer Point of Viewを参照 CLI iOS SDK UI Controller NGINX Cloudant or CouchDB CONSUL Registrator Activator Invoker ActionAction APIエンドポイントとして 動くプロキシー API呼び出しの制御と管理 認証情報や資産(コード等) のデータを保管 DNSの提供 Slave (ActivatorとInvoker)の ヘルス・ステータスを保持 コンテナーをConsulに ⾃動登録/削除 Apache Kafka Zookeeper トリガーに合わせて アクションを呼び出す Controller, Activator, Invoker間 をつなぐメッセージ・バス コンテナー・プールの管理 とアクションの実⾏ コンテナー上で関数を実⾏ ※ OpenrestyベースのAPI Gatewayコンポーネントを提供 IBM OpenWhiskの場合はAPI Connectが4⽉より提供 API Gateway
  • 14. © 2017 IBM Corporation 14 IBM Bluemix www.bluemix.net OpenWhiskの⽤語 ルール アクション シーケンス フィード トリガー イベント 結果 (Result) イベントを 受け取る 時間経過, DB更新 などなど 受け取ったイベントに 対し、処理対象を指定 トリガーとアクション を紐付ける アクション同⼠を 連続でつなぐ データを処理する関数 Wanted
  • 15. © 2017 IBM Corporation 15 IBM Bluemix www.bluemix.net 2. IBM OpenWhiskでの開発 この章で触れる内容 ü IBM OpenWhiskでの開発の進め⽅
  • 16. © 2017 IBM Corporation 16 IBM Bluemix www.bluemix.net OpenWhiskでの開発の進め⽅ アクション (関数) の作成 アクションの⾃動化設定 テスト / 動作確認 2. ルールに従ってコード作成 ⾔語: Node.js メモリー : 256MB タイムアウト: 60秒 1. アクションの定義 3. シーケンスの作成 (オプション) ( ) or or トリガー & ルールの作成 API Gatewayの設定 API Connectの設定 { API } ü メソッド/パス ü APIキー ü レート制限 ü CORS ü XXが起きたらACTを呼び出す ü メソッド/パス ü 認証 ü アセンブル ü APIプラン など テスト実⾏とモニタリング APIのアクセス確認 実⾏!! { API } 実⾏!!GET https://~ GET https://~ APIのアクセス確認 Automated Web API (simplified) Web API (complicated)
  • 17. © 2017 IBM Corporation 17 IBM Bluemix www.bluemix.net OpenWhiskでの開発に使うインターフェース 以下の2種類のインターフェースをベースにOpenWhiskで開発を進める 1. Webブラウザー 2. CLI (テキスト・エディター+wskコマンド) 簡単に始めて、テストができる ⾃動化、細かく設定し動かせる
  • 18. © 2017 IBM Corporation 18 IBM Bluemix www.bluemix.net 実装例: お天気予報ボットを作ってみる Push Message LINEやSlack ⼣⽅16:00に通知 時間になったら実⾏ 毎⽇16:00に呼び出しT 天気予報の情報を取得 提供のアクションを使⽤A 取得した天気予報情報を加⼯ 通知可能な形に変換A LINE/Slackに通知 仕様に合わせて通知A S このような形でユーザーに通知 T : トリガーA : アクション S : シーケンス R : ルール R
  • 19. © 2017 IBM Corporation 19 IBM Bluemix www.bluemix.net デモに必要なもの q Bluemixのアカウント [必須] ¦ [⼿順] IBM Bluemixフリートライアルアカウント作成⼿順 q Weather Company Data for Bluemixサービスのデプロイ [必須] ¦ ⽶国南部地域でスペースを作り、カタログの「データ & 分析」から⽤意 qLINE or Slackのアカウント [お好きに] ¦ LINE: nLINE Business Centerアカウントを⽤意 ¦ Slack: nIncoming Webhookの設定がわかれば簡単にセットアップできる Web ( )
  • 20. © 2017 IBM Corporation 20 IBM Bluemix www.bluemix.net OpenWhiskのWebコンソールから開発開始!! トップ画⾯から 開発画⾯へ クリック
  • 21. © 2017 IBM Corporation 21 IBM Bluemix www.bluemix.net ( ) 1 23 1BN M ( .0 1 ( ) ( 5 1 6N : ( ) 1. アクションの定義 Step1. 「アクションの作成」をクリック Step2. アクション名や⾔語(実⾏ランタイム)などを指定し、作成 LINE/Slack
  • 22. © 2017 IBM Corporation 22 IBM Bluemix www.bluemix.net アクション(関数)の定義の仕⽅は2種類ある Web アクションスタンダード・アクション ü データ処理のためのアクション ü 出⼒はJSONフォーマットで返却 ü Web応答を返すためのアクション ü コンテンツやヘッダーの⽣成が可能 ü 認証なしで実⾏できるURLを提供 JSON形式のデータ 出⼒ { "result": "ok", "score": "1.0" } アクション { "type": "car", "color": "red" } JSON形式のデータ ⼊⼒ HTML </> アクション 出⼒ HTTP リクエスト HEADER 1 HEADER 2 APIEndpoint レスポンス データ処理 応答のため の処理 データ処理⽤のスタンダード(標準)とWeb応答を返すためのWebの2種類が提供 ⼀⽅的な通知なので スタンダードで!!
  • 23. © 2017 IBM Corporation 23 IBM Bluemix www.bluemix.net ( ) 1 23 1BN M ( .0 1 ( ) ( 5 1 6N : ( ) 2. ルールにしたがってコードを作成 Step1. エディター画⾯で関数を作成 Step2. 関数ができたら「ライブにする」で保存 Step3. 「このアクションを実⾏」で動作確認 LINE/Slack
  • 24. © 2017 IBM Corporation 24 IBM Bluemix www.bluemix.net アクションの実装ルール def main(dist): : key = dist.key : : return {"result": "OK", ・・・} 関数 (コード断⽚){ "key": "sample" "msg": "test", : } ⼊⼒: JSON形式のデータ { "result": "OK" : } 出⼒: JSON形式のデータ ルール1. main関数が呼び出されるので*1 main関数に必要な処理を記載 ルール2. ⼊⼒は必ずJSON形式 データ構造は⾃由に指定可能 ルール3. 出⼒は必ずJSON形式 後続の処理に合わせて定義 *1) wskコマンドラインでアクションを作成する場合は別名の関数を呼び出しに指定することも可能 ⼊⼒/出⼒のデータ・フォーマットに気をつけて、各⾔語に合わせて関数を作成 デフォルト・パラメーター 設定もできる "error"は予約語なので 使わない Python
  • 25. © 2017 IBM Corporation 25 IBM Bluemix www.bluemix.net ( ) 1 23 1BN M ( .0 1 ( ) ( 5 1 6N : ( ) 3. シーケンスの作成 (オプション) (1/4) Step1. 「パブリック・パッケージの参照」を選択 Step2. Weather Dataパッケージのforecastアクションを選択 アクションを選択 WEATHERを選択 インスタンスを指定 認証情報を紐付ける Step3. 「シーケンスにリンク」をクリック LINE/Slack
  • 26. © 2017 IBM Corporation 26 IBM Bluemix www.bluemix.net ( ) 1 23 1BN M ( .0 1 ( ) ( 5 1 6N : ( ) 3. シーケンスの作成 (オプション) (2/4) Step4. つなげたいアクションを選択 Step5. 「シーケンスに追加」をクリック アクションを選択 LINE/Slack
  • 27. © 2017 IBM Corporation 27 IBM Bluemix www.bluemix.net ( ) 1 23 1BN M ( .0 1 ( ) ( 5 1 6N : ( ) 3. シーケンスの作成 (オプション) (3/4) Step6. 設定したシーケンスのアクション実⾏順を確認 Step7. アクションを追加するなら「拡張」を選択 Weather Dataの Forecastアクションを実⾏ Forecastアクション後 のデータを加⼯ LINE/Slack
  • 28. © 2017 IBM Corporation 28 IBM Bluemix www.bluemix.net ( ) 1 23 1BN M ( .0 1 ( ) ( 5 1 6N : ( ) 3. シーケンスの作成 (オプション) (4/4) Step8. シーケンス作成完了後、「これは適切なようです」をクリック Step9. シーケンス名を指定し、「アクション・シーケンスの保存」をクリック 何の処理か わかるように命名 通知のための アクションを追加 LINE/Slack
  • 29. © 2017 IBM Corporation 29 IBM Bluemix www.bluemix.net シーケンス実装のルール: パラメーターの受け渡し 前のアクションの出⼒がそのまま次に実⾏するアクションの⼊⼒になるため注意が必要 function (params){ return {"message":"Action1: " + params.message} } {"name":"John"} "John" {"message":" Action1: John"} アクション1の出⼒ アクション1 アクション1への⼊⼒ アクション1のみ実⾏した場合 アクション1の出⼒ アクション1, アクション2の順で実⾏する場合 function (params){ return {"message":"Action1: " + params.name} } {"name":"John"} {"error": "The action did not return a dictionary."} function (params){ return {"message":"Action2: " + params.arg} } アクション2の出⼒ アクション1の出⼒ アクション1への⼊⼒ アクション1 "arg"キーは 指定されていない アクション2が 実⾏エラーとなる アクション2
  • 30. © 2017 IBM Corporation 30 IBM Bluemix www.bluemix.net 4. トリガー & ルールの作成 (1/4) Step1. 実⾏したいシーケンスを選択し、「⾃動化」をクリック ü & Step2. 「PERIODIC」を選択し、「新規アラーム」をクリック / !! 16:00
  • 31. © 2017 IBM Corporation 31 IBM Bluemix www.bluemix.net 4. トリガー & ルールの作成 (2/4) Step3. 実⾏したい時刻の条件や実⾏時の⼊⼒値、トリガー名を指定 ü & 1⽇に1回なら DAILYを選択 実⾏したい時刻を UTCで指定 トリガー名は設定が わかるように指定* *) 2017年6⽉の時点でトリガーの設定の参照/変更はできない Step4. 「定期的なトリガーの作成」をクリック / !! 16:00
  • 32. © 2017 IBM Corporation 32 IBM Bluemix www.bluemix.net 4. トリガー & ルールの作成 (3/4) Step5. 作成したアラームが選択し、「次へ」をクリック ü & Step6. 問題がなければ「これは適切なようです」をクリック / !! 16:00
  • 33. © 2017 IBM Corporation 33 IBM Bluemix www.bluemix.net 4. トリガー & ルールの作成 (4/4) Step7. ルール名を⼊⼒し、「ルールの保存」をクリック ü & / !! 以上で設定完了!! あとは時間まで待つか テスト実⾏して動作確認 16:00 16:00 LINE/Slack
  • 34. © 2017 IBM Corporation 34 IBM Bluemix www.bluemix.net テスト実⾏とモニタリング Step1. 作成したトリガーの「 」アイコンをクリック ü & / !! Step2. 必要に応じてJSON⼊⼒値を指定し,「この値で実⾏」をクリック
  • 35. © 2017 IBM Corporation 35 IBM Bluemix www.bluemix.net テスト実⾏とモニタリング Step3. 実⾏したアクションの結果は「モニター」画⾯で参照できる ü & / !! 直近200件までの アクティビティーを表⽰
  • 36. © 2017 IBM Corporation 36 IBM Bluemix www.bluemix.net 以上、通知の実装は完了!!
  • 37. © 2017 IBM Corporation 37 IBM Bluemix www.bluemix.net API Gateway機能によるWeb API公開 組み込みのAPI Gatewayを利⽤し、セキュアにアクションをAPI公開する機能を提供 API公開のための設定 API公開後の管理 どのアクションを どのメソッドで呼び出すか指定 APIキーによる認可の有無や APIのレート制約を指定 APIドキュメントの⽣成/公開 APIの利⽤状況の確認
  • 38. © 2017 IBM Corporation 38 IBM Bluemix www.bluemix.net API公開機能を利⽤した実装例 送信 応答 (200 ok) APIGateway Signatureの確認 送信データの妥当性確認A MessageHubに送信 メッセージをパブリッシュA S LINEにReply Message Reply Tokenを利⽤した応答A Webアクション(Raw HTTP)で構成 メッセージ送信 アクションの呼び出し T MessageHubからサブスクライブ MessageHubで ⾮同期連携 メッセージ送信 Web ( )
  • 39. © 2017 IBM Corporation 39 IBM Bluemix www.bluemix.net API Connectを活⽤した実装 Slack Marvel Developer API Slash Command JSONフォーマット に加⼯ 「Spider-Man」と聞くと画像をくれる 送信 APIConnect アクションの呼び出し 画像の送信 Web ( )
  • 40. © 2017 IBM Corporation 40 IBM Bluemix www.bluemix.net IBM OpenWhiskの利⽤をはじめるユースケース 以下の代表的なユースケースに該当するなら、OpenWhiskの適⽤を検討してみる スケジュール実⾏Webシステムのバックエンド モバイルのバックエンド データ処理 (クレンジング, エンリッチメント) Cognitiveなサービスを活⽤したデータ処理 チャットボットのバックエンド メッセージ基盤を利⽤したデータ処理 センサー・デバイスからの不定期実⾏ バックエンド (Backend) データ処理 (Data Processing) ⾃動化 (Automated) まずはスケジュール実⾏や Webシステムのバックエンドなど 実装が容易なものから利⽤を検討
  • 41. © 2017 IBM Corporation 41 IBM Bluemix www.bluemix.net OpenWhisk (サーバーレス)に向かないケース q 求められる応答時間がシビアな処理 (ms単位) ¦ 処理時間はプロセスの起動時間も含まれる、コールドスタートは特に遅い n 起動時間はばらつきが⽣じやすく、それゆえ安定した応答時間は保証できない n (経験的に)定期的に処理を呼び出す、余計なパッケージは追加しない、などを意識 q ⻑時間かかる/延々とかかる処理 ¦ ⽬安として5分以上かかる処理は避ける n OpenWhiskのアクション実⾏タイムアウトの最⼤値は5分 (300秒) n 機械学習のトレーニング処理やビデオ・ストリーミングは厳しい l 餅は餅屋でそれ⽤の基盤/サービスを使うのが適切 q ⼤量データを裁く処理 ¦ 1度に1GB以上を越える処理はまず避ける n アクションの割り当てメモリーサイズの最⼤は512MB n オンメモリーにデータを載せすぎるとLinuxのOoM Killerの餌⾷に・・・ 要注意!!
  • 42. © 2017 IBM Corporation 42 IBM Bluemix www.bluemix.net q 以下の内容をお伝えいたしました 本セッションのまとめ サーバーレスとは、「⾮常駐型プロセス」を必要なときに呼び出し、実⾏する システム・アーキテクチャーだ1 IBM OpenWhiskとは、IBMが提供するFull ManagedなFaaS実⾏環境だ2 IBM OpenWhiskを利⽤したシステム開発 の進め⽅は右図の通り3 1. IBM OpenWhisk概要 2. IBM OpenWhiskでの開発 IBM OpenWhiskはP.40の代表的なユース ケースに該当するなら利⽤を検討4 ( ) / & Rd m 1 G stw &()0 i r l ) aeu W e c fW eu ( ) lw W 3/ . W 3/ CC W ü s jm of ü 3/ ü y l ü 2 5 ü M NP 6 X O ü s jm of ü ü p ü 3/ T fl Stniw b 3/W a f !! !!GET https://~ GET https://~ 3/W a f I B : 3/ G B A : 3/ B A
  • 43. © 2017 IBM Corporation 43 IBM Bluemix www.bluemix.net サンプルも提供されていますので、試してみてください q 以下のリンクにチュートリアルやデモ・サンプルが公開 ¦ https://github.com/apache/incubator-openwhisk-external-resources#applications 例: OpenWhisk Dark Vision 動画をフレームに分けて Visual Recognitionで処理 OpenWhiskとWatson Visual Recognitionを活⽤した動画/静⽌画の分析Webアプリケーション・サンプル デモ https://openwhisk-darkvision.mybluemix.net/#!/ ソースコード https://github.com/IBM-Bluemix/openwhisk-darkvisionapp
  • 44. © 2017 IBM Corporation 44 IBM Bluemix www.bluemix.net
  • 45. © 2017 IBM Corporation 45 IBM Bluemix www.bluemix.net よくある質問: あれ、Node-REDと似てない? より直感的にコーディングレスに開発できる反⾯、複雑化や運⽤に配慮が必要 Node-RED: デバイス, API, オンライン・サービスのコーディネーション・ツール (http://nodered.org/) ブラウザ・ベースのUIで処理フローを作成し、直接実⾏環境にデプロイ 冗⻑化の実装: 従来の常駐プロセス型なので冗⻑化の⽅法は検討 - HTTP/HTTPS: Load Balancerを別途⽤意 - MQTT: KafkaのConsumer Groupの仕組みを活⽤ ヒープの監視は重要 - フローが複雑/多くなれば、1プロセスが消費するメモリーは増加 ユーザーは基盤の 冗⻑性を意識せず開発 フローの複雑化: 適当に作るとスパゲッティー状態に・・・ - ⽬からウロコ!Node-REDのデザインパターン10選を参考にブラッシュアップ ⾔語にこだわらなくて良い 1つの関数でシンプルに実装 関数の単位でメモリー割当て データ量次第だがOoMは起きにくい