65
Spring Reactive

Spring Reactivespring-boot-starter-weþfl factld> @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

  • Upload
    others

  • View
    71

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Spring Reactive

Page 2: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Sou Alberto :)

Page 3: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Trabalho no grupo Caelum

Page 4: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Reativo?

Page 5: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Muitas opiniões

Page 6: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Abstração do Observer

Page 7: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Visão mais rebuscada

Page 8: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Abstração para composição de eventos

Page 9: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Consulta Serviço externo

Executa regra de negócio

Gera objeto para retorno

Page 10: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Quem implementa isso para você?

Page 11: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

RX Java e Project Reactor

Page 12: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Reactive Streams

Page 13: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Para que serve isso?

Page 14: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 15: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Onde esse código é executado?

Page 16: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Thread por request

Page 17: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

E se pudesse rodar em outras threads?

Page 18: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Ali já tem 4 funções

Page 19: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 20: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 21: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Mono?

Page 22: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Publicador de apenas uma informação

Page 23: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 24: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Publicador de várias informações

Page 25: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 26: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Quem executa o fluxo de funções?

Page 27: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Spring Reactive!

Page 28: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Camada reativa do Spring

Page 29: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 30: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Como eu ativo isso?

Page 31: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 32: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 33: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Netty?

Page 34: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Não depende de Servlets

Page 35: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Mas se integra :)

Page 36: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Benefícios

Page 37: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Delegação total da execução de código

Page 38: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Pools de threads separados para vários momentos

Page 39: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Pools especializados para códigos blocantes

Page 40: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 41: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Maior escalabilidade com menor custo

Page 42: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Bom encaixe para API

Page 43: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Muito bom para drivers de bancos não relacionais

Page 44: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Complexidades adicionais

Page 45: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Modelo de programação diferente

Page 46: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Talvez seja mais complicado de manter

Page 47: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Drivers JDBC são blocantes

Page 48: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Debug mais complicado

Page 49: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Teste mais complicado

Page 50: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Exceptions para indicar tipos de retorno

Page 51: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 52: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Múltiplos pools não casam bem com ThreadLocal

Page 53: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 54: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 55: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 56: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Dúvidas?

Page 57: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

github.com/asouza

Page 58: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

twitter.com/alberto_souza

Page 59: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Cliente reativo

Page 60: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 61: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Como consumimos as informações?

Page 62: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container
Page 63: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Backpressure

Page 64: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Não mande mais do que eu posso consumir

Page 65: Spring Reactivespring-boot-starter-weþfl factld>  @Controller, @RequestMapping Router Functions spring-webmvc Servlet API Servlet Container

Longe da realidade do povo