Is Play used in any high volume websocket/realtime apps?

131 views
Skip to first unread message

gitted

unread,
Jul 31, 2017, 4:56:05 PM7/31/17
to Play Framework
Hi,

I'm just evaluating whether play would be a good fit for a project that has major real-time/websocket part to it.

I like how the phoenix-framework is kind of 'real-time' as a first class citizen, whereas with play you have to go over these tutorials and most of them are fairly simple in nature.

Are there any case studies or high profile websites that you guys know of that use play's for real-time feature?

Has the move the actors in the backend versus netty changed things performance wise?

Thanks!

Will Sargent

unread,
Jul 31, 2017, 5:21:01 PM7/31/17
to play-fr...@googlegroups.com
Real-time is what Play is built on.  You've got a stream in, and you can stream data out.  Everything else is built on top of that:


There are a number of major, well known companies that use Play for streaming and real time:



You can see Play's performance results here -- they give you an idea of Akka HTTP vs Netty:





--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/play-framework/408db90a-13e8-482e-9600-c4a9188ae6f2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Greg Methvin

unread,
Jul 31, 2017, 5:31:43 PM7/31/17
to play-framework
On Mon, Jul 31, 2017 at 1:56 PM, gitted <sahme...@gmail.com> wrote:
Hi,

I'm just evaluating whether play would be a good fit for a project that has major real-time/websocket part to it.

I like how the phoenix-framework is kind of 'real-time' as a first class citizen, whereas with play you have to go over these tutorials and most of them are fairly simple in nature.

Phoenix is definitely pretty cool from what I've seen of it. The advantage of Play is you have access to the entire JVM ecosystem. You're also dealing with native threads on the JVM so you need to use slightly different abstractions than you do with the BEAM VM. Play tries to give you sensible defaults and conventions so you don't have to worry about that too much.
 

Are there any case studies or high profile websites that you guys know of that use play's for real-time feature?

Yes, there are many large companies using Play for websockets and realtime apps. I'd argue it's much more battle-tested in that respect. See this blog post from LinkedIn for example: https://engineering.linkedin.com/blog/2016/10/instant-messaging-at-linkedin--scaling-to-hundreds-of-thousands- 

Has the move the actors in the backend versus netty changed things performance wise?

Play already was using Akka internally for handling requests when using Netty. The move to Akka HTTP just means we're using Akka at the low level for the HTTP server component as well. Performance-wise, we've found the performance of Akka HTTP and Netty to be about equal (about 75000 req/s for a simple app with no filters). 
 

Thanks!

--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/play-framework/408db90a-13e8-482e-9600-c4a9188ae6f2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Greg Methvin
Tech Lead - Play Framework

gitted

unread,
Aug 1, 2017, 2:09:37 PM8/1/17
to Play Framework
>>Phoenix is definitely pretty cool from what I've seen of it. The advantage of Play is you have access to the entire JVM ecosystem. You're also dealing with native threads on >>the JVM so you need to use slightly different abstractions than you do with the BEAM VM. Play tries to give you sensible defaults and conventions so you don't have to >>worry about that too much.
The one thing I like is how they have their own client library for websockets etc.

What web socket javascript client library is widely used in the play! world?


On Monday, July 31, 2017 at 5:31:43 PM UTC-4, Greg Methvin wrote:
On Mon, Jul 31, 2017 at 1:56 PM, gitted <sahme...@gmail.com> wrote:
Hi,

I'm just evaluating whether play would be a good fit for a project that has major real-time/websocket part to it.

I like how the phoenix-framework is kind of 'real-time' as a first class citizen, whereas with play you have to go over these tutorials and most of them are fairly simple in nature.

Phoenix is definitely pretty cool from what I've seen of it. The advantage of Play is you have access to the entire JVM ecosystem. You're also dealing with native threads on the JVM so you need to use slightly different abstractions than you do with the BEAM VM. Play tries to give you sensible defaults and conventions so you don't have to worry about that too much.
 

Are there any case studies or high profile websites that you guys know of that use play's for real-time feature?

Yes, there are many large companies using Play for websockets and realtime apps. I'd argue it's much more battle-tested in that respect. See this blog post from LinkedIn for example: https://engineering.linkedin.com/blog/2016/10/instant-messaging-at-linkedin--scaling-to-hundreds-of-thousands- 

Has the move the actors in the backend versus netty changed things performance wise?

Play already was using Akka internally for handling requests when using Netty. The move to Akka HTTP just means we're using Akka at the low level for the HTTP server component as well. Performance-wise, we've found the performance of Akka HTTP and Netty to be about equal (about 75000 req/s for a simple app with no filters). 
 

