CVC
Desenvolvimento reativo
Spring WebFlux
Me
• edermag@gmail.com
• https://github.com/edermag
• https://medium.com/@edermag
• https://www.linkedin.com/in/edermagalhaes/
Agenda
• Introdução
• Frameworks	Reativos
• Cenário	Netshoes
• Estrutura
• Operadores
• Desafios	e	dificuldades
• Perguntas
Programação Reativa
• Abordagem funcional orientada a	eventos;
• Events	are	data	and	data	are	events;
• Aplicações sofisticadas;
• Agrega	recursos	a	linguagem;
Manifesto	Reativo
• Define	os	atributos	de	um	Sistema	Reativo;
• Responsive;
• Resilient;
• Elastic;
• Message Driven;
• Sistema	reativo	!=	programação	reativa;
• https://www.reactivemanifesto.org/
Frameworks	Reativos
• Reactive Extensions;
• RxJava;
• Reactor;
Modelo	imperativo
• Pull model;
• Determinar	o	passos	que	devem	ser	executados;
• Indicamos	como e	o	quê	a	rotina	faz;
Blocking
Java	8
Modelo	reativo
• Push model;
• Orientada	a	eventos;
• Semântica	funcional;
Project	Reactor
Spring	Webflux
Spring	Webflux vs Spring	MVC
Cenário	Netshoes
• Plataforma	c/	+	70	serviços;
• Melhor	experiência	de	compra;
• Acompanhar	a	dinâmica	do	negócio;
• Redução	de	custos;
• Evolução	da	stack;
Estrutura
• “Events are	data	and data	are	events”
Pattern
Eventos
Mono
Flux
Operadores
Mono / Flux operator
operator
operator
Semântica
Mono / Flux
Subscriber
operator
operator
operator
WebFlux
Semântica
Semântica
Flux from
words
println
map
filter
skip
Operadores
• map;
• filter;
• take;
• distinct;
• defaultIfEmpty;
• switchIfEmpty;
• sort;
• repeat;
Operadores	p/	erro
• onErrorReturn;
• onErrorResume;
• onErrorMap;
• retry;
Operadores	de	combinação
• flatMap;
• zipWith;
• combineLatest;
Testes
• StepVerifier;
Http client Reativo
• WebClient;
Desafios	e	dificuldades
• Adaptar	esse	modelo	p/	nossa	stack:	Spring	Cloud;
• Cache;
• Circuit breaker;
• Fallback;
Links
• https://docs.spring.io/spring/docs/current/spring-framework-
reference/web-reactive.html
• https://projectreactor.io/
• https://docs.spring.io/spring-
data/mongodb/docs/current/reference/html/#mongo.reactive
• https://docs.spring.io/spring-data/data-
redis/docs/current/reference/html/#redis:reactive
• https://medium.com/nstech/search?q=webflux
Perguntas
?

Cvc programacao reativa