SlideShare a Scribd company logo
Beyond the buzzword:
a reac%ve web applica*on in prac*ce
Manuel Bernhardt - @elmanu
Enterprise Java User Group Linz - September 2016
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Agenda
1. Reac've applica'ons: why, what
2. Small Reac've Web Applica'on
3. Deployment & Load tes'ng
If you have a ques-on, shoot!
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Manuel Bernhardt
• I help mid-sized telecommunica4ons
and technology companies ge7ng
started with reac4ve microservice-
based systems to speed up and scale IT
delivery
• h=p://manuel.bernhardt.io
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Manuel Bernhardt
• I help mid-sized telecommunica4ons
and technology companies ge7ng
started with reac4ve microservice-
based systems to speed up and scale IT
delivery
• h=p://manuel.bernhardt.io
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Reac%ve applica%ons: why, what
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Root cause 1:
evolu&on of so+ware architecture
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
"Good old days" architecture
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
"3 $er" architecture
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
"Cloud" architecture
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
"Microservices" architecture
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
=> Increasing amount of network I/O
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
=> Increasing amount of network I/O
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Root cause 2: evolu.on of hardware
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Why reac)ve ?
1. Distributed systems are the rule, not the excep1on
2. Programming needs to acknowledge the existance of many
hardware threads, the lost opportunity of not using it & the cost
of locking
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
What reac)ve ?
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Reac%ve systems are distributed
systems
(they're a subset thereof)
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
What's the main difference between
a distributed system and a non-
distributed system?
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
What's the main difference between
a distributed system and a non-
distributed system?
Distributed systems fail much more
o-en (and in much stranger ways)
than non-distributed ones
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Failure
Failure is a first-class ci.zen in reac.ve
systems. They're designed for failure.
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Handling failure
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Handling failure
• checked excep*ons are a terrible idea in the context of reac*ve /
distributed systems
• languages, tools and pa<erns for streamlining failure handling:
Func*onal Programming, Futures, Message Passing
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Don't try to hide the network!
• CORBA, RPC & friends: trying to abstract away the network
• what happens when the network call
• ... fails
• ... is slow
• ... is some%mes slow
• ... someAmes fails, someAmes doesn't
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Don't try to hide the
network!
• ignoring of the Fallacies of Distributed
Compu8ng (Deutsch & Gosling)
• ignoring the CAP theorem
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Reac%ve architectural pa/ern
h"p://www.reac,vemanifesto.org
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Reac%ve Systems - Conclusion
• Reac&ve Systems are designed for failure
• Reac&ve Systems are distributed, replicated accross several
nodes (can scale up and down)
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Let's build a small Reac0ve Web
Applica0on
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Actors
• lightweight objects
• send and receive messages (mailbox)
• can have children (supervision)
"Long-lived" async computa5on
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
CODING
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Futures
scala.concurrent.Future[T]
• holds a value of type T
• can either fail or succeed
• async code does not block a thread
while wai8ng for comple8on
"Short-lived" async computa6on
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Pipe
akka.pattern.pipe
• bridge between Futures and Actors
• implemented as anonymous actor
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Pipe
akka.pattern.pipe
• bridge between Futures and Actors
• implemented as anonymous actor
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Circuit Breaker
akka.pattern.CircuitBreaker
• helpful when dealing with legacy / slow
systems & prevents cascading failure
• like an electric circuit breaker, trips
when there's a surge
• trips a=er a given number of failures, for
a given >meout, then a?empts reset
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Deployment
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Deployment
• stand-alone vs. "elas/c deployment"
• elas/c, fault-tolerant is not trivial
• use a managed service / solu/on
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Deployment
• Lightbend ConductR
• automated cluster management for
Play / Akka / ... applica>ons
• automated node failure & network
par++on resolu+on
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Deployment
• fully managed opera0ons
• auto scalability feature (horizontal &
ver0cal)
• a<rac0ve pricing
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Load tes)ng
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Gatling
• open-source load tes0ng framework
• built with Scala, Akka and Ne=y
• two phases: record and run
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Gatling simula,on 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)
)
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Bees with machine guns
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Configuring all the things
• Installing Python & bees with machine
guns
• AWS console (keys, security group w/
SSH access)
• boto config file
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Configuring all the things
~/.boto
[Credentials]
aws_access_key_id = foobar1
aws_secret_access_key = foobar2
[Boto]
debug = 2
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
A"ack!
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
Thank you!
Ques%ons & Comments ?
• h#p://manuel.bernhardt.io
• manuel@bernhardt.io
• @elmanu
Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu

