Download - Fn project爆誕
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.