Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microservices reativos e a experiência do iFood

246 views

Published on

Nessa palestra será apresentada a experiência do iFood no uso de técnicas Reactive, que permitem ganhar desempenho e escala em microservices – em arquiteturas que demandam alto nível de processamento e ao mesmo tempo baixo consumo de recursos. Veremos como o framework Reactor, a base reativa do Spring 5.0, está apoiando a evolução de microservices no iFood. O uso de microservices e Reactive está ajudando a atender um alto tráfego de eventos e requests em tempo real e a acompanhar a demanda de pedidos, que triplica a cada ano. Serão explorados os pilares do reactive manifesto (Responsive, Elastic, Resilient, Message-driven), conceitos de Reactive Streams e Backpressure e de fluxos bloqueantes/não-bloqueantes – e como aplicar muitos desses conceitos na prática usando o framework Reactor e o Spring 5.0.

Published in: Technology
  • DOWNLOAD FULL BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL PDF EBOOK here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL EPUB Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL doc Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL PDF EBOOK here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL EPUB Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL doc Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL PDF EBOOK here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL EPUB Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL doc Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL PDF EBOOK here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL EPUB Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL doc Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL PDF EBOOK here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL EPUB Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL doc Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL PDF EBOOK here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL EPUB Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... 1.DOWNLOAD FULL doc Ebook here { https://tinyurl.com/y8nn3gmc } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Microservices reativos e a experiência do iFood

  1. 1. Microservices Reativos A experiência no Tiago Dolphine
  2. 2. Tiago Dolphine
  3. 3. Order food from App or Web Restaurant receives the order Confirms the order and prepare Back office operators Customer search for restaurants APIs Online Delivery
  4. 4. +3.5MM pedidos / mês +16K restaurantes ativos +4MM usuários ativos +140K requests/min +200 instâncias em Cloud
  5. 5. Um pouco do passado...
  6. 6. Programação imperativa Descrevemos como um programa deve se comportar Sequência de passos (comandos) Chamadas para alterar o estado de um recurso Tradicional Fácil entendimento e ensino
  7. 7. Mas com o crescimento . . . Número de acessos Consumo de recursos Tempo de resposta deve ser aceitável Falhas não podem impactar o negócio Popularização de Cloud Computing Adoção de Microservices
  8. 8. Sistemas de software precisam acompanhar esta evolução!
  9. 9. Sistemas de software precisam REAGIR !
  10. 10. Reactive Manifesto (2013… 2014...)
  11. 11. Responsive: sempre responder e com baixa latência Resilient: sem downtime, responder mesmo em situações de falha Elastic: responder mesmo quando for sobrecarregado, auto escalar Message Driven: comunicação por mensagens async, baixo acoplamento
  12. 12. Mas porquê Reactive ?
  13. 13. Blocking ...
  14. 14. Blocking pode ser um desperdício ! Tempo de resposta pode ficar comprometido Paralelizar: performance com aumento de Threads Threads são custosas e limitadas I/O é lento (chamadas para DB, HTTP…) Threads esperando resposta :( Desperdício de recurso !
  15. 15. Blocking Total = T1 + T2+ T3
  16. 16. Non-Blocking Total < T1 + T2+ T3
  17. 17. Reactive Programing Paradigma baseado no consumo de eventos Evento -> dispara ações (callback) Lógica declarativa (o que ao invés de como) Async e non-blocking Escalar vertical -> poucas threads Contexto local (não distribuído)
  18. 18. Reactive streams ● Padronização de APIs: manipulação de streams de dados ● Backpressure ○ Feedback enviado para o produtor quando o consumidor está pronto para consumir ○ Importante quando o produtor está mais rápido que o consumidor ● Frameworks: Reactor, RxJava, Akka, Vert.x … ● Java 9: java.util.concurrent.Flow * Source: Reactive Streams (4) "Padrão para processamento de fluxo de dados assíncrono com backpressure non-blocking" *
  19. 19. Reactor "Reactor is a fourth-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification"
  20. 20. Reactor Implementação de reactive streams Publisher ● Mono: 0 ou 1 item ● Flux: sequencia async de 0 a N itens Subscribers ● Consumir dados de publishers (callbacks de sucesso, erro, completo) ● subscribe() -> trigger para startar fluxo de dados ● Nada ocorre sem subscribe()
  21. 21. Exemplo Flux.range(0, 20) .filter(n -> n % 2 == 0) .map(n -> "Number: " + n) .subscribe(s -> System.out.println( s + " Thread: " + Thread.currentThread().getName())); Number: 0 Thread: main Number: 2 Thread: main Number: 4 Thread: main Number: 6 Thread: main Number: 8 Thread: main Number: 10 Thread: main Number: 12 Thread: main Number: 14 Thread: main Number: 16 Thread: main Number: 18 Thread: main
  22. 22. Number: 4 Thread: parallel-2 Number: 10 Thread: parallel-2 Number: 16 Thread: parallel-2 Number: 0 Thread: parallel-1 Number: 6 Thread: parallel-1 Number: 12 Thread: parallel-1 Number: 18 Thread: parallel-1 Number: 2 Thread: parallel-3 Number: 8 Thread: parallel-3 Number: 14 Thread: parallel-3 CountDownLatch countDownLatch = new CountDownLatch(1); Flux.range(0, 20) .parallel(3) .runOn(Schedulers.parallel()) .filter(n -> n % 2 == 0) .map(n -> "Number: " + n) .doOnTerminate(() -> countDownLatch.countDown()) .subscribe(s -> System.out.println(s + " Thread: " + Thread.currentThread().getName())); countDownLatch.await();
  23. 23. Never block a reactive code !
  24. 24. Spring 5.0 Novo módulo Reativo WebFlux Non-blocking HTTP adaptado em Reactive Streams API Cliente e Servidor reactive Reactor Flux / Mono nas APIs Netty, Undertow, Servlet 3.1 NIO HttpServletRequest → ServerHttpRequest InputStream / OutputStream → Flux<DataBuffer>
  25. 25. https://github.com/tiagodolphine/spring5-reactive-playground https://github.com/tiagodolphine/reactor-playground Talk is cheap show me the code
  26. 26. Reactive Systems Reatividade em sistemas distribuídos Desacoplamento ● Tempo: concorrência e paralelismo ● Espaço: transparência na localização de componentes Conjunto de padrões arquiteturais e princípios ● Message based ● Resilience ● Elasticity ● … ● Location transparency
  27. 27. Aplicar princícios reactive em microservices !
  28. 28. Rapidez de crescimento Microservices Escalabilidade Disponibilidade Legado
  29. 29. 2011 Pedidos / Mês 20162013 2014 2015 20k 100k 450k 1M 2,8M 3,5M
  30. 30. Almoço Jantar
  31. 31. Alguns problemas atacados Entrega de pedidos aos restaurantes Sincronização de dados entre sistemas Integrações com parceiros Disparo de tarefas (sms, push, emails, cancelamentos…)
  32. 32. Princípios reactive aplicados em microservices
  33. 33. Princípios reactive aplicados ● Messaging ⬅ message driven ● HTTP (async processing) ⬅ non-blocking ● Circuit breakers ⬅ responsive ● Retry ⬅ resilient, responsive ● Recovery ⬅ resilient ● ACK Events ⬅ resilient ● Eternal cache (with refresh) ⬅ resilient, responsive ● Auto-Scaling ⬅ elastic ● Reactive Programming ⬅ non-blocking ● Load balancers ⬅ location transparency
  34. 34. Auto Scaling ReactorMicroservices
  35. 35. Resultados positivos 16K restaurantes conectados Entrega de 3.5MM pedidos e transição de estados Push de pedidos polling ⇩Tempos de recepção de pedidos Elasticidade com recursos menores Independência do sistema legado Mais responsivo e resiliente (às falhas)
  36. 36. Dificuldades Debug Trace de erros e logging Curva maior para novos desenvolvedores Dependência de rede e infraestrutura Monitoramento de lógica específica de cada serviço Maturidade em ambiente de produção custosa
  37. 37. Concluindo... Migraçao para microservices é realidade Aplicar princípios reactive entre microservices Reactive programming internamente para microservices Melhor uso de recursos (mais com menos) Necessário para acompanhar todo crescimento!
  38. 38. Referências 1. http://projectreactor.io 2. http://projectreactor.io/docs/core/release/reference/docs/index.html 3. http://www.reactivemanifesto.org 4. http://www.reactive-streams.org 5. https://www.oreilly.com/ideas/reactive-programming-vs-reactive-systems 6. http://www.oreilly.com/programming/free/developing-reactive-microservices.csp 7. http://www.oreilly.com/programming/free/reactive-microservices-architecture-orm.csp 8. https://spring.io/search?q=Notes+on+Reactive+Programming 9. http://docs.spring.io/spring-framework/docs/5.0.x/spring-framework-reference/html/web-reactive.html 10. https://community.oracle.com/docs/DOC-1006738 11. https://spring.io/blog/2016/04/19/understanding-reactive-types
  39. 39. Tiago Dolphine /tiagodolphine tiagodolphine@gmail.com /tiagodolphine /tiagodolphine

×