OpenWhisk
HIDEAKI TOKIDA
Nippon Information and Communication Corp.
- OpenWhisk
- Ansible
- Docker
- (Swift)
Twitter: @tokida
FB:
OpenWHISK ってなに?
OpenWhiskを知っていますか?
Project OpenWhisk
OpenWhisk is a cloud-first distributed event-based programming service.
抽象化
OSの抽象化
Hardwareの抽象化
ランタイムの抽象化
抽象化
新しい概念
言語・ランタイムの抽象化
これまでは!?
-
HW(VM)を用意しOS・MWを構築しその他も諸々NW/Storageを設定してアプリケーションを入れて動かす(VM時代)
これまでは!?
-
実行環境を用意し特定の環境で動くアプリケーションを作成し環境毎デプロイ(Container・PaaS時代)
OpenWhiskでは
実装するのはCodeのみ
/**
* Hello world as an OpenWhisk action.
*/
function main(params) {
var name = params.name || 'World';
return {payload: 'Hello, ' + name + '!'};
}
実行環境にCodeを登録
$ wsk action create hello hello.js
実行(invoke)する
$ wsk action invoke hello --blocking --result
{
"payload": "Hello, World!"
}
引数を付けてInvoke
$ wsk action invoke hello --blocking --result --param name "IBM Cloud Community"
{
"payload": "Hello, IBM Cloud Community!"
}
実行(invoke)方法
- RESTful API
- iOS SDK
- wsk cli
ServerLess
- サーバ/ランタイム管理が不要
- リソース管理が不要
- 実行時のみコストが発生(現在無料)
ServerLess
まさに
the Cloud Native
どこで動くのか
-
OpenSource
-
IBM Bluemix (PaaS)
OpenSource
https://github.com/openwhisk/
OpenSource版は機能が次々とリリースされているので新しいモノにチャレンジしたい場合にはオススメ。そして何よりどこでも環境を利用することが出来る(AWSでもAzureでも動かせる)
Bluemix
https://new-console.ng.bluemix.net/openwhisk/
BluemixのアカウントでOpenWhiskが利用可能。専用のWebUIが用意されており独自の拡張もされている。すぐに利用してみたい場合にはBluemix版がオススメ。現在β期間なので無料!
Model
T
A
R
Triger
T
Trigerとは
Trigerは、イベントを「駆動」する枠
「LocationUpdate」というTrigerを作成した場合、Fire(発火)という処理を行うことでLocationUpdateに「イベント」が発生したことを伝える事が出来る。
Feed
Feedは、イベントの自動的な発生源
Alarmフィードは、定期的にTriggerをFire(発火)させることが出来るCron機能のFeed。他にもCloudantのFeedやGithubのFeedなどが用意されている。
色々な「サービス」で発生する変化をTriggerに伝えることが出来る。Feedが沢山出てくるとOpenWhiskももっと面白くなる
Alarmを利用したTrigger
wsk trigger create everyHours --feed /whisk.system/alarms/alarm -p cron '0 10,15 * * * *'
Alarmで指定した時刻になると "everyHours"というTriggerが「自動的」に発火(Fire)する
ACTION
A
ACTIONとは
ステートレスな小さな関数(処理)
最初のサンプルのHello.jsのような単体の処理をActionとよび定義します。OpenWhiskではこのActionを積み重ねて「やりたいこと」を実行していきます。
PROGRAMING
OpenWhiskでサポートされる言語
JavaScript
JavaScript 6
Swift
Swift 3
Python
Docker
Java (OSS)
色々な種類の言語
Python
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!" ]
}
}
SWIFT3
Sequence
ACTIONを繋げて新しいACTIONを作る
OpenWhiskではActionを複数繋げて新しい処理を作る事が出来ます。この機能により生産性を高める事が出来ます。
B1
A1
A2
A3
:=
→
→
RULE
R
RULEとは
TriggerとActionを繋げる規則(rule)
イベントの発生とイベントの処理の関係性を作るのがruleです。RULEを作ることにより、駆動(発火)されたイベントが実際の処理を行うことが出来ます。
T
A
RULE
Package
Packageとは
複数のActionやFeedをまとめたもの
一般的な言語で言えばライブラリのようなかたちで提供されています。Code上は「Catalog」と言われています。
https://github.com/openwhisk/openwhisk/tree/master/catalog
https://github.com/openwhisk/openwhisk/blob/master/docs/catalog.md
Cloudant Package
Sample SITE
Static website generation with Jekyll, Object Storage and OpenWhisk in Bluemix
https://developer.ibm.com/bluemix/2016/05/02/static-website-generation-with-jekyll-and-openwhisk/
Dark Vision App - discover dark data in videos with IBM Watson and IBM Bluemix OpenWhisk
https://github.com/IBM-Bluemix/openwhisk-darkvisionapp
Vision App - a sample iOS app for image tagging and face detection built with IBM Bluemix OpenWhisk
https://github.com/IBM-Bluemix/openwhisk-visionapp
まとめ
Whats New!? Bluemix
- Support Action
- JavaScript 6
- Swift3
- Python
- WebUI
- OpenWhisk Editor
「ステートフルな処理」as Service
処理と処理を繋げることでやりたいことを実現する
NODE-REDの"フロー"がnodejsなくても動く感じ\(^o^)/
OSSなのでOpenWhiskが動く時代がくるかもしれない
お知らせ
Open Cloud Innovation
2016.9.16-17
http://softlayer.connpass.com/event/34524/
IoTトラック出演者決定!
2日間ビジネスデー・コミュニティデーとして、IoT、データ、DevOps、Bluemix、SoftLayerの最新情報をお届けします。
Thank you
About OpenWhisk 2016.06
By Hideaki Tokida
About OpenWhisk 2016.06
- 2,397