├── SUMMARY.md ├── chapter1.md ├── .gitignore └── README.md /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | * [Introduction](README.md) 4 | 5 | -------------------------------------------------------------------------------- /chapter1.md: -------------------------------------------------------------------------------- 1 | # First Chapter 2 | 3 | GitBook allows you to organize your book into chapters, each chapter is stored in a separate file like this one. 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node rules: 2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 3 | .grunt 4 | 5 | ## Dependency directory 6 | ## Commenting this out is preferred by some people, see 7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git 8 | node_modules 9 | 10 | # Book build output 11 | _book 12 | 13 | # eBook build output 14 | *.epub 15 | *.mobi 16 | *.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Cloud Native Java 2 | 3 | This is a collection of awesome frameworks for writing Cloud Native Java. 4 | 5 | ## Backend Service 6 | 7 | Frameworks to help you write backend services quickly. 8 | 9 | ### RESTFul 10 | 11 | * [Spring Boot](https://spring.io/guides/gs/rest-service/) 12 | * JAX-RS 13 | * [Jersey](https://jersey.github.io/) \([example](https://jersey.github.io/documentation/latest/jaxrs-resources.html)\) 14 | * [Wildfly Swarm](http://wildfly-swarm.io/) \([example](https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/master/jaxrs/jaxrs-cdi)\) 15 | * [Akka HTTP](http://doc.akka.io/docs/akka-http/current/scala/http/) \([example](http://doc.akka.io/docs/akka-http/current/scala/http/routing-dsl/index.html)\) 16 | * [Dropwizard](http://www.dropwizard.io/) \([example](http://www.dropwizard.io/1.1.0/docs/getting-started.html#creating-a-resource-class)\) 17 | * [Spark](http://sparkjava.com/) \([example](http://sparkjava.com/)\) 18 | * [Apollo](https://github.com/spotify/apollo) \([example](https://github.com/spotify/apollo/tree/master/examples/calculator)\) 19 | 20 | ### RPC 21 | 22 | * [gRPC](https://github.com/grpc/grpc-java) \([example](https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/helloworld)\) 23 | * [Avro](http://avro.apache.org/) \([example](https://github.com/phunt/avro-rpc-quickstart)\) 24 | * [Thrift](https://thrift.apache.org/) \([example](https://thrift.apache.org/tutorial/java)\) 25 | 26 | ## Metrics 27 | 28 | Frameworks to expose application metrics: 29 | 30 | * [Spring Boot Actuator](https://github.com/spring-projects/spring-boot/tree/master/spring-boot-actuator) 31 | 32 | * [Application Metrics](https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html) 33 | 34 | * Export to Prometheus \([thomasdarimont](https://github.com/thomasdarimont/prometheus-spring-boot-starter), [akaGelo](https://github.com/akaGelo/spring-boot-starter-prometheus), [nickymoeholm](https://github.com/nickymoelholm/prometheus-spring-boot-starter)\) 35 | 36 | * [Prometheus](https://github.com/prometheus/client_java) \(lots of examples in the repository\) 37 | * [JMX Metrics](https://github.com/prometheus/jmx_exporter) 38 | * [Jolokia](https://jolokia.org/) 39 | 40 | ## Load Balancer 41 | 42 | ### Server-side / Proxy 43 | 44 | * [HAProxy](http://www.haproxy.org/) 45 | * [Linkerd](https://linkerd.io/) 46 | * [Envoy](https://github.com/lyft/envoy) 47 | 48 | ### Client-side 49 | 50 | * [Ribbon](https://github.com/Netflix/ribbon) \([example](https://github.com/Netflix/ribbon/tree/master/ribbon-examples)\) 51 | * [Spring Cloud Netflix](https://github.com/spring-cloud/spring-cloud-netflix) \(uses Ribbon, [example](https://spring.io/guides/gs/client-side-load-balancing/)\) 52 | 53 | ## API Gateway 54 | 55 | * [Zuul](https://github.com/Netflix/zuul) \([example](https://github.com/Netflix/zuul/blob/1.x/zuul-netflix-webapp/src/main/java/com/netflix/zuul/StartServer.java)\) 56 | * [Spring Cloud Netflix](https://cloud.spring.io/spring-cloud-netflix/) \(uses Zuul, [example](https://spring.io/guides/gs/routing-and-filtering/)\) 57 | * Kubernetes Ingress 58 | 59 | ## Tracing 60 | 61 | Frameworks to trace and/or collect trace data: 62 | 63 | Server 64 | 65 | * [OpenTracing](http://opentracing.io/) / Zipkin 66 | 67 | Client 68 | 69 | * [Spring Cloud Sleuth](https://cloud.spring.io/spring-cloud-sleuth/) 70 | * [Spring Cloud Sleuth - Zipkin](https://github.com/spring-cloud/spring-cloud-sleuth/tree/master/spring-cloud-sleuth-zipkin) \([example](https://spring.io/blog/2016/02/15/distributed-tracing-with-spring-cloud-sleuth-and-spring-cloud-zipkin)\) 71 | * [Brave](https://github.com/openzipkin/brave) 72 | 73 | ## Circuit Breaker & Bulkheads 74 | 75 | * [Hystrix](https://github.com/Netflix/Hystrix) \([example](https://github.com/Netflix/Hystrix/tree/master/hystrix-examples/src/main/java/com/netflix/hystrix/examples/basic)\) 76 | * [Spring Cloud Netflix](https://github.com/spring-cloud/spring-cloud-netflix) \(uses Hystrix, [example](https://spring.io/guides/gs/circuit-breaker/)\) 77 | * [resillence4j](https://github.com/resilience4j/resilience4j) \([example](https://github.com/resilience4j/resilience4j#circuitbreaker-retry-and-fallback)\) 78 | * [Akka Circuit Breaker](http://doc.akka.io/docs/akka/current/scala/common/circuitbreaker.html) \([example](http://doc.akka.io/docs/akka/current/scala/common/circuitbreaker.html#java)\) 79 | 80 | ## Service Registry 81 | 82 | * [Eureka](https://github.com/Netflix/eureka) 83 | * [Spring Cloud Netflix](https://github.com/spring-cloud/spring-cloud-netflix) \(uses Eureka, [example](https://spring.io/guides/gs/service-registration-and-discovery/)\) 84 | * [Zookeeper](https://zookeeper.apache.org/) 85 | * [Consul](https://www.consul.io/) 86 | 87 | ## Application Generators 88 | 89 | * [JHipster](https://jhipster.github.io/) \([example](https://jhipster.github.io/microservices-architecture/)\) 90 | 91 | ## Container Orchestration 92 | 93 | * [Kubernetes](https://www.gitbook.com/book/saturnism/cloud-native-java-awesome/edit#) 94 | 95 | * [Docker Swarm](https://docs.docker.com/engine/swarm/) 96 | 97 | * [Mesosphere](https://dcos.io/) 98 | 99 | ## Platform as a Service 100 | 101 | * [OpenShift](https://www.openshift.org/) 102 | * [Cloud Foundry](https://www.cloudfoundry.org/) 103 | 104 | ## Service Mesh 105 | 106 | * [Istio](https://istio.io/) 107 | 108 | 109 | 110 | --------------------------------------------------------------------------------