More Related Content

PDF
Six years of Scala and counting
PDF
Beyond the Buzzword - a reactive application in practice
PDF
8 Akka anti-patterns you'd better be aware of
PDF
Scala Days Copenhagen - 8 Akka anti-patterns you'd better be aware of
PDF
8 akka anti-patterns you'd better be aware of - Reactive Summit Austin 2017
PDF
Serverless and the Way Forward
PDF
fanscala1 4 その他資料
PDF
Lorna Mitchell - Future of functions - Codemotion Milan 2017
Six years of Scala and counting
Beyond the Buzzword - a reactive application in practice
8 Akka anti-patterns you'd better be aware of
Scala Days Copenhagen - 8 Akka anti-patterns you'd better be aware of
8 akka anti-patterns you'd better be aware of - Reactive Summit Austin 2017
Serverless and the Way Forward
fanscala1 4 その他資料
Lorna Mitchell - Future of functions - Codemotion Milan 2017

Viewers also liked (12)

PPTX
Basisferdigheter på
DOC
ACS - CV-New
DOCX
Bahagian b dst
PPT
Prayer a carmelite solution
PDF
Журнал о металлопрокате Сибирское металлоснабжение №1 (170) 2017
PDF
Postdoctoral Research Summary
DOCX
Campeonato gaúcho 2017 artilharia
PPTX
Act.5 daniela moreno
PPTX
PDF
6. materiais ceramicos gradryr
PDF
С.Д. Варфоломеев - Новые энергетические технологии — новые экономические вызовы
Basisferdigheter på
ACS - CV-New
Bahagian b dst
Prayer a carmelite solution
Журнал о металлопрокате Сибирское металлоснабжение №1 (170) 2017
Postdoctoral Research Summary
Campeonato gaúcho 2017 artilharia
Act.5 daniela moreno
6. materiais ceramicos gradryr
С.Д. Варфоломеев - Новые энергетические технологии — новые экономические вызовы
Ad

Similar to Beyond the buzzword: a reactive web-appliction in practice (20)

PPTX
Going Reactive in Java with Typesafe Reactive Platform
PPTX
Fault Tolerance in Distributed Environment
PDF
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...
PDF
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
PPTX
Building Reactive System with Akka
PDF
Simple Solutions for Complex Problems - Boulder Meetup
PDF
Simple Solutions for Complex Problems - Boulder Meetup
PPTX
Building Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
PDF
Microservice pitfalls
ODP
How to bake_reactive_behavior_into_your_java_ee_applications
PDF
Integrating Applications: the Reactive Way
PDF
Expect the unexpected: Prepare for failures in microservices
PPTX
Reactive applications tools of the trade huff po
PPTX
Scale up your thinking
PPT
Practical Considerations for Deploying a Java Active Networking Platform
PPTX
Why Play Framework is fast
PDF
Not Only Streams for Akademia JLabs
PPTX
Scalable game-servers-tgc
ODP
Reactive programming with scala and akka
PDF
Agile Lab_BigData_Meetup_AKKA
Going Reactive in Java with Typesafe Reactive Platform
Fault Tolerance in Distributed Environment
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Building Reactive System with Akka
Simple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder Meetup
Building Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Microservice pitfalls
How to bake_reactive_behavior_into_your_java_ee_applications
Integrating Applications: the Reactive Way
Expect the unexpected: Prepare for failures in microservices
Reactive applications tools of the trade huff po
Scale up your thinking
Practical Considerations for Deploying a Java Active Networking Platform
Why Play Framework is fast
Not Only Streams for Akademia JLabs
Scalable game-servers-tgc
Reactive programming with scala and akka
Agile Lab_BigData_Meetup_AKKA
Ad

