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