Slide 1

Slide 1 text

Construindo aplicações reativas com Spring webflux @anabneri

Slide 2

Slide 2 text

Ana Beatriz Neri Engenheira de Software - Itaú @anabneri /in/anabeatrizdev https:anabneri.github.io

Slide 3

Slide 3 text

O que vamos ver nessa live: JVM - Java Virtual Machine O que é reatividade O que mudou a partir do Java 8 Arquitetura do Spring Webflux Ferramentas para começar Mãos na massa! - Criando nosso pokedex

Slide 4

Slide 4 text

JVM - Java Virtual Machine

Slide 5

Slide 5 text

JVM - arquitetura JavaC JVM JAVA BYTEC ODE @anabneri

Slide 6

Slide 6 text

JVM - arquitetura @anabneri

Slide 7

Slide 7 text

JVM - memória @anabneri

Slide 8

Slide 8 text

O que é reatividade ?

Slide 9

Slide 9 text

O que é reatividade ? São aplicações orientadas a um grande número de usuários, lidando com fluxos em vários momentos, um paradigma diferente de se pensar quando o assunto é: fluxo de dados Esses fluxos de dados, em sua grande maioria são assíncronos, ou seja, são eventos que acontecem em mais de um lugar e em momentos diferentes sem a produtividade do evento anterior @anabneri

Slide 10

Slide 10 text

O que é reatividade ? Assíncrono significa duas tarefas ocorrendo ao mesmo tempo @anabneri Data Stream (fluxo de dados) é um dos pilares da reatividade que representa um conjunto de dados, e os dados são os eventos Dessa forma escrevemos códigos desacoplados Na reatividade é comum você ver o design pattern: Observer

Slide 11

Slide 11 text

O que é reatividade ? Um Spoiler de como é um código simples no Spring Webflux, para demonstrar como criar um Data Stream a partir de um conjunto @anabneri

Slide 12

Slide 12 text

O que é reatividade ? Manipulação de Streams Reativos @anabneri

Slide 13

Slide 13 text

O que mudou a partir do Java8

Slide 14

Slide 14 text

O que mudou no Java 8 Expressões Lambdas, pode ser usado com qualquer interface funcional. @anabneri fonte: https://blog.caelum.com.br/o-minimo-que-voce-deve-saber-de-java-8/

Slide 15

Slide 15 text

O que mudou no Java 8 More Power com Streams para criá-las basta os elementos da lista chamar um método default .stream() @anabneri fonte: https://blog.caelum.com.br/o-minimo-que-voce-deve-saber-de-java-8/

Slide 16

Slide 16 text

Arquitetura do Spring Webflux

Slide 17

Slide 17 text

Arquitetura Spring Webflux @anabneri Request Canal Futuro Data Flows do Servidor Servidor Netty Fila de eventos Loop de eventos ClasseHandler Controller EndPoint Callback EndPoint Funcional evento 1 evento 2 evento N 1 - canal é criado 2 - registrado com um event loop 3 - está ativo 1 - Ivativo 2 - event loop não registrados 3 - fechado Cliente não-bloqueante 1 2 3 - 1 3 - 2 4 5 6

Slide 18

Slide 18 text

Arquitetura Spring Webflux @anabneri Biblioteca de base - Project Reactor → Mono & Flux Servlet Container - Netty (pois ele trabalha com tempos de execução assíncrono)

Slide 19

Slide 19 text

Ferramentas para começar :p

Slide 20

Slide 20 text

@anabneri

Slide 21

Slide 21 text

@anabneri BORA CRIAR UM POKEDEX

Slide 22

Slide 22 text

@anabneri

Slide 23

Slide 23 text

Referências: Micheli Brito https://elo7.dev/programacao-reativa/ GOTO 2019 • Reactive Spring • Josh Long - https://www.youtube.com/watch?v=1F10gr2pbvQ