More from Manuel Bernhardt (14)

PDF
Is there anybody out there? Reactive Systems Hamburg
PDF
Is there anybody out there? Scala Days Berlin 2018
PDF
Is there anybody out there?
PDF
Is there anybody out there?
PDF
3 things you must know to think reactive - Geecon Kraków 2015
PDF
Reactive Web-Applications @ LambdaDays
PDF
Writing a technical book
PDF
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
PDF
Back to the futures, actors and pipes: using Akka for large-scale data migration
PDF
Project Phoenix - From PHP to the Play Framework in 3 months
PDF
Scala - Java2Days Sofia
PDF
Tips and tricks for setting up a Play 2 project
PDF
Introduction to Scala
PDF
Scala pitfalls
Is there anybody out there? Reactive Systems Hamburg
Is there anybody out there? Scala Days Berlin 2018
Is there anybody out there?
Is there anybody out there?
3 things you must know to think reactive - Geecon Kraków 2015
Reactive Web-Applications @ LambdaDays
Writing a technical book
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
Back to the futures, actors and pipes: using Akka for large-scale data migration
Project Phoenix - From PHP to the Play Framework in 3 months
Scala - Java2Days Sofia
Tips and tricks for setting up a Play 2 project
Introduction to Scala
Scala pitfalls

Recently uploaded (20)

PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PDF
Structs to JSON How Go Powers REST APIs.pdf
PPTX
OOP with Java - Java Introduction (Basics)
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PPT
Mechanical Engineering MATERIALS Selection
PDF
PPT on Performance Review to get promotions
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
Welding lecture in detail for understanding
DOCX
573137875-Attendance-Management-System-original
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPT
Project quality management in manufacturing
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
Geodesy 1.pptx...............................................
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PPTX
CH1 Production IntroductoryConcepts.pptx
PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
Lecture Notes Electrical Wiring System Components
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Model Code of Practice - Construction Work - 21102022 .pdf
Structs to JSON How Go Powers REST APIs.pdf
OOP with Java - Java Introduction (Basics)
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
Mechanical Engineering MATERIALS Selection
PPT on Performance Review to get promotions
Internet of Things (IOT) - A guide to understanding
Welding lecture in detail for understanding
573137875-Attendance-Management-System-original
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
Project quality management in manufacturing
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Geodesy 1.pptx...............................................
Foundation to blockchain - A guide to Blockchain Tech
CH1 Production IntroductoryConcepts.pptx
Arduino robotics embedded978-1-4302-3184-4.pdf
bas. eng. economics group 4 presentation 1.pptx
Lecture Notes Electrical Wiring System Components

