SlideShare a Scribd company logo
Building Distributed Systemswith
Netflix OSS
and
Spring Cloud© 2015 Matt Stine 1
Me
Matt Stine (@mstine)
Senior Product Manager
Pivotal
http://www.mattstine.com
matt.stine@gmail.com
© 2015 Matt Stine 2
There Seemsto Be
Some Hype...
© 2015 Matt Stine 3
Define: Microservice
“Loosely coupled service oriented architecture with
bounded contexts...”
Adrian Cockcroft
© 2015 Matt Stine 4
Spring BootAMicroframework for Microservices
© 2015 Matt Stine 5
ItCan GetPrettySmall...
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
© 2015 Matt Stine 6
DEMO© 2015 Matt Stine 7
With Spring DataREST!
@Entity
@Table(name = "city")
public class City implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String county;
//...
}
© 2015 Matt Stine 8
With Spring DataREST!
@RepositoryRestResource(collectionResourceRel = "cities", path = "cities")
public interface CityRepository extends PagingAndSortingRepository<City, Long> {}
© 2015 Matt Stine 9
With Spring DataREST!
@SpringBootApplication
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
© 2015 Matt Stine 10
With Spring DataREST!
{
"_links" : {
"next" : {
"href" : "http://localhost:8080/cities?page=1&size=20"
},
"self" : {
"href" : "http://localhost:8080/cities{?page,size,sort}",
"templated" : true
}
},
"_embedded" : {
"cities" : [ {
"name" : "HOLTSVILLE",
"county" : "SUFFOLK",
"stateCode" : "NY",
"postalCode" : "00501",
"latitude" : "+40.922326",
"longitude" : "-072.637078",
© 2015 Matt Stine 11
DEMO© 2015 Matt Stine 12
WritingaSingle Service is
Nice...© 2015 Matt Stine 13
ButNo Microservice
isan Island
© 2015 Matt Stine 14
Challenges ofDistributed
Systems
» Configuration Management
» Service Registration & Discovery
» Routing & Load Balancing
» Fault Tolerance (Circuit Breakers!)
» Monitoring
» Concurrent API Aggregation & Transformation
© 2015 Matt Stine 15
© 2015 Matt Stine 16
Spring CloudDistributed System Patterns FTW!
© 2015 Matt Stine 17
Configuration
Management
© 2015 Matt Stine 18
Spring Environment
» Properties
» Profiles
© 2015 Matt Stine 19
app.groovy
@RestController
class BasicConfig {
@Value('${greeting}')
String greeting
@RequestMapping("/")
String home() {
"${greeting} World!"
}
}
© 2015 Matt Stine 20
application.yml
greeting: Hello
© 2015 Matt Stine 21
DEMO© 2015 Matt Stine 22
BootPriority
1.Command Line Args
2.JNDI
3.Java System Properties
4.OS Environment Variables
5.Properties Files
6.@PropertySource
7.Defaults
© 2015 Matt Stine 23
DEMO© 2015 Matt Stine 24
Profiles
© 2015 Matt Stine 25
application.yml
greeting: Hello
---
spring:
profiles: spanish
greeting: Hola
© 2015 Matt Stine 26
DEMO© 2015 Matt Stine 27
Distributed?
© 2015 Matt Stine 28
Config
Server!© 2015 Matt Stine 29
Config Server app.groovy
@Grab("org.springframework.cloud:spring-cloud-starter-bus-amqp:1.0.0.RC1")
@Configuration
@EnableAutoConfiguration
@EnableConfigServer
class ConfigServer {
}
© 2015 Matt Stine 30
Config Server
application.yml
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/mstine/config-repo.git
© 2015 Matt Stine 31
https://github.com/
mstine/config-repo/
blob/master/demo.yml
greeting: Bonjour
© 2015 Matt Stine 32
Config Clientapp.groovy
@Grab("org.springframework.cloud:spring-cloud-starter-bus-amqp:1.0.0.RC1")
@RestController
class BasicConfig {
@Autowired
Greeter greeter
@RequestMapping("/")
String home() {
"${greeter.greeting} World!"
}
}
@Component
@RefreshScope
class Greeter {
@Value('${greeting}')
String greeting
}
© 2015 Matt Stine 33
Config Clientbootstrap.yml
spring:
application:
name: demo
© 2015 Matt Stine 34
DEMO© 2015 Matt Stine 35
Cloud
Bus!© 2015 Matt Stine 36
curl -X POST http://localhost:8888/bus/refresh
© 2015 Matt Stine 37
DEMO© 2015 Matt Stine 38
Service
Registration &
Discovery© 2015 Matt Stine 39
Eureka
© 2015 Matt Stine 40
Producer
Consumer
© 2015 Matt Stine 41
EurekaService Registry
@GrabExclude("ch.qos.logback:logback-classic")
@EnableEurekaServer
class Eureka {
}
© 2015 Matt Stine 42
Producer
@EnableDiscoveryClient
@RestController
public class Application {
int counter = 0
@RequestMapping("/")
String produce() {
"{"value": ${counter++}}"
}
}
© 2015 Matt Stine 43
Consumer
@EnableDiscoveryClient
@RestController
public class Application {
@Autowired
DiscoveryClient discoveryClient
@RequestMapping("/")
String consume() {
InstanceInfo instance = discoveryClient.getNextServerFromEureka("PRODUCER", false)
RestTemplate restTemplate = new RestTemplate()
ProducerResponse response = restTemplate.getForObject(instance.homePageUrl, ProducerResponse.class)
"{"value": ${response.value}"
}
}
public class ProducerResponse {
Integer value
}
© 2015 Matt Stine 44
DEMO© 2015 Matt Stine 45
Routing &
Load Balancing
© 2015 Matt Stine 46
Ribbon
© 2015 Matt Stine 47
Consumerwith Load Balancer
@Autowired
LoadBalancerClient loadBalancer
@RequestMapping("/")
String consume() {
ServiceInstance instance = loadBalancer.choose("producer")
URI producerUri = URI.create("http://${instance.host}:${instance.port}");
RestTemplate restTemplate = new RestTemplate()
ProducerResponse response = restTemplate.getForObject(producerUri, ProducerResponse.class)
"{"value": ${response.value}"
}
© 2015 Matt Stine 48
DEMO© 2015 Matt Stine 49
Consumerwith Ribbon-enabled
RestTemplate
@Autowired
RestTemplate restTemplate
@RequestMapping("/")
String consume() {
ProducerResponse response = restTemplate.getForObject("http://producer", ProducerResponse.class)
"{"value": ${response.value}"
}
© 2015 Matt Stine 50
DEMO© 2015 Matt Stine 51
Feign Client
@FeignClient("producer")
public interface ProducerClient {
@RequestMapping(method = RequestMethod.GET, value = "/")
ProducerResponse getValue();
}
© 2015 Matt Stine 52
Consumerwith Feign Client
@SpringBootApplication
@FeignClientScan
@EnableDiscoveryClient
@RestController
public class Application {
@Autowired
ProducerClient client;
@RequestMapping("/")
String consume() {
ProducerResponse response = client.getValue();
return "{"value": " + response.getValue() + "}";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
© 2015 Matt Stine 53
Demo© 2015 Matt Stine 54
FaultTolerance© 2015 Matt Stine 55
Hystrix
© 2015 Matt Stine 56
CircuitBreaker
© 2015 Matt Stine 57
Consumer app.groovy
@EnableDiscoveryClient
@EnableCircuitBreaker
@RestController
public class Application {
@Autowired
ProducerClient client
@RequestMapping("/")
String consume() {
ProducerResponse response = client.getProducerResponse()
"{"value": ${response.value}"
}
}
© 2015 Matt Stine 58
Producer Client
@Component
public class ProducerClient {
@Autowired
RestTemplate restTemplate
@HystrixCommand(fallbackMethod = "getProducerFallback")
ProducerResponse getProducerResponse() {
restTemplate.getForObject("http://producer", ProducerResponse.class)
}
ProducerResponse getProducerFallback() {
new ProducerResponse(value: 42)
}
}
© 2015 Matt Stine 59
Demo© 2015 Matt Stine 60
Monitoring
© 2015 Matt Stine 61
DEMOhttp://localhost:8082/
© 2015 Matt Stine 62
Hystrix
Dashboard© 2015 Matt Stine 63
Hystrix Dashboard
© 2015 Matt Stine 64
Hystrix Dashboard
@Grab("org.springframework.cloud:spring-cloud-starter-hystrix-dashboard:1.0.0.RC1")
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard
@EnableHystrixDashboard
class HystrixDashboard {
}
© 2015 Matt Stine 65
Demo© 2015 Matt Stine 66
Concurrent
API
Aggregation &
Transformation© 2015 Matt Stine 67
RxJava© 2015 Matt Stine 68
Movie Catalog Service
@RequestMapping(value = "/catalog/movies/{mlId}", method = RequestMethod.GET)
public Movie movie(@PathVariable String mlId) {
return movieRepository.findByMlId(mlId);
}
© 2015 Matt Stine 69
Movie Catalog Service
{
id: 1001,
title: "GoldenEye (1995)",
mlId: "2",
genres: [
{
id: 1001,
mlId: "1",
name: "Action"
},
{
id: 1002,
mlId: "2",
name: "Adventure"
},
{
id: 1016,
mlId: "16",
name: "Thriller"
}
]
}
© 2015 Matt Stine 70
Movie ReviewService
@RequestMapping(value = "/reviews/reviews/{mlId}", method = RequestMethod.GET)
public Iterable<Review> reviews(@PathVariable String mlId) {
return reviewRepository.findByMlId(mlId);
}
© 2015 Matt Stine 71
Movie ReviewService
[
{
id: "54b85cbe004e0464177e90e4",
mlId: "2",
userName: "mstine",
title: "GoldenEye (1995)",
review: "Pretty good...",
rating: 3
},
{
id: "54b85cbe004e0464177e90e5",
mlId: "2",
userName: "starbuxman",
title: "GoldenEye (1995)",
review: "BOND BOND BOND!",
rating: 5
},
{
id: "54b85cbf004e0464177e90e8",
mlId: "2",
userName: "littleidea",
title: "GoldenEye (1995)",
review: "Good show!",
rating: 4
}
]
© 2015 Matt Stine 72
Movie Recommendations Service
public interface MovieRepository extends GraphRepository<Movie> {
Movie findByMlId(String mlId);
@Query("MATCH (movie:Movie) WHERE movie.mlId = {0} MATCH movie<-[:LIKES]-slm-[:LIKES]->recommendations " +
"RETURN distinct recommendations")
Iterable<Movie> moviesLikedByPeopleWhoLiked(String mlId);
}
© 2015 Matt Stine 73
Movie Recommendations Service
@RequestMapping(value = "/recommendations/forMovie/{mlId}", method = RequestMethod.GET)
public Iterable<Movie> recommendedMoviesForMovie(@PathVariable String mlId) {
return movieRepository.moviesLikedByPeopleWhoLiked(mlId);
}
© 2015 Matt Stine 74
Movie Recommendations Service
@RequestMapping(value = "/recommendations/forMovie/{mlId}", method = RequestMethod.GET)
public Iterable<Movie> recommendedMoviesForMovie(@PathVariable String mlId) {
return movieRepository.moviesLikedByPeopleWhoLiked(mlId);
}
© 2015 Matt Stine 75
Movie Recommendations Service
[
{
id: 6,
mlId: "1",
title: "Toy Story (1995)"
},
{
id: 1,
mlId: "4",
title: "Get Shorty (1995)"
},
{
id: 2,
mlId: "5",
title: "Copycat (1995)"
},
{
id: 0,
mlId: "3",
title: "Four Rooms (1995)"
}
]
© 2015 Matt Stine 76
API
Gateway© 2015 Matt Stine 77
Catalog Integration Service
@Service
public class CatalogIntegrationService {
@Autowired
RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "stubMovie")
public Observable<Movie> getMovie(final String mlId) {
return new ObservableResult<Movie>() {
@Override
public Movie invoke() {
return restTemplate.getForObject("http://catalog-service/catalog/movies/{mlId}", Movie.class, mlId);
}
};
}
private Movie stubMovie(final String mlId) {
Movie stub = new Movie();
stub.setMlId(mlId);
stub.setTitle("Interesting...the wrong title. Sssshhhh!");
return stub;
}
}
© 2015 Matt Stine 78
Reviews Integration Service
@Service
public class ReviewsIntegrationService {
@Autowired
RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "stubReviews")
public Observable<List<Review>> reviewsFor(String mlId) {
return new ObservableResult<List<Review>>() {
@Override
public List<Review> invoke() {
ParameterizedTypeReference<List<Review>> responseType = new ParameterizedTypeReference<List<Review>>() {
};
return restTemplate.exchange("http://reviews-service/reviews/reviews/{mlId}", HttpMethod.GET, null, responseType, mlId).getBody();
}
};
}
private List<Review> stubReviews(String mlId) {
Review review = new Review();
review.setMlId(mlId);
review.setRating(4);
review.setTitle("Interesting...the wrong title. Sssshhhh!");
review.setReview("Awesome sauce!");
review.setUserName("joeblow");
return Arrays.asList(review);
}
}
© 2015 Matt Stine 79
Recommendations Integration
Service
@Service
public class RecommendationsIntegrationService {
@Autowired
RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "stubRecommendations")
public Observable<List<Movie>> getRecommendations(final String mlId) {
return new ObservableResult<List<Movie>>() {
@Override
public List<Movie> invoke() {
ParameterizedTypeReference<List<Movie>> responseType = new ParameterizedTypeReference<List<Movie>>() {
};
return restTemplate.exchange("http://recommendations-service/recommendations/forMovie/{mlId}", HttpMethod.GET, null, responseType, mlId).getBody();
}
};
}
private List<Movie> stubRecommendations(final String mlId) {
Movie one = new Movie();
one.setMlId("25");
one.setMlId("A movie which doesn't exist");
Movie two = new Movie();
two.setMlId("26");
two.setMlId("A movie about nothing");
return Arrays.asList(one, two);
}
}
© 2015 Matt Stine 80
ConcurrentlyAggregateand
Transform
@RequestMapping("/movie/{mlId}")
public DeferredResult<MovieDetails> movieDetails(@PathVariable String mlId) {
Observable<MovieDetails> details = Observable.zip(
catalogIntegrationService.getMovie(mlId),
reviewsIntegrationService.reviewsFor(mlId),
recommendationsIntegrationService.getRecommendations(mlId),
(movie, reviews, recommendations) -> {
MovieDetails movieDetails = new MovieDetails();
movieDetails.setMlId(movie.getMlId());
movieDetails.setTitle(movie.getTitle());
movieDetails.setReviews(reviews);
movieDetails.setRecommendations(recommendations);
return movieDetails;
}
);
return toDeferredResult(details);
}
© 2015 Matt Stine 81
Demo© 2015 Matt Stine 82
Thanks!
Matt Stine (@mstine)
» Spring Cloud: http://cloud.spring.io
» This Presentation: https://github.com/mstine/
nfjs_2015/tree/master/
DistributedSystemsWithSpringCloud
» SpringBox-Cloud: https://github.com/mstine/
microservices-lab/tree/master/springbox-cloud
© 2015 Matt Stine 83
Image Credits
» http://i.imgur.com/atz81.jpg
» http://theroomermill.net/wp-content/uploads/
2014/06/island-house.jpg
» Circuit Breaker: Nygard, Michael. Release It!
© 2015 Matt Stine 84

More Related Content

PDF
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Toni Jara
 
PDF
To Microservices and Beyond
Matt Stine
 
PDF
Spring Boot Whirlwind Tour
VMware Tanzu
 
PDF
Microservices with Spring and Cloud Foundry
Alain Sahli
 
PDF
What’s New in Spring Data MongoDB
VMware Tanzu
 
PDF
Spring Boot on Amazon Web Services with Spring Cloud AWS
VMware Tanzu
 
PDF
Resilient Microservices with Spring Cloud
VMware Tanzu
 
PDF
Simplify Cloud Applications using Spring Cloud
Ramnivas Laddad
 
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Toni Jara
 
To Microservices and Beyond
Matt Stine
 
Spring Boot Whirlwind Tour
VMware Tanzu
 
Microservices with Spring and Cloud Foundry
Alain Sahli
 
What’s New in Spring Data MongoDB
VMware Tanzu
 
Spring Boot on Amazon Web Services with Spring Cloud AWS
VMware Tanzu
 
Resilient Microservices with Spring Cloud
VMware Tanzu
 
Simplify Cloud Applications using Spring Cloud
Ramnivas Laddad
 

What's hot (20)

PDF
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Matt Raible
 
PDF
Spring Boot Observability
VMware Tanzu
 
PDF
Flux is incubating + the road ahead
LibbySchulze
 
PDF
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
VMware Tanzu
 
PDF
Spring Boot Loves K8s
VMware Tanzu
 
PDF
A Series of Fortunate Events: Building an Operator in Java
VMware Tanzu
 
PDF
The Beginner’s Guide To Spring Cloud
VMware Tanzu
 
PDF
Spring Boot—Production Boost
VMware Tanzu
 
PDF
The Cloud Native Journey
Matt Stine
 
PDF
Spring Cloud Data Flow Overview
VMware Tanzu
 
PDF
Staying Ahead of the Curve with Spring and Cassandra 4 (SpringOne 2020)
Alexandre Dutra
 
PDF
Cloud Native Java with Spring Cloud Services
VMware Tanzu
 
PDF
Accelerate Spring Apps to Cloud at Scale
Asir Selvasingh
 
PDF
Cloud Native Microservices with Spring Cloud
Conor Svensson
 
PDF
SpringBoot and Spring Cloud Service for MSA
Oracle Korea
 
PDF
Cloud-Native Streaming and Event-Driven Microservices
VMware Tanzu
 
PDF
Game of Streams: How to Tame and Get the Most from Your Messaging Platforms
VMware Tanzu
 
PDF
Resilient and Adaptable Systems with Cloud Native APIs
VMware Tanzu
 
PPTX
Improving Your Company’s Health with Middleware Takeout
VMware Tanzu
 
PPTX
Java springboot microservice - Accenture Technology Meetup
Accenture Hungary
 
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Matt Raible
 
Spring Boot Observability
VMware Tanzu
 
Flux is incubating + the road ahead
LibbySchulze
 
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
VMware Tanzu
 
Spring Boot Loves K8s
VMware Tanzu
 
A Series of Fortunate Events: Building an Operator in Java
VMware Tanzu
 
The Beginner’s Guide To Spring Cloud
VMware Tanzu
 
Spring Boot—Production Boost
VMware Tanzu
 
The Cloud Native Journey
Matt Stine
 
Spring Cloud Data Flow Overview
VMware Tanzu
 
Staying Ahead of the Curve with Spring and Cassandra 4 (SpringOne 2020)
Alexandre Dutra
 
Cloud Native Java with Spring Cloud Services
VMware Tanzu
 
Accelerate Spring Apps to Cloud at Scale
Asir Selvasingh
 
Cloud Native Microservices with Spring Cloud
Conor Svensson
 
SpringBoot and Spring Cloud Service for MSA
Oracle Korea
 
Cloud-Native Streaming and Event-Driven Microservices
VMware Tanzu
 
Game of Streams: How to Tame and Get the Most from Your Messaging Platforms
VMware Tanzu
 
Resilient and Adaptable Systems with Cloud Native APIs
VMware Tanzu
 
Improving Your Company’s Health with Middleware Takeout
VMware Tanzu
 
Java springboot microservice - Accenture Technology Meetup
Accenture Hungary
 
Ad

Viewers also liked (20)

PDF
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
PDF
The Java Microservice Library
Rick Hightower
 
PPTX
Enhance existing REST APIs (e.g. Facebook Graph API) with code completion us...
johannes_fiala
 
PDF
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
PDF
Reactive Architectures
Ralph Winzinger
 
PDF
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Chris Richardson
 
PDF
CQRS + Event Sourcing
Mike Bild
 
ODP
Spring cloud for microservices architecture
Igor Khotin
 
PDF
Part 2: Architecture and the Operator Experience (Pivotal Cloud Platform Road...
VMware Tanzu
 
PDF
Pivotal Cloud Foundry: A Technical Overview
VMware Tanzu
 
PDF
Cloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2U
Sufyaan Kazi
 
PDF
Pivotal cf for_devops_mkim_20141209
minseok kim
 
PDF
Service discovery with Eureka and Spring Cloud
Marcelo Serpa
 
PDF
A use case with cloud foundry deployment
Krishna-Kumar
 
PDF
Schemaless Solr and the Solr Schema REST API
lucenerevolution
 
PDF
RPC protocols
오석 한
 
PDF
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
PivotalOpenSourceHub
 
PDF
distributed tracing in 5 minutes
Dan Kuebrich
 
PPTX
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Christian Posta
 
PDF
Devops: Who Does What? - Devops Enterprise Summit 2016
cornelia davis
 
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
The Java Microservice Library
Rick Hightower
 
Enhance existing REST APIs (e.g. Facebook Graph API) with code completion us...
johannes_fiala
 
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
Reactive Architectures
Ralph Winzinger
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Chris Richardson
 
CQRS + Event Sourcing
Mike Bild
 
Spring cloud for microservices architecture
Igor Khotin
 
Part 2: Architecture and the Operator Experience (Pivotal Cloud Platform Road...
VMware Tanzu
 
Pivotal Cloud Foundry: A Technical Overview
VMware Tanzu
 
Cloud Foundry vs Docker vs Kubernetes - http://bit.ly/2rzUM2U
Sufyaan Kazi
 
Pivotal cf for_devops_mkim_20141209
minseok kim
 
Service discovery with Eureka and Spring Cloud
Marcelo Serpa
 
A use case with cloud foundry deployment
Krishna-Kumar
 
Schemaless Solr and the Solr Schema REST API
lucenerevolution
 
RPC protocols
오석 한
 
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
PivotalOpenSourceHub
 
distributed tracing in 5 minutes
Dan Kuebrich
 
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Christian Posta
 
Devops: Who Does What? - Devops Enterprise Summit 2016
cornelia davis
 
Ad

Similar to Building Distributed Systems with Netflix OSS and Spring Cloud (20)

ODP
Developing Microservices using Spring - Beginner's Guide
Mohanraj Thirumoorthy
 
PDF
Cloud Native Microservices with Spring Cloud
Conor Svensson
 
PDF
Microservices with Netflix OSS and Spring Cloud
acogoluegnes
 
PDF
Microservices with Netflix OSS & Spring Cloud - Arnaud Cogoluègnes
distributed matters
 
PDF
Microservices with Spring and Cloud Foundry
mimacom
 
PDF
Arquitecturas de microservicios - Medianet Software
Ernesto Hernández Rodríguez
 
PPTX
TDC2016SP - Construindo Microserviços usando Spring Cloud
tdc-globalcode
 
PDF
Java Microservices with Netflix OSS & Spring
Conor Svensson
 
PPTX
TDC 2016 - Arquitetura Java - Spring Cloud
Claudio Eduardo de Oliveira
 
PPTX
Building microservices sample application
Anil Allewar
 
PDF
Microservices with Spring Cloud and Netflix OSS
Denis Danov
 
PDF
Unleash the True Power of Spring Cloud: Learn How to Customize Spring Cloud
VMware Tanzu
 
PDF
Arquitecturas de microservicios - Codemotion 2014
Ernesto Hernández Rodríguez
 
PPTX
spring-cloud.pptx
ssuser7959eb
 
PPTX
Microservices Platform with Spring Boot, Spring Cloud Config, Spring Cloud Ne...
Tin Linn Soe
 
PDF
Microservices with Netflix OSS and Spring Cloud - Dev Day Orange
acogoluegnes
 
PDF
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
Toshiaki Maki
 
PPT
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
PROIDEA
 
PPT
Flying to clouds - can it be easy? Cloud Native Applications
Jacek Bukowski
 
ODP
Microservices Patterns and Anti-Patterns
Corneil du Plessis
 
Developing Microservices using Spring - Beginner's Guide
Mohanraj Thirumoorthy
 
Cloud Native Microservices with Spring Cloud
Conor Svensson
 
Microservices with Netflix OSS and Spring Cloud
acogoluegnes
 
Microservices with Netflix OSS & Spring Cloud - Arnaud Cogoluègnes
distributed matters
 
Microservices with Spring and Cloud Foundry
mimacom
 
Arquitecturas de microservicios - Medianet Software
Ernesto Hernández Rodríguez
 
TDC2016SP - Construindo Microserviços usando Spring Cloud
tdc-globalcode
 
Java Microservices with Netflix OSS & Spring
Conor Svensson
 
TDC 2016 - Arquitetura Java - Spring Cloud
Claudio Eduardo de Oliveira
 
Building microservices sample application
Anil Allewar
 
Microservices with Spring Cloud and Netflix OSS
Denis Danov
 
Unleash the True Power of Spring Cloud: Learn How to Customize Spring Cloud
VMware Tanzu
 
Arquitecturas de microservicios - Codemotion 2014
Ernesto Hernández Rodríguez
 
spring-cloud.pptx
ssuser7959eb
 
Microservices Platform with Spring Boot, Spring Cloud Config, Spring Cloud Ne...
Tin Linn Soe
 
Microservices with Netflix OSS and Spring Cloud - Dev Day Orange
acogoluegnes
 
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
Toshiaki Maki
 
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
PROIDEA
 
Flying to clouds - can it be easy? Cloud Native Applications
Jacek Bukowski
 
Microservices Patterns and Anti-Patterns
Corneil du Plessis
 

More from Matt Stine (20)

PDF
Architectures That Bend but Don't Break
Matt Stine
 
PDF
Cloud Native Architecture Patterns Tutorial
Matt Stine
 
PDF
Resilient Architecture
Matt Stine
 
PDF
Cloud Foundry: The Best Place to Run Microservices
Matt Stine
 
PDF
Reactive Fault Tolerant Programming with Hystrix and RxJava
Matt Stine
 
PDF
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
PDF
Deploying Microservices to Cloud Foundry
Matt Stine
 
PDF
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Matt Stine
 
PDF
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Matt Stine
 
PDF
A Recovering Java Developer Learns to Go
Matt Stine
 
PDF
Agile Development with OSGi
Matt Stine
 
PDF
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Matt Stine
 
PDF
It's the End of the Cloud as We Know It
Matt Stine
 
PDF
Vert.x
Matt Stine
 
PDF
Functional solid
Matt Stine
 
PDF
The Seven Wastes of Software Development
Matt Stine
 
PPTX
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Matt Stine
 
PDF
Achieve Your Goals
Matt Stine
 
KEY
Getting Things Done
Matt Stine
 
PPT
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
Matt Stine
 
Architectures That Bend but Don't Break
Matt Stine
 
Cloud Native Architecture Patterns Tutorial
Matt Stine
 
Resilient Architecture
Matt Stine
 
Cloud Foundry: The Best Place to Run Microservices
Matt Stine
 
Reactive Fault Tolerant Programming with Hystrix and RxJava
Matt Stine
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
Deploying Microservices to Cloud Foundry
Matt Stine
 
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Matt Stine
 
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Matt Stine
 
A Recovering Java Developer Learns to Go
Matt Stine
 
Agile Development with OSGi
Matt Stine
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Matt Stine
 
It's the End of the Cloud as We Know It
Matt Stine
 
Vert.x
Matt Stine
 
Functional solid
Matt Stine
 
The Seven Wastes of Software Development
Matt Stine
 
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Matt Stine
 
Achieve Your Goals
Matt Stine
 
Getting Things Done
Matt Stine
 
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
Matt Stine
 

Recently uploaded (20)

PDF
New Download FL Studio Crack Full Version [Latest 2025]
imang66g
 
PDF
Download iTop VPN Free 6.1.0.5882 Crack Full Activated Pre Latest 2025
imang66g
 
DOCX
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
PDF
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
PDF
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
PDF
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
PDF
Exploring AI Agents in Process Industries
amoreira6
 
PDF
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
PPTX
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
PPTX
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
PDF
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
PPTX
Presentation about Database and Database Administrator
abhishekchauhan86963
 
PPT
Activate_Methodology_Summary presentatio
annapureddyn
 
PDF
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
PDF
49785682629390197565_LRN3014_Migrating_the_Beast.pdf
Abilash868456
 
PPTX
Explanation about Structures in C language.pptx
Veeral Rathod
 
PDF
On Software Engineers' Productivity - Beyond Misleading Metrics
Romén Rodríguez-Gil
 
PDF
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
PDF
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
New Download FL Studio Crack Full Version [Latest 2025]
imang66g
 
Download iTop VPN Free 6.1.0.5882 Crack Full Activated Pre Latest 2025
imang66g
 
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
Exploring AI Agents in Process Industries
amoreira6
 
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
Presentation about Database and Database Administrator
abhishekchauhan86963
 
Activate_Methodology_Summary presentatio
annapureddyn
 
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
49785682629390197565_LRN3014_Migrating_the_Beast.pdf
Abilash868456
 
Explanation about Structures in C language.pptx
Veeral Rathod
 
On Software Engineers' Productivity - Beyond Misleading Metrics
Romén Rodríguez-Gil
 
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 

Building Distributed Systems with Netflix OSS and Spring Cloud