REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info...

52
REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 [email protected] Martin Kanters, Info Support [email protected]

Transcript of REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info...

Page 1: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

REST no more, use an actor

Johan Janssen, Info Support@johanjanssen42

[email protected]

Martin Kanters, Info Support

[email protected]

Page 2: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Disclaimer: No Lego was harmed beyondrepair during the project.

Page 3: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

CONTENT

Why?

Architecture

Actors

Remote actors

Shared protocol

HTTP vs Actors

Conclusion

Questions

Page 4: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

WHY?

Page 5: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Why?

Page 6: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0
Page 7: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

MINIMAL INGREDIENTS FOR 1 TRAIN ABOUT € 50

Raspberry Pi A+

Wifi dongleEDUP Ultra-Mini Nano USB 2.0 802.11n

USB battery packAnker® 2. Gen Astro Mini 3200mAh

Infrared transmitterKeyes 38KHz IR Infrared Transmitter Module for

Arduino

Page 8: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0
Page 9: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

ARCHITECTURE

Page 10: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Architecture

Page 11: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

LTCC

(Angular)

LTCC

(Java)

DeviceControl

(Java)

Infrared

(C and LIRC)

RFID

(C)

SwitchControl

(Java)

Servo

(Python)

RPi-Cam-Web-Interface

(C)

Page 12: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

LTCC

(Angular)

LTCC

(Scala/Akka)

DeviceControl

(Scala/Akka)

Infrared

(C and LIRC)

RFID

(C)

SwitchControl

(Scala/Akka)

Servo

(Python)

Leds with Photon

(C)

RPi-Cam-Web-Interface

(C)

Page 13: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

LTCC (Laptop / Pi)

Lego Train

SwitchControl (Pi) Camera (Pi)

DeviceControl

(Pi)

Page 14: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Original controls

Page 15: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Infrared

Page 16: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Sound

Page 17: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0
Page 18: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Camera

Page 19: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0
Page 20: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Switches

Page 21: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0
Page 22: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

LTCC APPLICATION

Page 23: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

ACTORS

Page 24: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

AKKA ACTORS

class Worker extends Actor {def receive = {case x =>println(x)

}}

val system = ActorSystem("ExampleActorSystem")

val workerActorRef = system.actorOf(Props[Worker])workerActorRef ! "Hello conference"

Page 25: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

REMOTE ACTORS

Page 26: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0
Page 27: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

AKKA REMOTE ACTOR CALL

val workerActorRef = system.actorOf(Props[Worker])

val workerActorRef = system.actorSelection("akka.tcp://[email protected]:9005/user/workerActor")

Page 28: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

AKKA REMOTE ACTOR CONFIGURATION

akka {actor {provider = "akka.remote.RemoteActorRefProvider"

}remote {enabled-transports = ["akka.remote.netty.tcp"]netty.tcp {hostname = "127.0.0.1"port = 9002

}}

}

Page 29: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

SHARED PROTOCOL

Page 30: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Actor on JVM 1

Actor on JVM 2

Messages

Page 31: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Actor on laptop

MusicserviceActor on

Raspberry PiPlay message

CONCRETE EXAMPLE

Page 32: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Serverapplication

MessageProtocol

Raspberry Pi application

Page 33: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

EXAMPLE MESSAGE

object MusicServiceMessage {case class Play(filename: String)case class MusicList(filenames: List[Song])

}

Page 34: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

MESSAGE USED BY APPLICATION

val actorRef = context.actorSelection("akka.tcp://[Actorsystem]@[IP]:[port]/user/musicservice")

actorRef ! [packagename].MusicServiceMessage.Play(filename)

Page 35: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

HTTP VS REMOTE ACTOR

Page 36: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

ADVANTAGES REMOTE ACTORS

No converting to JSON/SOAP

More natural programming

Concurrent on default

Built-in load balancer

Built-in circuit breaker

Page 37: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

ADVANTAGES HTTP

Indepedent of technology

Loosely coupled

Page 38: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

FAT JAR (SBT ASSEMBLY) IN MB

0

5

10

15

20

25

Local actor Remote actor Akka HTTP Spring boot

Page 39: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

GATLING

Page 40: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

class ExampleSimulation extends Simulation {

val scn = scenario("My scenario").repeat(100) {

exec(

http("Ping")

.get("http://localhost:8080/ping")

.check(status.is(200))

).pause(100 millisecond) // Optional

}

setUp(scn.inject(

rampUsers(1000) over (10 seconds) // Changing

))

}

Page 41: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

PERFORMANCE TEST SETUP

JVM 1Akka HTTP

HTTP: /ping

pong JVM 2Akka HTTP

HTTP: /pong

pong

JVM 1Akka HTTP

HTTP: /ping

pong JVM 2Akka remote actor

Akka over TCP: pong

pong

Page 42: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

0

20

40

60

80

100

120

50 50 no pause 500 500 no pause 1000 1000 no pause

Mean response time (ms)

Akka HTTP Remote actor

Page 43: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

0

100

200

300

400

500

600

700

800

900

50 50 no pause 500 500 no pause 1000 1000 no pause

Max response time (ms)

Akka HTTP Remote actor

Page 44: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

0

50

100

150

200

250

300

350

50 50 no pause 500 500 no pause 1000 1000 no pause

99 percentile (ms)

Akka HTTP Remote actor

Page 45: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

REST is dead, long live remote actors!

- Johan Janssen

Page 46: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

0

5

10

15

20

25

30

50 50 no pause 500 500 no pause 1000 1000 no pause

Mean response time (ms)

Remote actor Spring boot

Page 47: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

0

100

200

300

400

500

600

700

800

900

50 50 no pause 500 500 no pause 1000 1000 no pause

Max response time (ms)

Remote actor Spring boot

Page 48: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

0

20

40

60

80

100

120

140

160

50 50 no pause 500 500 no pause 1000 1000 no pause

99 percentile (ms)

Remote actor Spring boot

Page 49: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

CONCLUSION

Page 50: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

The best part!!

Page 51: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

QUESTIONS?

Page 52: REST no more, use an actor - Home: DOAG e.V. · REST no more, use an actor Johan Janssen, Info Support @johanjanssen42 ... Raspberry Pi A+ Wifi dongle EDUP Ultra-Mini Nano USB 2.0

Thank you!!

Johan Janssen, Info Support@johanjanssen42

[email protected]

Martin Kanters, Info Support

[email protected]