SlideShare une entreprise Scribd logo
1  sur  33
Building Reactive Applications
James Ward
www.jamesward.com
@_JamesWard

© 2013 Typesafe Inc.

|

All rights reserved

|

1
Agenda
•Intro to Reactive
•The Typesafe Platform
–Typesafe Activator
–Play Framework
–Akka
–Scala
–Tools

•Questions

© 2013 Typesafe Inc.

|

All rights reserved

|

2
Software is becoming Reactive

© 2013 Typesafe Inc.

|

All rights reserved

|

3
Tenets of Reactive Software

© 2013 Typesafe Inc.

|

All rights reserved

|

4
ReactiveManifesto.org

© 2013 Typesafe Inc.

|

All rights reserved

|

5
The Typesafe Reactive Platform

© 2013 Typesafe Inc.

|

All rights reserved

|

6
Productivity

Performance
© 2013 Typesafe Inc.

|

All rights reserved

|

7
Go Reactive with Typesafe Activator

© 2013 Typesafe Inc.

|

All rights reserved

|

9
© 2013 Typesafe Inc.

|

All rights reserved

|

10
Play Framework
The High Velocity Web Framework For Java and Scala

© 2013 Typesafe Inc.

|

All rights reserved

|

12
© 2013 Typesafe Inc.

|

All rights reserved

|

13
© 2013 Typesafe Inc.

|

All rights reserved

|

14
© 2013 Typesafe Inc.

|

All rights reserved

|

15
Akka

© 2013 Typesafe Inc.

|

All rights reserved

|

17
© 2013 Typesafe Inc.

|

All rights reserved

|

18
Actors
•Event-driven
•Managed concurrency
•Resilience & supervision
•Scales up & out
•Non-request based lifecycle

© 2013 Typesafe Inc.

|

All rights reserved

|

19
Scala

© 2013 Typesafe Inc.

|

All rights reserved

|

21
© 2013 Typesafe Inc.

|

All rights reserved

|

22
Go Reactive!

© 2013 Typesafe Inc.

|

All rights reserved

|

23
Reactive Web / Mobile Apps
•Reactive Request
–Async & Non-Blocking Request & Response

•Reactive Composition
–Reactive Request + Reactive Request + ...

•Reactive Push
–Stream Producer

•2-way Reactive = Bi-Directional Reactive Push
•Reactive UIs
–Interactive, Data Synchronization, Real-time Collaboration

© 2013 Typesafe Inc.

|

All rights reserved

|

24
Actors
•event-driven
•managed concurrency
•resilience & supervision
•non-request based lifecycle

© 2013 Typesafe Inc.

|

All rights reserved

|

25
Request/Response: Traditional vs. Reactive

def getTweets = Action {
Ok(WS.get("http://twitter.com/"))
}
Client

blocking

Server

blocking

Service

nonblocking

Service

def getTweets = Action { Async {
Ok(WS.get("http://twitter.com/"))
}}
Client

nonblocking

Server

© 2013 Typesafe Inc.

|

All rights reserved

|

26
Streaming: Traditional vs. Reactive

// comet style polling
def getNewTweets = Action {
Ok(queuedEvents)
}

Client

blocking

Server

blocking

Service

Server

nonblocking

Service

def streamTweets = Action {
Ok.stream(eventProducer)
}
Client

nonblocking

© 2013 Typesafe Inc.

|

All rights reserved

|

28
2-way Reactive

Producer
Consumer

non-blocking

Consumer
Producer

non-blocking

© 2013 Typesafe Inc.

|

All rights reserved

|

29
Tools

© 2013 Typesafe Inc.

|

All rights reserved

|

31
Tooling

© 2013 Typesafe Inc.

|

All rights reserved

|

32
Testing
•JUnit
•ScalaTest
•Specs2
•Gatling

© 2013 Typesafe Inc.

|

All rights reserved

|

33
Build Infrastructure
•sbt, Maven, Gradle
•Jenkins, Bamboo
•TDD, CI, CD

© 2013 Typesafe Inc.

|

All rights reserved

|

34
Deployment
•Containerless
•Play
–Stateless
•Canary Deployments
•Rolling Upgrades
•Schema Evolutions

•Akka
–Clustering in 2.2 with Segmented Upgrades

© 2013 Typesafe Inc.

|

All rights reserved

|

35
Monitoring
•Typesafe Console
•New Relic
•Takipi
•AppDynamics

© 2013 Typesafe Inc.

|

All rights reserved

|

36
Reactive Scales

© 2013 Typesafe Inc.

|

All rights reserved

|

37
© 2013 Typesafe Inc.

|

All rights reserved

|

38
Go Reactive!

© 2013 Typesafe Inc.

|

All rights reserved

|

39

Contenu connexe

En vedette

An Introduction to Reactive Application, Reactive Streams, and options for JVM
An Introduction to Reactive Application, Reactive Streams, and options for JVMAn Introduction to Reactive Application, Reactive Streams, and options for JVM
An Introduction to Reactive Application, Reactive Streams, and options for JVM
Steve Pember
 
Reactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsReactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and Grails
Steve Pember
 

En vedette (9)

Salesforce Campus Tour - Developer Advanced
Salesforce Campus Tour - Developer AdvancedSalesforce Campus Tour - Developer Advanced
Salesforce Campus Tour - Developer Advanced
 
Reactive applications tools of the trade huff po
Reactive applications   tools of the trade huff poReactive applications   tools of the trade huff po
Reactive applications tools of the trade huff po
 
Anatomy of a Reactive Application
Anatomy of a Reactive ApplicationAnatomy of a Reactive Application
Anatomy of a Reactive Application
 
