Slide 1

Slide 1 text

Handling Scale with Reactive Programming Alex Xandra Albert Sim

Slide 2

Slide 2 text

Disclaimer Presentations are intended for educational purposes only and not to replace independent professional judgment. The views and opinions expressed in this presentation do not necessarily reflect the official policy or position of blibli.com. Audience discretion is advised.

Slide 3

Slide 3 text

Who am I? • Alex Xandra Albert Sim • Principal Research and Development Engineer at blibli.com • [email protected] • bertzzie(.sim)

Slide 4

Slide 4 text

Reactive Manifesto

Slide 5

Slide 5 text

Reactive Manifesto A good reactive systems are: • Responsive • Resilient • Elastic • Message Driven

Slide 6

Slide 6 text

Reactive Manifesto A good reactive systems are: • Responsive • Resilient • Elastic • Message Driven

Slide 7

Slide 7 text

Reactive Manifesto A good reactive systems are: • Responsive • Resilient • Elastic • Message Driven

Slide 8

Slide 8 text

Reactive Manifesto A good reactive systems are: • Responsive • Resilient • Elastic • Message Driven

Slide 9

Slide 9 text

Reactive Manifesto A good reactive systems are: • Responsive • Resilient • Elastic • Message Driven

Slide 10

Slide 10 text

ACHIEVING RESPONSIVENESS

Slide 11

Slide 11 text

The Classic Web Architecture

Slide 12

Slide 12 text

The Classic Web Architecture

Slide 13

Slide 13 text

The Normal Flow Users Internet Web app (tomcat, netty, php, etc) Application process

Slide 14

Slide 14 text

What’s in “application process”?

Slide 15

Slide 15 text

Classical Code Sample

Slide 16

Slide 16 text

Classical Code Sample

Slide 17

Slide 17 text

Potensi Bottleneck

Slide 18

Slide 18 text

Little’s Law ! = # × % L : Jumlah koneksi ke database λ : Load dari request W : Waktu respons database

Slide 19

Slide 19 text

Little’s Law (Contoh) Untuk kasus di mana: • Terdapat 500 request / detik • Database memberikan response dalam 30ms • Jumlah koneksi db yang diperlukan adalah 15 L = λ x W L = 500 rps x 0.03s L = 15

Slide 20

Slide 20 text

Alur Kehancuran Sistem (1)

Slide 21

Slide 21 text

Solusi? • Naikkan jumlah pool / queue? • NO, karena hanya membantu di average case • Kenapa? • DB down 1 menit, 500 rps tetap masuk

Slide 22

Slide 22 text

Solusi 1

Slide 23

Slide 23 text

Solusi 2

Slide 24

Slide 24 text

Solusi Queue • Membuat sistem konsisten. • Misal: 3 queue berarti sistem akan memberikan respon max 120ms • Average menurun, tapi lebih stabil • Belum hitung cache! • + cache rate 50%, average bisa < 50ms

Slide 25

Slide 25 text

Queue dan Timeout • Timeout == batas sistem dianggap gagal • Request tidak selalu terdistribusi rapi • Average tidak sepenting Max Response Time

Slide 26

Slide 26 text

ON PARALLELISM

Slide 27

Slide 27 text

Sequential Execution Start a b c Result Latency

Slide 28

Slide 28 text

Parallel Execution Latency Start a b c Result

Slide 29

Slide 29 text

Composable Future

Slide 30

Slide 30 text

Keterbatasan Parallelisme

Slide 31

Slide 31 text

Keterbatasan Parallelisme

Slide 32

Slide 32 text

What we miss L • Resilience: Compartmentalization • Resilience: Circuit Breaker • Resilience: Supervision pattern • Message passing • Actor system • BASE Pattern

Slide 33

Slide 33 text

Maybe next time!

Slide 34

Slide 34 text

QUESTION AND ANSWERS

Slide 35

Slide 35 text

Come with us. We have cookies.

Slide 36

Slide 36 text

Thank You