Nippon Information and Communication Corp.
Twitter: @tokida
FB:
OpenWhisk is a cloud-first distributed event-based programming service.
OSの抽象化
Hardwareの抽象化
ランタイムの抽象化
新しい概念
言語・ランタイムの抽象化
/**
* Hello world as an OpenWhisk action.
*/
function main(params) {
var name = params.name || 'World';
return {payload: 'Hello, ' + name + '!'};
}
$ wsk action create hello hello.js
$ wsk action invoke hello --blocking --result
{
"payload": "Hello, World!"
}
$ wsk action invoke hello --blocking --result --param name "IBM Cloud Community"
{
"payload": "Hello, IBM Cloud Community!"
}
OpenSource版は機能が次々とリリースされているので新しいモノにチャレンジしたい場合にはオススメ。そして何よりどこでも環境を利用することが出来る(AWSでもAzureでも動かせる)
BluemixのアカウントでOpenWhiskが利用可能。専用のWebUIが用意されており独自の拡張もされている。すぐに利用してみたい場合にはBluemix版がオススメ。現在β期間なので無料!
T
A
R
T
「LocationUpdate」というTrigerを作成した場合、Fire(発火)という処理を行うことでLocationUpdateに「イベント」が発生したことを伝える事が出来る。
Alarmフィードは、定期的にTriggerをFire(発火)させることが出来るCron機能のFeed。他にもCloudantのFeedやGithubのFeedなどが用意されている。
色々な「サービス」で発生する変化をTriggerに伝えることが出来る。Feedが沢山出てくるとOpenWhiskももっと面白くなる
wsk trigger create everyHours --feed /whisk.system/alarms/alarm -p cron '0 10,15 * * * *'
Alarmで指定した時刻になると "everyHours"というTriggerが「自動的」に発火(Fire)する
A
最初のサンプルのHello.jsのような単体の処理をActionとよび定義します。OpenWhiskではこのActionを積み重ねて「やりたいこと」を実行していきます。
JavaScript
JavaScript 6
Swift
Swift 3
Python
Docker
Java (OSS)
import sys
def main(dict):
if 'message' in dict:
name = dict['message']
else:
name = 'stranger'
greeting = 'Hello ' + name + '!'
print(greeting)
return {'greeting':greeting}
func main(args: [String:Any]) -> [String:Any] {
if let message = args["message"] as? String {
return [ "greeting" : "Hello \(message)!" ]
} else {
return [ "greeting" : "Hello stranger!" ]
}
}
OpenWhiskではActionを複数繋げて新しい処理を作る事が出来ます。この機能により生産性を高める事が出来ます。
B1
A1
A2
A3
:=
→
→
R
イベントの発生とイベントの処理の関係性を作るのがruleです。RULEを作ることにより、駆動(発火)されたイベントが実際の処理を行うことが出来ます。
T
A
RULE
一般的な言語で言えばライブラリのようなかたちで提供されています。Code上は「Catalog」と言われています。
https://github.com/openwhisk/openwhisk/tree/master/catalog
https://github.com/openwhisk/openwhisk/blob/master/docs/catalog.md
https://developer.ibm.com/bluemix/2016/05/02/static-website-generation-with-jekyll-and-openwhisk/
https://github.com/IBM-Bluemix/openwhisk-darkvisionapp
https://github.com/IBM-Bluemix/openwhisk-visionapp
NODE-REDの"フロー"がnodejsなくても動く感じ\(^o^)/
http://softlayer.connpass.com/event/34524/
2日間ビジネスデー・コミュニティデーとして、IoT、データ、DevOps、Bluemix、SoftLayerの最新情報をお届けします。