An Introduction to Reactive Application, Reactive Streams, and options for JVM
An Introduction to Reactive Application, Reactive Streams, and options for JVMAn Introduction to Reactive Application, Reactive Streams, and options for JVM
An Introduction to Reactive Application, Reactive Streams, and options for JVM
 
Building Reactive applications with Akka
Building Reactive applications with AkkaBuilding Reactive applications with Akka
Building Reactive applications with Akka
 
Going Reactive in Java with Typesafe Reactive Platform
Going Reactive in Java with Typesafe Reactive PlatformGoing Reactive in Java with Typesafe Reactive Platform
Going Reactive in Java with Typesafe Reactive Platform
 
Reactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsReactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and Grails
 
Introduction to Reactive Java
Introduction to Reactive JavaIntroduction to Reactive Java
Introduction to Reactive Java
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)
 

Similaire à Building Reactive Apps

A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...
CollabNet
 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
Ed Burns
 

Similaire à Building Reactive Apps (20)

Serena Webcast: Accelerating Application Delivery with Continuous Testing
Serena Webcast: Accelerating Application Delivery with Continuous TestingSerena Webcast: Accelerating Application Delivery with Continuous Testing
Serena Webcast: Accelerating Application Delivery with Continuous Testing
 
Writing microservices in java java one-2015-10-28
Writing microservices in java java one-2015-10-28Writing microservices in java java one-2015-10-28
Writing microservices in java java one-2015-10-28
 
Writing microservices in Java -- Chicago-2015-11-10
Writing microservices in Java -- Chicago-2015-11-10Writing microservices in Java -- Chicago-2015-11-10
Writing microservices in Java -- Chicago-2015-11-10
 
Agile and Scrum for Executives
Agile and Scrum for ExecutivesAgile and Scrum for Executives
Agile and Scrum for Executives
 
Troubleshooting Anypoint Platform
Troubleshooting Anypoint PlatformTroubleshooting Anypoint Platform
Troubleshooting Anypoint Platform
 
HADR Best Practices (High Availability Disaster Recovery)
HADR Best Practices (High Availability Disaster Recovery)HADR Best Practices (High Availability Disaster Recovery)
HADR Best Practices (High Availability Disaster Recovery)
 
Securing the Data Hub--Protecting your Customer IP (Technical Workshop)
Securing the Data Hub--Protecting your Customer IP (Technical Workshop)Securing the Data Hub--Protecting your Customer IP (Technical Workshop)
Securing the Data Hub--Protecting your Customer IP (Technical Workshop)
 
DevOps and AWS
DevOps and AWSDevOps and AWS
DevOps and AWS
 
A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...
 
Building Highly Scalable and Flexible SaaS Solutions
Building Highly Scalable and Flexible SaaS SolutionsBuilding Highly Scalable and Flexible SaaS Solutions
Building Highly Scalable and Flexible SaaS Solutions
 
A proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversionA proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversion
 
Cloud native Microservices using Spring Boot
Cloud native Microservices using Spring BootCloud native Microservices using Spring Boot
Cloud native Microservices using Spring Boot
 
Application patterns
Application patternsApplication patterns
Application patterns
 
Continuous Testing of Cloud Applications
Continuous Testing of Cloud ApplicationsContinuous Testing of Cloud Applications
Continuous Testing of Cloud Applications
 
Using MySQL Enterprise Monitor for Continuous Performance Improvement
Using MySQL Enterprise Monitor for Continuous Performance ImprovementUsing MySQL Enterprise Monitor for Continuous Performance Improvement
Using MySQL Enterprise Monitor for Continuous Performance Improvement
 
Applying systems thinking to AWS enterprise application migration
Applying systems thinking to AWS enterprise application migrationApplying systems thinking to AWS enterprise application migration
Applying systems thinking to AWS enterprise application migration
 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
 
Scaling Application Development & Delivery across the Enterprise
Scaling Application Development & Delivery across the EnterpriseScaling Application Development & Delivery across the Enterprise
Scaling Application Development & Delivery across the Enterprise
 
Science logic cloudstack london meetup 2015 02-11
Science logic cloudstack london meetup 2015 02-11Science logic cloudstack london meetup 2015 02-11
Science logic cloudstack london meetup 2015 02-11
 
MySQL enterprise edition
MySQL enterprise edition MySQL enterprise edition
MySQL enterprise edition
 

Plus de James Ward

Planet of the AOPs
Planet of the AOPsPlanet of the AOPs
Planet of the AOPs
James Ward
 

Plus de James Ward (7)

Kotlin Mullets
Kotlin MulletsKotlin Mullets
Kotlin Mullets
 
Koober Machine Learning
Koober Machine LearningKoober Machine Learning
Koober Machine Learning
 
Introduction to Machine Learning
Introduction to Machine LearningIntroduction to Machine Learning
Introduction to Machine Learning
 
Salesforce Campus Tour - Developer Intro
Salesforce Campus Tour - Developer IntroSalesforce Campus Tour - Developer Intro
Salesforce Campus Tour - Developer Intro
 
Salesforce Campus Tour - Declarative
Salesforce Campus Tour - DeclarativeSalesforce Campus Tour - Declarative
Salesforce Campus Tour - Declarative
 
Integrating Clouds & Humans with Wearable Apps
Integrating Clouds & Humans with Wearable AppsIntegrating Clouds & Humans with Wearable Apps
Integrating Clouds & Humans with Wearable Apps
 
Planet of the AOPs
Planet of the AOPsPlanet of the AOPs
Planet of the AOPs
 

Dernier

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Dernier (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

Building Reactive Apps