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
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
350
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
自己管理型チームと個人のセルフマネジメント 〜モチベーション編〜
kakehashi
PRO
5
2.9k
技術選定、下から見るか?横から見るか?
masakiokuda
0
190
2025年 山梨の技術コミュニティを振り返る
yuukis
0
160
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
330
Databricks Free Editionで始めるLakeflow SDP
taka_aki
0
100
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Introduction to Bill One Development Engineer
sansan33
PRO
0
350
あの夜、私たちは「人間」に戻った。 ── 災害ユートピア、贈与、そしてアジャイルの再構築 / 20260108 Hiromitsu Akiba
shift_evolve
PRO
0
630
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
サラリーマンソフトウェアエンジニアのキャリア
yuheinakasaka
39
18k
手軽に作れる電卓を作って イベントソーシングに親しもう CQRS+ESカンファレンス2026
akinoriakatsuka
0
250
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
190
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
13k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
200
The SEO Collaboration Effect
kristinabergwall1
0
330
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
89
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
410
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
100
Crafting Experiences
bethany
0
29
Navigating Team Friction
lara
191
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Utilizing Notion as your number one productivity tool
mfonobong
2
200
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/