狠狠撸

狠狠撸Share a Scribd company logo
Fn Project 爆誕!!
@hhiroshell
自己紹介
早川 博(はやかわ ひろし)
@hhiroshell
? 日本オラクル 所属
? Pre-Sales Engineer / Tech Evangelist (new!)
? Java SE/EE, Microservices/DevOps
OSSやってもいいって!\(^o^)/
Fn Project
http://fnprojcet.io/
→ サーバーレス?フレームワーク
? Easy !
? 全ての操作はシンプルなCLI。考え抜かれた開発者エクスペリエンス
? (このあとデモします。)
Open & Easy
? Open !
?Open Source (Apache 2.0)
?どこでも動く
? ラップトップ、サーバー、クラウド
?マルチ言語サポート
? Go, Java, Node, PHP,
Python, Ruby, Rust
FunctionFunction
Functio
n
Functio
n
FunctionFunction
Functio
n
Functio
n
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 Project
http://fnprojcet.io/
→ Open & Easy
おまけ
手を動かしながら学ぶ!
「Kubernetes ときどき Serverless」-- CNDJP第1回 --
勉強会します!
http://bit.ly/cndjp1
Fn project爆誕
Fin.

More Related Content

Fn project爆誕