Beyond the buzzword: a reactive web-appliction in practice

  • 1. Beyond the buzzword: a reac%ve web applica*on in prac*ce Manuel Bernhardt - @elmanu Enterprise Java User Group Linz - September 2016 Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 2. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 3. Agenda 1. Reac've applica'ons: why, what 2. Small Reac've Web Applica'on 3. Deployment & Load tes'ng If you have a ques-on, shoot! Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 4. Manuel Bernhardt • I help mid-sized telecommunica4ons and technology companies ge7ng started with reac4ve microservice- based systems to speed up and scale IT delivery • h=p://manuel.bernhardt.io Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 5. Manuel Bernhardt • I help mid-sized telecommunica4ons and technology companies ge7ng started with reac4ve microservice- based systems to speed up and scale IT delivery • h=p://manuel.bernhardt.io Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 6. Reac%ve applica%ons: why, what Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 7. Root cause 1: evolu&on of so+ware architecture Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 8. "Good old days" architecture Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 9. "3 $er" architecture Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 10. "Cloud" architecture Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 11. "Microservices" architecture Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 12. => Increasing amount of network I/O Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 13. => Increasing amount of network I/O Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 14. Root cause 2: evolu.on of hardware Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 15. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 16. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 17. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 18. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 19. Why reac)ve ? 1. Distributed systems are the rule, not the excep1on 2. Programming needs to acknowledge the existance of many hardware threads, the lost opportunity of not using it & the cost of locking Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 20. What reac)ve ? Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 21. Reac%ve systems are distributed systems (they're a subset thereof) Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 22. What's the main difference between a distributed system and a non- distributed system? Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 23. What's the main difference between a distributed system and a non- distributed system? Distributed systems fail much more o-en (and in much stranger ways) than non-distributed ones Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 24. Failure Failure is a first-class ci.zen in reac.ve systems. They're designed for failure. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 25. Handling failure Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 26. Handling failure • checked excep*ons are a terrible idea in the context of reac*ve / distributed systems • languages, tools and pa<erns for streamlining failure handling: Func*onal Programming, Futures, Message Passing Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 27. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 28. Don't try to hide the network! • CORBA, RPC & friends: trying to abstract away the network • what happens when the network call • ... fails • ... is slow • ... is some%mes slow • ... someAmes fails, someAmes doesn't Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 29. Don't try to hide the network! • ignoring of the Fallacies of Distributed Compu8ng (Deutsch & Gosling) • ignoring the CAP theorem Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 30. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 31. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 32. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 33. Reac%ve architectural pa/ern h"p://www.reac,vemanifesto.org Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 34. Reac%ve Systems - Conclusion • Reac&ve Systems are designed for failure • Reac&ve Systems are distributed, replicated accross several nodes (can scale up and down) Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 35. Let's build a small Reac0ve Web Applica0on Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 36. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 37. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 38. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 39. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 40. Actors • lightweight objects • send and receive messages (mailbox) • can have children (supervision) "Long-lived" async computa5on Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 41. CODING Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 42. Futures scala.concurrent.Future[T] • holds a value of type T • can either fail or succeed • async code does not block a thread while wai8ng for comple8on "Short-lived" async computa6on Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 43. Pipe akka.pattern.pipe • bridge between Futures and Actors • implemented as anonymous actor Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 44. Pipe akka.pattern.pipe • bridge between Futures and Actors • implemented as anonymous actor Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 45. Circuit Breaker akka.pattern.CircuitBreaker • helpful when dealing with legacy / slow systems & prevents cascading failure • like an electric circuit breaker, trips when there's a surge • trips a=er a given number of failures, for a given >meout, then a?empts reset Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 46. Deployment Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 47. Deployment • stand-alone vs. "elas/c deployment" • elas/c, fault-tolerant is not trivial • use a managed service / solu/on Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 48. Deployment • Lightbend ConductR • automated cluster management for Play / Akka / ... applica>ons • automated node failure & network par++on resolu+on Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 49. Deployment • fully managed opera0ons • auto scalability feature (horizontal & ver0cal) • a<rac0ve pricing Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 50. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 51. Load tes)ng Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 52. Gatling • open-source load tes0ng framework • built with Scala, Akka and Ne=y • two phases: record and run Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 53. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 54. Gatling simula,on 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) ) Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 55. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 56. Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 57. Bees with machine guns Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 58. Configuring all the things • Installing Python & bees with machine guns • AWS console (keys, security group w/ SSH access) • boto config file Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 59. Configuring all the things ~/.boto [Credentials] aws_access_key_id = foobar1 aws_secret_access_key = foobar2 [Boto] debug = 2 Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 60. A"ack! Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu
  • 61. Thank you! Ques%ons & Comments ? • h#p://manuel.bernhardt.io • manuel@bernhardt.io • @elmanu Enterprise JUG September 2016 Linz - manuel.bernhardt.io - @elmanu