SlideShare a Scribd company logo
Beyond the buzzword:
a reac%ve web applica*on in prac*ce
Manuel Bernhardt - @elmanu
Slovak Scala Users' Group - May 2016
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Agenda
1. Evolu(on of web applica(on architecture
2. Evolu(on of hardware
3. Small Reac(ve Web Applica(on
4. Deployment
If you have a ques-on, shoot!
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Manuel Bernhardt
• I help established companies ge3ng
started with using reac%ve applica%ons
in their distributed systems
infrastructure
• h9p://manuel.bernhardt.io
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Manuel Bernhardt
• I help established companies ge3ng
started with using reac%ve applica%ons
in their distributed systems
infrastructure
• h9p://manuel.bernhardt.io
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
A short (and mostly wrong)
history of web applica1on
architecture
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
"Good old days" architecture
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
"3 $er" architecture
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
"Cloud" architecture
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
"Cloud" architecture
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
"Microservices" architecture
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
"Microservices" = emerging architecture
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Trend: increasing amount of network I/O
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Trend: increasing amount of network I/O
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Reac%ve architectural pa/ern
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Evolu&on of hardware
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Evolu&on of CPUs
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Evolu&on of memory
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Conclusion
• many-core & distributed systems
• awesome hardware
• awesome so5ware? we need:
• explicit asynchronous programming
• explicit failure handling
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Let's build a small Reac0ve Web
Applica0on
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Actors
• lightweight objects
• send and receive messages (mailbox)
• can have children (supervision)
"Long-lived" async computa5on
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
CODING
Slovak Scala Users' Group May 2016 - 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
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Pipe
akka.pattern.pipe
• bridge between Futures and Actors
• implemented as anonymous actor
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Pipe
akka.pattern.pipe
• bridge between Futures and Actors
• implemented as anonymous actor
Slovak Scala Users' Group May 2016 - 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
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Deployment
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Deployment
• stand-alone vs. "elas/c deployment"
• elas/c, fault-tolerant is not trivial
• use a managed service / solu/on
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Deployment
• Lightbend ConductR
• automated cluster management for
Play / Akka / ... applica>ons
• automated node failure & network
par++on resolu+on
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Deployment
• fully managed opera0ons
• auto scalability feature (horizontal &
ver0cal)
• a<rac0ve pricing
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Load tes)ng
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Gatling
• open-source load tes0ng framework
• built with Scala, Akka and Ne=y
• two phases: record and run
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - 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)
)
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Bees with machine guns
Slovak Scala Users' Group May 2016 - 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
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Configuring all the things
~/.boto
[Credentials]
aws_access_key_id = foobar1
aws_secret_access_key = foobar2
[Boto]
debug = 2
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
A"ack!
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
Thank you!
Ques%ons & Comments ?
• h#p://manuel.bernhardt.io
• manuel@bernhardt.io
• @elmanu
Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu

More Related Content

Viewers also liked

Taylor swift music video (1)
Taylor swift music video (1)Taylor swift music video (1)
Taylor swift music video (1)
Holly Logan
 
Kaytoue Mehdi - Finding duplicate labels in behavioral data: an application f...
Kaytoue Mehdi - Finding duplicate labels in behavioral data: an application f...Kaytoue Mehdi - Finding duplicate labels in behavioral data: an application f...
Kaytoue Mehdi - Finding duplicate labels in behavioral data: an application f...
AIST
 
e business
 e business e business
Use case
Use caseUse case
Use case
Chris Gaeta
 
Font ideas for ancillaries
Font ideas for ancillariesFont ideas for ancillaries
Font ideas for ancillaries
Holly Logan
 
Una direccion escoar
Una direccion escoarUna direccion escoar
Una direccion escoar
Maritza Lopez
 
Componente natural
Componente naturalComponente natural
Componente natural
Maritza Lopez
 
Marina Danshina - The methodology of automated decryption of znamenny chants
Marina Danshina - The methodology of automated decryption of znamenny chantsMarina Danshina - The methodology of automated decryption of znamenny chants
Marina Danshina - The methodology of automated decryption of znamenny chants
AIST
 
Plantilla ensayo una dirección escolar
Plantilla ensayo una dirección escolarPlantilla ensayo una dirección escolar
Plantilla ensayo una dirección escolar
Maritza Lopez
 
Measuring the economic impact of swimming sport events
Measuring the economic impact of swimming sport eventsMeasuring the economic impact of swimming sport events
Measuring the economic impact of swimming sport eventsAngel Barajas
 
Poder, política i democràcia
Poder, política i democràciaPoder, política i democràcia
Poder, política i democràcia
Manel Villar (Institut Poeta Maragall)
 
Java/Scala Lab 2016. Сергей Моренец: Способы повышения эффективности в Java 8.
Java/Scala Lab 2016. Сергей Моренец: Способы повышения эффективности в Java 8.Java/Scala Lab 2016. Сергей Моренец: Способы повышения эффективности в Java 8.
Java/Scala Lab 2016. Сергей Моренец: Способы повышения эффективности в Java 8.
GeeksLab Odessa
 
The modern view on implementation of classic design patterns in Java
The modern view on implementation of classic design patterns in JavaThe modern view on implementation of classic design patterns in Java
The modern view on implementation of classic design patterns in Java
Mikalai Alimenkou
 
The Eff monad, one monad to rule them all
The Eff monad, one monad to rule them allThe Eff monad, one monad to rule them all
The Eff monad, one monad to rule them all
Eric Torreborre
 
Liberalisme i democràcia
Liberalisme i democràciaLiberalisme i democràcia
Liberalisme i democràcia
Manel Villar (Institut Poeta Maragall)
 
Emprenedors a l'eso. curs 2015 2016.
Emprenedors a l'eso. curs 2015 2016.Emprenedors a l'eso. curs 2015 2016.
Emprenedors a l'eso. curs 2015 2016.
Manel Villar (Institut Poeta Maragall)
 
Петр Ермаков, HeadHunter - Модерация резюме: от людей к роботам. Машинное обу...
Петр Ермаков, HeadHunter - Модерация резюме: от людей к роботам. Машинное обу...Петр Ермаков, HeadHunter - Модерация резюме: от людей к роботам. Машинное обу...
Петр Ермаков, HeadHunter - Модерация резюме: от людей к роботам. Машинное обу...
AIST
 
"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский
Fwdays
 

Viewers also liked (19)

Taylor swift music video (1)
Taylor swift music video (1)Taylor swift music video (1)
Taylor swift music video (1)
 
Kaytoue Mehdi - Finding duplicate labels in behavioral data: an application f...
Kaytoue Mehdi - Finding duplicate labels in behavioral data: an application f...Kaytoue Mehdi - Finding duplicate labels in behavioral data: an application f...
Kaytoue Mehdi - Finding duplicate labels in behavioral data: an application f...
 
e business
 e business e business
e business
 
Use case
Use caseUse case
Use case
 
eDRAM-Crolles_2005
eDRAM-Crolles_2005eDRAM-Crolles_2005
eDRAM-Crolles_2005
 
Font ideas for ancillaries
Font ideas for ancillariesFont ideas for ancillaries
Font ideas for ancillaries
 
Una direccion escoar
Una direccion escoarUna direccion escoar
Una direccion escoar
 
Componente natural
Componente naturalComponente natural
Componente natural
 
Marina Danshina - The methodology of automated decryption of znamenny chants
Marina Danshina - The methodology of automated decryption of znamenny chantsMarina Danshina - The methodology of automated decryption of znamenny chants
Marina Danshina - The methodology of automated decryption of znamenny chants
 
Plantilla ensayo una dirección escolar
Plantilla ensayo una dirección escolarPlantilla ensayo una dirección escolar
Plantilla ensayo una dirección escolar
 
Measuring the economic impact of swimming sport events
Measuring the economic impact of swimming sport eventsMeasuring the economic impact of swimming sport events
Measuring the economic impact of swimming sport events
 
Poder, política i democràcia
Poder, política i democràciaPoder, política i democràcia
Poder, política i democràcia
 
Java/Scala Lab 2016. Сергей Моренец: Способы повышения эффективности в Java 8.
Java/Scala Lab 2016. Сергей Моренец: Способы повышения эффективности в Java 8.Java/Scala Lab 2016. Сергей Моренец: Способы повышения эффективности в Java 8.
Java/Scala Lab 2016. Сергей Моренец: Способы повышения эффективности в Java 8.
 
The modern view on implementation of classic design patterns in Java
The modern view on implementation of classic design patterns in JavaThe modern view on implementation of classic design patterns in Java
The modern view on implementation of classic design patterns in Java
 
The Eff monad, one monad to rule them all
The Eff monad, one monad to rule them allThe Eff monad, one monad to rule them all
The Eff monad, one monad to rule them all
 
Liberalisme i democràcia
Liberalisme i democràciaLiberalisme i democràcia
Liberalisme i democràcia
 
Emprenedors a l'eso. curs 2015 2016.
Emprenedors a l'eso. curs 2015 2016.Emprenedors a l'eso. curs 2015 2016.
Emprenedors a l'eso. curs 2015 2016.
 
Петр Ермаков, HeadHunter - Модерация резюме: от людей к роботам. Машинное обу...
Петр Ермаков, HeadHunter - Модерация резюме: от людей к роботам. Машинное обу...Петр Ермаков, HeadHunter - Модерация резюме: от людей к роботам. Машинное обу...
Петр Ермаков, HeadHunter - Модерация резюме: от людей к роботам. Машинное обу...
 
"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский"Avoiding memory leaks in Android" Денис Жучинский
"Avoiding memory leaks in Android" Денис Жучинский
 

Similar to Beyond the Buzzword - a reactive application in practice

Sakai newcomer 10 easy questions not so easy
Sakai newcomer   10 easy questions not so easySakai newcomer   10 easy questions not so easy
Sakai newcomer 10 easy questions not so easydaniel.merino
 
Scala eXchange 2013 Report
Scala eXchange 2013 ReportScala eXchange 2013 Report
Scala eXchange 2013 Report
Michal Bigos
 
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd ErkOpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebula Project
 
How Reactive Streams & Akka Streams change the JVM Ecosystem
How Reactive Streams & Akka Streams change the JVM EcosystemHow Reactive Streams & Akka Streams change the JVM Ecosystem
How Reactive Streams & Akka Streams change the JVM Ecosystem
Konrad Malawski
 
Akka Streams in Action @ ScalaDays Berlin 2016
Akka Streams in Action @ ScalaDays Berlin 2016Akka Streams in Action @ ScalaDays Berlin 2016
Akka Streams in Action @ ScalaDays Berlin 2016
Konrad Malawski
 
Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0
Knoldus Inc.
 
Making Glance tasks work for you - OpenStack Summit May 2015 Vancouver
Making Glance tasks work for you - OpenStack Summit May 2015 VancouverMaking Glance tasks work for you - OpenStack Summit May 2015 Vancouver
Making Glance tasks work for you - OpenStack Summit May 2015 Vancouver
Brian Rosmaita
 
OpenNebula in a Multiuser Environment
OpenNebula in a Multiuser EnvironmentOpenNebula in a Multiuser Environment
OpenNebula in a Multiuser Environment
NETWAYS
 
End to End Akka Streams / Reactive Streams - from Business to Socket
End to End Akka Streams / Reactive Streams - from Business to SocketEnd to End Akka Streams / Reactive Streams - from Business to Socket
End to End Akka Streams / Reactive Streams - from Business to Socket
Konrad Malawski
 
Guidance, Code and Education: ScalaCenter and the Scala Community, Heather Mi...
Guidance, Code and Education: ScalaCenter and the Scala Community, Heather Mi...Guidance, Code and Education: ScalaCenter and the Scala Community, Heather Mi...
Guidance, Code and Education: ScalaCenter and the Scala Community, Heather Mi...
OW2
 
Spark Summit EU talk by Stephan Kessler
Spark Summit EU talk by Stephan KesslerSpark Summit EU talk by Stephan Kessler
Spark Summit EU talk by Stephan Kessler
Spark Summit
 
TuleapCon2017-Case-Study-Orange
TuleapCon2017-Case-Study-OrangeTuleapCon2017-Case-Study-Orange
TuleapCon2017-Case-Study-Orange
Tuleap
 
Contributing to RIPE Atlas: Operators, Researchers, Coders
Contributing to RIPE Atlas: Operators, Researchers, CodersContributing to RIPE Atlas: Operators, Researchers, Coders
Contributing to RIPE Atlas: Operators, Researchers, Coders
APNIC
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyJean-Sebastien Delfino
 
Alpakka - Connecting Kafka and ElasticSearch to Akka Streams
Alpakka - Connecting Kafka and ElasticSearch to Akka StreamsAlpakka - Connecting Kafka and ElasticSearch to Akka Streams
Alpakka - Connecting Kafka and ElasticSearch to Akka Streams
Knoldus Inc.
 
Introducing Scala in your existing Java project
Introducing Scala in your existing Java projectIntroducing Scala in your existing Java project
Introducing Scala in your existing Java project
ING-IT
 
Amped for AMP at Pubcon Las Vegas 2016
Amped for AMP at Pubcon Las Vegas 2016Amped for AMP at Pubcon Las Vegas 2016
Amped for AMP at Pubcon Las Vegas 2016
Search Commander, Inc.
 
OSMC 2012 | Icinga by Icinga Team
OSMC 2012 | Icinga by Icinga TeamOSMC 2012 | Icinga by Icinga Team
OSMC 2012 | Icinga by Icinga Team
NETWAYS
 
The Secret Life of Maven Central.pptx
The Secret Life of Maven Central.pptxThe Secret Life of Maven Central.pptx
The Secret Life of Maven Central.pptx
Steve Poole
 

Similar to Beyond the Buzzword - a reactive application in practice (20)

Sakai newcomer 10 easy questions not so easy
Sakai newcomer   10 easy questions not so easySakai newcomer   10 easy questions not so easy
Sakai newcomer 10 easy questions not so easy
 
Scala eXchange 2013 Report
Scala eXchange 2013 ReportScala eXchange 2013 Report
Scala eXchange 2013 Report
 
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd ErkOpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
 
How Reactive Streams & Akka Streams change the JVM Ecosystem
How Reactive Streams & Akka Streams change the JVM EcosystemHow Reactive Streams & Akka Streams change the JVM Ecosystem
How Reactive Streams & Akka Streams change the JVM Ecosystem
 
Akka Streams in Action @ ScalaDays Berlin 2016
Akka Streams in Action @ ScalaDays Berlin 2016Akka Streams in Action @ ScalaDays Berlin 2016
Akka Streams in Action @ ScalaDays Berlin 2016
 
Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0
 
Making Glance tasks work for you - OpenStack Summit May 2015 Vancouver
Making Glance tasks work for you - OpenStack Summit May 2015 VancouverMaking Glance tasks work for you - OpenStack Summit May 2015 Vancouver
Making Glance tasks work for you - OpenStack Summit May 2015 Vancouver
 
OpenNebula in a Multiuser Environment
OpenNebula in a Multiuser EnvironmentOpenNebula in a Multiuser Environment
OpenNebula in a Multiuser Environment
 
End to End Akka Streams / Reactive Streams - from Business to Socket
End to End Akka Streams / Reactive Streams - from Business to SocketEnd to End Akka Streams / Reactive Streams - from Business to Socket
End to End Akka Streams / Reactive Streams - from Business to Socket
 
Fluent logger-scala
Fluent logger-scalaFluent logger-scala
Fluent logger-scala
 
Guidance, Code and Education: ScalaCenter and the Scala Community, Heather Mi...
Guidance, Code and Education: ScalaCenter and the Scala Community, Heather Mi...Guidance, Code and Education: ScalaCenter and the Scala Community, Heather Mi...
Guidance, Code and Education: ScalaCenter and the Scala Community, Heather Mi...
 
Spark Summit EU talk by Stephan Kessler
Spark Summit EU talk by Stephan KesslerSpark Summit EU talk by Stephan Kessler
Spark Summit EU talk by Stephan Kessler
 
TuleapCon2017-Case-Study-Orange
TuleapCon2017-Case-Study-OrangeTuleapCon2017-Case-Study-Orange
TuleapCon2017-Case-Study-Orange
 
Contributing to RIPE Atlas: Operators, Researchers, Coders
Contributing to RIPE Atlas: Operators, Researchers, CodersContributing to RIPE Atlas: Operators, Researchers, Coders
Contributing to RIPE Atlas: Operators, Researchers, Coders
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
 
Alpakka - Connecting Kafka and ElasticSearch to Akka Streams
Alpakka - Connecting Kafka and ElasticSearch to Akka StreamsAlpakka - Connecting Kafka and ElasticSearch to Akka Streams
Alpakka - Connecting Kafka and ElasticSearch to Akka Streams
 
Introducing Scala in your existing Java project
Introducing Scala in your existing Java projectIntroducing Scala in your existing Java project
Introducing Scala in your existing Java project
 
Amped for AMP at Pubcon Las Vegas 2016
Amped for AMP at Pubcon Las Vegas 2016Amped for AMP at Pubcon Las Vegas 2016
Amped for AMP at Pubcon Las Vegas 2016
 
OSMC 2012 | Icinga by Icinga Team
OSMC 2012 | Icinga by Icinga TeamOSMC 2012 | Icinga by Icinga Team
OSMC 2012 | Icinga by Icinga Team
 
The Secret Life of Maven Central.pptx
The Secret Life of Maven Central.pptxThe Secret Life of Maven Central.pptx
The Secret Life of Maven Central.pptx
 

More from Manuel Bernhardt

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

More from Manuel Bernhardt (14)

Is there anybody out there? Reactive Systems Hamburg
Is there anybody out there? Reactive Systems HamburgIs there anybody out there? Reactive Systems Hamburg
Is there anybody out there? Reactive Systems Hamburg
 
Is there anybody out there? Scala Days Berlin 2018
Is there anybody out there? Scala Days Berlin 2018Is there anybody out there? Scala Days Berlin 2018
Is there anybody out there? Scala Days Berlin 2018
 
Is there anybody out there?
Is there anybody out there?Is there anybody out there?
Is there anybody out there?
 
Is there anybody out there?
Is there anybody out there?Is there anybody out there?
Is there anybody out there?
 
3 things you must know to think reactive - Geecon Kraków 2015
3 things you must know to think reactive - Geecon Kraków 20153 things you must know to think reactive - Geecon Kraków 2015
3 things you must know to think reactive - Geecon Kraków 2015
 
Reactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDaysReactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDays
 
Writing a technical book
Writing a technical bookWriting a technical book
Writing a technical book
 
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVMVoxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
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
Back to the futures, actors and pipes: using Akka for large-scale data migrationBack to the futures, actors and pipes: using Akka for large-scale data migration
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
Project Phoenix - From PHP to the Play Framework in 3 monthsProject Phoenix - From PHP to the Play Framework in 3 months
Project Phoenix - From PHP to the Play Framework in 3 months
 
Scala - Java2Days Sofia
Scala - Java2Days SofiaScala - Java2Days Sofia
Scala - Java2Days Sofia
 
Tips and tricks for setting up a Play 2 project
Tips and tricks for setting up a Play 2 projectTips and tricks for setting up a Play 2 project
Tips and tricks for setting up a Play 2 project
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Scala pitfalls
Scala pitfallsScala pitfalls
Scala pitfalls
 

Recently uploaded

Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
Aditya Rajan Patra
 
Fundamentals of Induction Motor Drives.pptx
Fundamentals of Induction Motor Drives.pptxFundamentals of Induction Motor Drives.pptx
Fundamentals of Induction Motor Drives.pptx
manasideore6
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
Kamal Acharya
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
dxobcob
 
PPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testingPPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testing
anoopmanoharan2
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
zwunae
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
SamSarthak3
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Teleport Manpower Consultant
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdfTutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
aqil azizi
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
Intella Parts
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
Kerry Sado
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
An Approach to Detecting Writing Styles Based on Clustering Techniques
An Approach to Detecting Writing Styles Based on Clustering TechniquesAn Approach to Detecting Writing Styles Based on Clustering Techniques
An Approach to Detecting Writing Styles Based on Clustering Techniques
ambekarshweta25
 
Building Electrical System Design & Installation
Building Electrical System Design & InstallationBuilding Electrical System Design & Installation
Building Electrical System Design & Installation
symbo111
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 
digital fundamental by Thomas L.floydl.pdf
digital fundamental by Thomas L.floydl.pdfdigital fundamental by Thomas L.floydl.pdf
digital fundamental by Thomas L.floydl.pdf
drwaing
 

Recently uploaded (20)

Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
 
Fundamentals of Induction Motor Drives.pptx
Fundamentals of Induction Motor Drives.pptxFundamentals of Induction Motor Drives.pptx
Fundamentals of Induction Motor Drives.pptx
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
 
PPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testingPPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testing
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdfTutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
 
Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
An Approach to Detecting Writing Styles Based on Clustering Techniques
An Approach to Detecting Writing Styles Based on Clustering TechniquesAn Approach to Detecting Writing Styles Based on Clustering Techniques
An Approach to Detecting Writing Styles Based on Clustering Techniques
 
Building Electrical System Design & Installation
Building Electrical System Design & InstallationBuilding Electrical System Design & Installation
Building Electrical System Design & Installation
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 
digital fundamental by Thomas L.floydl.pdf
digital fundamental by Thomas L.floydl.pdfdigital fundamental by Thomas L.floydl.pdf
digital fundamental by Thomas L.floydl.pdf
 

Beyond the Buzzword - a reactive application in practice

  • 1. Beyond the buzzword: a reac%ve web applica*on in prac*ce Manuel Bernhardt - @elmanu Slovak Scala Users' Group - May 2016 Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 2. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 3. Agenda 1. Evolu(on of web applica(on architecture 2. Evolu(on of hardware 3. Small Reac(ve Web Applica(on 4. Deployment If you have a ques-on, shoot! Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 4. Manuel Bernhardt • I help established companies ge3ng started with using reac%ve applica%ons in their distributed systems infrastructure • h9p://manuel.bernhardt.io Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 5. Manuel Bernhardt • I help established companies ge3ng started with using reac%ve applica%ons in their distributed systems infrastructure • h9p://manuel.bernhardt.io Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 6. A short (and mostly wrong) history of web applica1on architecture Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 7. "Good old days" architecture Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 8. "3 $er" architecture Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 9. "Cloud" architecture Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 10. "Cloud" architecture Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 11. "Microservices" architecture Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 12. "Microservices" = emerging architecture Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 13. Trend: increasing amount of network I/O Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 14. Trend: increasing amount of network I/O Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 15. Reac%ve architectural pa/ern Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 16. Evolu&on of hardware Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 17. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 18. Evolu&on of CPUs Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 19. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 20. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 21. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 22. Evolu&on of memory Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 23. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 24. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 25. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 26. Conclusion • many-core & distributed systems • awesome hardware • awesome so5ware? we need: • explicit asynchronous programming • explicit failure handling Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 27. Let's build a small Reac0ve Web Applica0on Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 28. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 29. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 30. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 31. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 32. Actors • lightweight objects • send and receive messages (mailbox) • can have children (supervision) "Long-lived" async computa5on Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 33. CODING Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 34. 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 Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 35. Pipe akka.pattern.pipe • bridge between Futures and Actors • implemented as anonymous actor Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 36. Pipe akka.pattern.pipe • bridge between Futures and Actors • implemented as anonymous actor Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 37. 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 Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 38. Deployment Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 39. Deployment • stand-alone vs. "elas/c deployment" • elas/c, fault-tolerant is not trivial • use a managed service / solu/on Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 40. Deployment • Lightbend ConductR • automated cluster management for Play / Akka / ... applica>ons • automated node failure & network par++on resolu+on Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 41. Deployment • fully managed opera0ons • auto scalability feature (horizontal & ver0cal) • a<rac0ve pricing Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 42. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 43. Load tes)ng Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 44. Gatling • open-source load tes0ng framework • built with Scala, Akka and Ne=y • two phases: record and run Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 45. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 46. 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) ) Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 47. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 48. Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 49. Bees with machine guns Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 50. Configuring all the things • Installing Python & bees with machine guns • AWS console (keys, security group w/ SSH access) • boto config file Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 51. Configuring all the things ~/.boto [Credentials] aws_access_key_id = foobar1 aws_secret_access_key = foobar2 [Boto] debug = 2 Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 52. A"ack! Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu
  • 53. Thank you! Ques%ons & Comments ? • h#p://manuel.bernhardt.io • manuel@bernhardt.io • @elmanu Slovak Scala Users' Group May 2016 - manuel.bernhardt.io - @elmanu