beyond the buzzword: a reactive web application in practice · a reactive web application in...

44
BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016

Upload: others

Post on 21-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

BEYOND THE BUZZWORD:A REACTIVE WEB

APPLICATION IN PRACTICEMANUEL BERNHARDT - @ELMANU

JFOKUS 2016

Page 2: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

AGENDA

1. Evolution of web application architecture2. Evolution of hardware

3. Small Reactive Web Application4. (Deployment)

Page 3: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

WHO IS SPEAKING

> web, web, web> freelance software consultant

> Vienna Scala User Group> writing wrote a book on reactive

web-applications

HTTP://WWW.MANNING.COM/BOOKS/REACTIVE-WEB-APPLICATIONS

39% OFF WITH CODE CTWJFOKUS16

Page 4: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

A SHORT (AND MOSTLY WRONG)HISTORY OF WEB APPLICATION

ARCHITECTURE

Page 5: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

"GOOD OLD DAYS" ARCHITECTURE

Page 6: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

"3 TIER" ARCHITECTURE

Page 7: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

"CLOUD" ARCHITECTURE

Page 8: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

"CLOUD" ARCHITECTURE

Page 9: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

"MICROSERVICES" ARCHITECTURE

Page 10: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

"MICROSERVICES" ARCHITECTURE

Page 11: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

TREND: INCREASING AMOUNT OF NETWORK I/O

Page 12: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

TREND: INCREASING AMOUNT OF NETWORK I/O

Page 13: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

REACTIVE ARCHITECTURAL PATTERN

Page 14: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

EVOLUTION OF HARDWARE

Page 15: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 16: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

EVOLUTION OF CPUS

Page 17: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 18: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 19: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 20: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

EVOLUTION OF MEMORY

Page 21: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 22: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 23: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

CONCLUSION

> many-core & distributed systems> explicit asynchronous programming is getting

important> explicit failure handling is getting important

Page 24: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

LET'S BUILD A SMALL

REACTIVE WEB APPLICATION

Page 25: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 26: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 27: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 28: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 29: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

ACTORS

> lightweight objects> send and receive messages (mailbox)

> can have children (supervision)

"LONG-LIVED" ASYNC COMPUTATION

Page 30: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

CODING

Page 31: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

FUTURESscala.concurrent.Future[T]

> holds a value of type T> can either fail or succeed

> async code does not block a thread while waiting for completion

"SHORT-LIVED" ASYNC COMPUTATION

Page 32: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

PIPEakka.pattern.pipe

> bridge between Futures and Actors> implemented as anonymous actor

Page 33: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

PIPEakka.pattern.pipe

> bridge between Futures and Actors> implemented as anonymous actor

Page 34: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

CIRCUIT BREAKERakka.pattern.CircuitBreaker

> helpful when dealing with legacy / slow systems & prevents cascading

failure

> like an electric circuit breaker, trips when there's a surge

> trips after a given number of failures, for a given timeout, then

attempts reset

Page 35: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

DEPLOYMENT

> stand-alone vs. "elastic deployment"> elastic, fault-tolerant is not trivial

> use a managed service / solution

Page 36: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

DEPLOYMENT

> Typesafe ConductR> automated cluster management for

Play / Akka / ... applications> automated node failure & network

partition resolution

Page 37: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

DEPLOYMENT

> fully managed operations> auto scalability feature (horizontal

& vertical)> attractive pricing

Page 38: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 39: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

THANK YOU@ELMANU

[email protected]

QUESTIONS?39% OFF WITH CODE

CTWJFOKUS16

Page 40: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

GATLING

> open-source load testing framework> built with Scala, Akka and Netty

> two phases: record and run

Page 41: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 42: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application

GATLING SIMULATION FILE// ...setUp( scn.inject( nothingFor(4 seconds), rampUsers(100) over(10 seconds), atOnceUsers(10), constantUsersPerSec(2) during(15 seconds) randomized, splitUsers(500) into ( rampUsers(50) over(10 seconds) ) separatedBy(2 seconds) ).protocols(httpProtocol))

Page 43: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application
Page 44: BEYOND THE BUZZWORD: A REACTIVE WEB APPLICATION IN PRACTICE · A REACTIVE WEB APPLICATION IN PRACTICE MANUEL BERNHARDT - @ELMANU JFOKUS 2016. AGENDA 1. Evolution of web application