$30 off During Our Annual Pro Sale. View Details »
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
200
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
270
Refactoring
khannedy
0
340
Multi-Datacenter Kafka at Blibli.com
khannedy
2
1.5k
QA Tools - Research and Development
khannedy
0
290
Reactive Puzzle
khannedy
0
210
Event-Driven Architecture
khannedy
1
2k
Resilience Engineering with Hystrix and Spring
khannedy
1
570
Mocking for Unit Test using Mockito
khannedy
1
340
Centralized Configuration using Consul and Spring Cloud
khannedy
2
710
Other Decks in Technology
See All in Technology
意外と知らない状態遷移テストの世界
nihonbuson
PRO
1
230
ESXi のAIOps だ!2025冬
unnowataru
0
330
Microsoft Agent Frameworkの可観測性
tomokusaba
1
110
さくらのクラウド開発ふりかえり2025
kazeburo
2
940
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
270
Building Serverless AI Memory with Mastra × AWS
vvatanabe
0
450
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
200
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
200
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
1.6k
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
130
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
1
1.8k
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
4
830
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
66
Designing for humans not robots
tammielis
254
26k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
28
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Test your architecture with Archunit
thirion
1
2.1k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
51
42k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
860
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
250
Become a Pro
speakerdeck
PRO
31
5.7k
Accessibility Awareness
sabderemane
0
24
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
88
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/