Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Play Framework
Search
Eko Kurniawan Khannedy
March 14, 2016
Technology
2
190
Play Framework
Sharing Session Play Framework
Eko Kurniawan Khannedy
March 14, 2016
Tweet
Share
More Decks by Eko Kurniawan Khannedy
See All by Eko Kurniawan Khannedy
Monolith to Event-Driven Microservices
khannedy
1
260
Refactoring
khannedy
0
340
Multi-Datacenter Kafka at Blibli.com
khannedy
2
1.5k
QA Tools - Research and Development
khannedy
0
280
Reactive Puzzle
khannedy
0
200
Event-Driven Architecture
khannedy
1
1.9k
Resilience Engineering with Hystrix and Spring
khannedy
1
560
Mocking for Unit Test using Mockito
khannedy
1
340
Centralized Configuration using Consul and Spring Cloud
khannedy
2
700
Other Decks in Technology
See All in Technology
LLMアプリケーション開発におけるセキュリティリスクと対策 / LLM Application Security
flatt_security
7
1.7k
非同期処理実行基盤 Delayed脱出 → Solid Queue完全移行への旅路。
srockstyle
3
1.6k
From Prompt to Product @ How to Web 2025, Bucharest, Romania
janwerner
0
110
KMP の Swift export
kokihirokawa
0
310
#普通の文系サラリーマンチャレンジ 自分でアプリ開発と電子工作を続けたら人生が変わった
tatsuya1970
0
910
定期的な価値提供だけじゃない、スクラムが導くチームの共創化 / 20251004 Naoki Takahashi
shift_evolve
PRO
3
220
Sidekiq その前に:Webアプリケーションにおける非同期ジョブ設計原則
morihirok
17
7k
ユニットテストに対する考え方の変遷 / Everyone should watch his live coding
mdstoy
0
110
Green Tea Garbage Collector の今
zchee
PRO
2
380
生成AIを活用したZennの取り組み事例
ryosukeigarashi
0
180
Pure Goで体験するWasmの未来
askua
1
170
about #74462 go/token#FileSet
tomtwinkle
1
270
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Being A Developer After 40
akosma
91
590k
A designer walks into a library…
pauljervisheath
208
24k
Docker and Python
trallard
46
3.6k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.6k
Faster Mobile Websites
deanohume
310
31k
Unsuck your backbone
ammeep
671
58k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Cult of Friendly URLs
andyhume
79
6.6k
Transcript
PLAY FRAMEWORK EKO KURNIAWAN KHANNEDY
EKO KURNIAWAN KHANNEDY ▸ Principal Software Development Engineer at blibli.com
▸ Part of Research and Development Team ▸
[email protected]
PLAY FRAMEWORK
INTRO PLAY FRAMEWORK
IF YOU ARE JAVA DEVELOPER
THIS IS YOUR LIFE
PLAY FRAMEWORK WAITING…
PLAY FRAMEWORK XMHELL
PLAY FRAMEWORK TAIL -F APPLICATION.LOG
PLAY FRAMEWORK THREAD POOL HELL
PLAY FRAMEWORK :(
THERE IS A BETTER WAY
PLAY FRAMEWORK A MODERN WEB FRAMEWORK FOR JAVA AND SCALA
PLAY FRAMEWORK OUTLINE ▸ Getting Started ▸ Hot Reload ▸
Error Handling ▸ Threaded & Evented ▸ Non Blocking IO ▸ Performance
GETTING STARTED PLAY FRAMEWORK
PLAY FRAMEWORK PLAY FRAMEWORK
PLAY FRAMEWORK INSTALLING
PLAY FRAMEWORK ACTIVATOR NEW
PLAY FRAMEWORK APP STRUCTURE
PLAY FRAMEWORK IDE
PLAY FRAMEWORK ACTIVATOR RUN
PLAY FRAMEWORK LOCALHOST:9000
PLAY FRAMEWORK OUTLINE ▸ Getting Started ▸ Hot Reload ▸
Error Handling ▸ Threaded & Evented ▸ Non Blocking IO ▸ Performance
HOT RELOAD PLAY FRAMEWORK
PLAY FRAMEWORK CREATE NEW CONTROLLER AND ACTION
PLAY FRAMEWORK ROUTING
NOW, RESTART THE SERVER
None
PLAY FRAMEWORK HOT RELOAD
PLAY FRAMEWORK LOCALHOST:9000/HELLO
PLAY FRAMEWORK OUTLINE ▸ Getting Started ▸ Hot Reload ▸
Error Handling ▸ Threaded & Evented ▸ Non Blocking IO ▸ Performance
ERROR HANDLING PLAY FRAMEWORK
PLAY FRAMEWORK ADD NEW PARAMETER
PLAY FRAMEWORK CHANGE ROUTING
PLAY FRAMEWORK BAD REQUEST
PLAY FRAMEWORK OK
PLAY FRAMEWORK MAKE MISTAKE
PLAY FRAMEWORK COMPILE ERROR
PLAY FRAMEWORK NOT FOUND
PLAY FRAMEWORK ADD A VIEW
PLAY FRAMEWORK THE REAL VIEW
PLAY FRAMEWORK CHANGE CONTROLLER
PLAY FRAMEWORK LOCALHOST:9000/HELLO
PLAY FRAMEWORK VIEW ERROR
PLAY FRAMEWORK OUTLINE ▸ Getting Started ▸ Hot Reload ▸
Error Handling ▸ Threaded & Evented ▸ Non Blocking IO ▸ Performance
THREADED VS EVENTED PLAY FRAMEWORK
PLAY FRAMEWORK MOST PEOPLE ARE USED THREADED SERVER
THREADED SERVERS ASSIGN ONE THREAD PER REQUEST AND USE BLOCKING
I/O PLAY FRAMEWORK
PLAY FRAMEWORK EVENTED SERVERS ARE GAINING POPULARITY
EVENTED SERVERS HAVE ONE THREAD/ PROCESS PER CPU CORE AND
USE NON- BLOCKING I/O PLAY FRAMEWORK
WHY THREADED VS EVENTED MATTERS FOR US PLAY FRAMEWORK
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE
PLAY FRAMEWORK MICROSERVICES
PLAY FRAMEWORK THREADED DILEMMA ▸ Create new thread is expensive.
▸ Use a thread pool. ▸ Too many threads in thread pool. ▸ Memory overhead. ▸ Context switching overhead. ▸ Too few threads in thread pool. ▸ Run out of threads, latency goes up. ▸ Sensitive to timeout.
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE LET’S SAY LATENCY GOES UP HERE
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE THREAD BLOCKED HERE
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE LATENCY GOES UP HERE
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE THREAD BLOCKED HERE
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE AND HERE
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE HERE TOO
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE AND THERE
PLAY FRAMEWORK MICROSERVICES LOAD BALANCER INTERNET FRONTEND SERVER FRONTEND SERVER
FRONTEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER BACKEND SERVER DATABASE DATABASE DATABASE AND THERE UPS JANGAN PANIK
PLAY FRAMEWORK PLAY FRAMEWORK Play Framework is build on top
Netty and Akka, so it supports non-blocking I/O.
PLAY FRAMEWORK NIO BENEFITS ▸ No sensitive to downstream slowness.
▸ Easy to parallelize I/O ▸ Support many concurrent and long-running connections, enabling : ▸ WebSocket ▸ Comet ▸ Server-Sent Events
PLAY FRAMEWORK OUTLINE ▸ Getting Started ▸ Hot Reload ▸
Error Handling ▸ Threaded & Evented ▸ Non Blocking IO ▸ Performance
NON BLOCKING I/0 PLAY FRAMEWORK
PLAY FRAMEWORK NON BLOCKING HTTP CLIENT
A FUTURE[T] WILL EVENTUALLY CONTAIN THE VALUE T (OR AN
ERROR) PLAY FRAMEWORK
PLAY FRAMEWORK NON BLOCKING HTTP CLIENT
PLAY FRAMEWORK ROUTING
PLAY FRAMEWORK RESULT
WE JUST BUILD COMPLETELY NON BLOCKING PROXY PLAY FRAMEWORK
PLAY FRAMEWORK LET’S PROVE IT
PLAY FRAMEWORK LET’S PROVE IT
NIO MAKE PARALLEL REQUEST EASY. LET’S TRY IT PLAY FRAMEWORK
PLAY FRAMEWORK PARALLEL IN NIO
PLAY FRAMEWORK PARALLEL IN NIO
PLAY FRAMEWORK PARALLEL IN NIO
PLAY FRAMEWORK PARALLEL IN NIO
PLAY FRAMEWORK OUTLINE ▸ Getting Started ▸ Hot Reload ▸
Error Handling ▸ Threaded & Evented ▸ Non Blocking IO ▸ Performance
PERFORMANCE PLAY FRAMEWORK
IS PLAY FRAMEWORK WEB SCALE? PLAY FRAMEWORK
PLAY FRAMEWORK RAW HORSEPOWER CONCURRENT HORSEPOWER MULTIPLE DEVELOPERS SINGLE DEVELOPER
THEORETICAL MAXIMUM PERFORMANCE FOR THE SERVER IN IDEAL CONDITIONS. Raw
Horsepower PLAY FRAMEWORK
PERFORMANCE WITH MANY USERS, I/O, AND MORE REAL-WORLD SCENARIOS. Concurrent
Horsepower PLAY FRAMEWORK
HOW EASY IT IS TO GET STARTED, HOW QUICKLY A
SINGLE DEVELOPER CAN BUILD THINGS Single Developer PLAY FRAMEWORK
HOW THE FRAMEWORK TOLERATES MANY DEVELOPERS WORKING CONCURRENTLY Multiple Developers
PLAY FRAMEWORK
PLAY FRAMEWORK RAW HORSEPOWER CONCURRENT HORSEPOWER MULTIPLE DEVELOPERS SINGLE DEVELOPER
PLAY FRAMEWORK RAW HORSEPOWER CONCURRENT HORSEPOWER MULTIPLE DEVELOPERS SINGLE DEVELOPER
PLAY FRAMEWORK RAW HORSEPOWER CONCURRENT HORSEPOWER MULTIPLE DEVELOPERS SINGLE DEVELOPER
PLAY FRAMEWORK RAW HORSEPOWER CONCURRENT HORSEPOWER MULTIPLE DEVELOPERS SINGLE DEVELOPER
PLAY FRAMEWORK RAW HORSEPOWER CONCURRENT HORSEPOWER MULTIPLE DEVELOPERS SINGLE DEVELOPER
PLAY FRAMEWORK RAW HORSEPOWER CONCURRENT HORSEPOWER MULTIPLE DEVELOPERS SINGLE DEVELOPER
PRODUCTION ONE MORE THING
PLAY FRAMEWORK ACTIVATOR DIST
PLAY FRAMEWORK DISTRIBUTION FILE
PLAY FRAMEWORK DISTRIBUTION STRUCTURE
PLAY FRAMEWORK OR SPECIFIC OPERATING SYSTEM ▸ windows:packageBin ▸ universal:packageOsxDmg
▸ debian:packageBin ▸ rpm:packageBin ▸ docker:publishLocal
PLAY FRAMEWORK OS X DISTRIBUTION FILE
PLAY FRAMEWORK RUNNING ON SERVER
PLAY FRAMEWORK PLAY ON PRODUCTION
PLAY FRAMEWORK PLAY ON PRODUCTION
PLAY FRAMEWORK PLAY ON PRODUCTION
PLAY FRAMEWORK PLAY ON PRODUCTION
THANKS
PLAY FRAMEWORK REFERENCES ▸ http://www.slideshare.net/brikis98/the-play-framework-at-linkedin ▸ https://www.playframework.com ▸ http://netty.io ▸
http://akka.io ▸ https://www.lightbend.com/activator/download ▸ http://zeroturnaround.com/rebellabs/java-ee-productivity-report-2011/