OpenWhisk

HIDEAKI TOKIDA

 

Nippon Information and Communication Corp.

 

  • OpenWhisk
  • Ansible
  • Docker
  • (Swift)

Twitter:  @tokida

FB:  hideaki.tokida

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

どこで動くのか

  1. OpenSource

  2. 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