Thanks!

--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framewor...@googlegroups.com.

gitted

unread,
Aug 1, 2017, 2:11:26 PM8/1/17
to Play Framework
>>You can see Play's performance results here -- they give you an idea of Akka HTTP vs Netty:
I was more referring to the # of websocket connections that are possible.  



Thanks!


On Monday, July 31, 2017 at 5:21:01 PM UTC-4, Will Sargent wrote:
Real-time is what Play is built on.  You've got a stream in, and you can stream data out.  Everything else is built on top of that:


There are a number of major, well known companies that use Play for streaming and real time:



You can see Play's performance results here -- they give you an idea of Akka HTTP vs Netty:




On Mon, Jul 31, 2017 at 1:56 PM, gitted <sahme...@gmail.com> wrote:
Hi,

I'm just evaluating whether play would be a good fit for a project that has major real-time/websocket part to it.

I like how the phoenix-framework is kind of 'real-time' as a first class citizen, whereas with play you have to go over these tutorials and most of them are fairly simple in nature.

Are there any case studies or high profile websites that you guys know of that use play's for real-time feature?

Has the move the actors in the backend versus netty changed things performance wise?

Thanks!

--
You received this message because you are subscribed to the Google Groups "Play Framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email to play-framewor...@googlegroups.com.

Will Sargent

unread,
Aug 1, 2017, 6:25:37 PM8/1/17
to play-fr...@googlegroups.com
The number of websocket connections isn't really the right question to ask, for reasons described here:


Christopher Johnson at Eero has done some concurrent connection testing with Play


Here, he's using a plain old AWS c3.2xlarge (8 vCPU, 15 GB) with no special tweaking with 200k concurrent connections.  I think probably switching to native epoll and doing some JVM tuning would help a bunch here.

The Phoenix load test on that scale seems to come out to 330k concurrent requests, but it was running native hardware (rather than AWS), and multiple rounds of tweaks, and also had rackspace support doing the tuning, so it's difficult to compare apples and oranges.  You could run their load test on an AWS instance with the same config and see what it looks like for you.

Hope that helps,
Will.

To unsubscribe from this group and stop receiving emails from it, send an email to play-framework+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/play-framework/e35fa2b7-1fd8-4fe5-80c7-e949973e5288%40googlegroups.com.

Will Sargent

unread,
Aug 1, 2017, 7:26:36 PM8/1/17
to Play Framework


On Tuesday, August 1, 2017 at 11:09:37 AM UTC-7, gitted wrote:
>>Phoenix is definitely pretty cool from what I've seen of it. The advantage of Play is you have access to the entire JVM ecosystem. You're also dealing with native threads on >>the JVM so you need to use slightly different abstractions than you do with the BEAM VM. Play tries to give you sensible defaults and conventions so you don't have to >>worry about that too much.
The one thing I like is how they have their own client library for websockets etc.

What web socket javascript client library is widely used in the play! world?

Play has full socket.io support, if that's what you mean. :-)

gitted

unread,
Aug 1, 2017, 9:19:36 PM8/1/17
to Play Framework
What kind of timing was that? :)     


(blog post posted on aug. 1st !! )

Will Sargent

unread,
Aug 1, 2017, 11:46:50 PM8/1/17
to Play Framework


On Monday, July 31, 2017 at 2:31:43 PM UTC-7, Greg Methvin wrote:


On Mon, Jul 31, 2017 at 1:56 PM, gitted <sahme...@gmail.com> wrote:
Hi,

I'm just evaluating whether play would be a good fit for a project that has major real-time/websocket part to it.

I like how the phoenix-framework is kind of 'real-time' as a first class citizen, whereas with play you have to go over these tutorials and most of them are fairly simple in nature.

Phoenix is definitely pretty cool from what I've seen of it. The advantage of Play is you have access to the entire JVM ecosystem. You're also dealing with native threads on the JVM so you need to use slightly different abstractions than you do with the BEAM VM. Play tries to give you sensible defaults and conventions so you don't have to worry about that too much.

 I took a peak at GenStage -- they've clearly been looking at akka-streams for the backpressure implementation.  I still have an instinctive reaction against dynamically typed languages though.

gitted

unread,
Aug 4, 2017, 4:24:35 PM8/4/17
to Play Framework
it is easier to bend the light with dynamically typed languages :)
j/k

Thanks for putting this sample out there, just what I was looking for!
Reply all
Reply to author
Forward
0 new messages