Oracle and/or its affiliates 4 Microservice Microservice Microservice B Microservice C Microservice Microservice Microservice A Microservice Microservice Microservice 複数の独立した Microserviceを 呼び出した結果を元に レスポンスを作成 A B C A B C メッセージの送信先の 負荷を考慮しながら効 率的に送信
public class Test { public void someFunction(int x, Function<Integer, Double> f){ System.out.println(f.apply(x)); } public void test(){ class MySqrt implements Function<Integer, Double> { // local innter class @Override public Double apply(Integer x){ return Math.sqrt(x); } } someFunction(2, new MySqrt()); someFunction(2, new Function<Integer, Double>(){ // anonymous inner class @Override public Double apply(Integer x){ return Math.sqrt(x); } }); someFunction(2, Math::sqrt); // lambda with method reference someFunction(2, x -> Math.pow(x, 3)); // cube } public static void main(String[] args){ new Test().test(); } } クラスをまず定義してから、 そのインスタンスを引数に 匿名インナークラスを使って インスタンス作成時に定義 ラムダ式&メソッド参照ですっきり & 異なる実装も同様に簡潔に書ける y = f(x) の x と f を 引数で受け取って y を出力
(github.com/oracle/helidon) • 2019/02/15 に1.0.0をリリース • 現在 バージョン 2.1.0, MicroProfile 3.3準拠 マイクロサービスを開発するためのJavaライブラリの集合体 JVM上の単体アプリケーションとして動作 従来からの一般的なツール・基盤で開発&デプロイ可能 • Java SE, Maven/Gradle, Docker, Kubernetes, etc. ※ Helidonは ギリシア語でつばめ(swallow)を意味します Docker Image Kubernetes Helidon jars OS base image Library jars App classes Pod Pod Pod Replica Set Java SE runtime
35 MP Config Metrics Health Check Fault Tolerance JWT Auth JAX-RS CDI JSON-P / B Open API Open Tracing REST Client SE SE SE JPA gRPC JTA SE + MicroProfile = Reactive Streams Operators Reactive Streams Messaging Kafka Connector experimental SE SE
Messagingを使う キャッシュ+非同期・パターン → アーキテクチャ修正 async-eshop-mall 【Mall】 PRODUCT INVENTORY ORDER ORDER_ITEM redis-mall PRODUCT INVENTORY async-eshop-cart 【Cart】 redis-cart PRODUCT INVENTORY CART CART_ITEM Reactive Messaging Reactive Messaging P P S S S 55 P REST REST REST