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
330
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
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
170
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
160
ChatGPTとPlantUML/Mermaidによるソフトウェア設計
gowhich501
1
130
なぜテストマネージャの視点が 必要なのか? 〜 一歩先へ進むために 〜
moritamasami
0
210
250905 大吉祥寺.pm 2025 前夜祭 「プログラミングに出会って20年、『今』が1番楽しい」
msykd
PRO
1
680
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
150
AI時代に非連続な成長を実現するエンジニアリング戦略
sansantech
PRO
3
1.2k
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
落ちる 落ちるよ サーバーは落ちる
suehiromasatoshi
0
150
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
300
2025年になってもまだMySQLが好き
yoku0825
8
4.6k
研究開発と製品開発、両利きのロボティクス
youtalk
1
510
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
GitHub's CSS Performance
jonrohan
1032
460k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Agile that works and the tools we love
rasmusluckow
330
21k
Speed Design
sergeychernyshev
32
1.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
How to Ace a Technical Interview
jacobian
279
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
How GitHub (no longer) Works
holman
315
140k
Docker and Python
trallard
45
3.6k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
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/