fn project爆誕

Post on 21-Jan-2018

282 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Fn Project 爆誕!!

@hhiroshell

自己紹介

早川 博(はやかわ ひろし)

@hhiroshell

• 日本オラクル 所属

• Pre-Sales Engineer / Tech Evangelist (new!)

• Java SE/EE, Microservices/DevOps

OSSやってもいいって!\(^o^)/

Fn Projecthttp://fnprojcet.io/

→ サーバーレス・フレームワーク

• Easy !• 全ての操作はシンプルなCLI。考え抜かれた開発者エクスペリエンス

• (このあとデモします。)

Open & Easy• Open !

Open Source (Apache 2.0)

どこでも動く• ラップトップ、サーバー、クラウド

マルチ言語サポート• Go, Java, Node, PHP,

Python, Ruby, Rust

FunctionFunction

Function

Function

FunctionFunction

Function

Function

Fn Serverfn-app/hello-node

fn-app/hello-java

構成• Fn Server上にFunction

が乗るDinD(Docker in Docker)構成

• トリガーがキックされる度に対応するFunctionのコンテナを立ち上げる

• コンテナ群の管理はCLIが隠蔽

Demo

• 複数のファンクションの連結を手続き的記述で実現

Fn Flow

※Flowは現在Javaのみ対応。随時対応言語を増やしていくとのこと

Flow fl = Flows.currentFlow(); FlowFuture<String> f1 = fl.supply(() -> { try { Thread.sleep((long)(Math.random() * 5000)); } catch(Exception e) {} return "Hello"; }); FlowFuture<String> f2 = fl.supply(() -> { try { Thread.sleep((long)(Math.random() * 5000)); } catch(Exception e) {} return "World"; }); fl.anyOf(f1, f2).thenApply(result -> ((String)result).toUpperCase());

Fn Flow• 並列・非同期処理

Flow fl = Flows.currentFlow();FlowFuture<String> f1 = fl.supply(() -> {

if (System.currentTimeMillis() % 2L == 0L) {throw new RuntimeException("Error in stage");

}return 100;

}).handle((val, err) -> {if (err != null){

return "An error occurred in this function";} else {

return "The result was good: " + val;}

});

Fn Flow• エラーハンドリング

• 複数のファンクションの連結を手続き的記述で実現

• 何がいいの?テストしやすいデバッグしやすい

Fn Flow

読んで理解しやすいエラー処理で死なない

Fn Projecthttp://fnprojcet.io/

→ Open & Easy

おまけ

手を動かしながら学ぶ!

「Kubernetes ときどき Serverless」-- CNDJP第1回 --

勉強会します!

http://bit.ly/cndjp1

Fin.

top related