-
Hello! We have a Play application that has been in production since 2017. Since then, we have used the Netty server, which I believe was the default (or maybe only option) at that time. For an upcoming release, we have updated from Play 2.7.1 to Play 2.8.19. As part of that, since the default server backend is now Akka HTTP, we were planning to also migrate from Netty to Akka HTTP. However, we are admittedly not super well versed in the differences between Netty and Akka HTTP. I suppose our worst fear would be that Akka HTTP is not as efficient or effective as Netty, or it doesn't have the same scaling characteristics. For example, I saw an older post on the Lightbend forums where a user was having some issues scaling Akka HTTP, and was ultimately able to fix it by manually changing the configuration for concurrent users (https://discuss.lightbend.com/t/scaling-play-2-7-x-with-akka-http-server-for-a-large-number-of-concurrent-sse-connections/7679/8). Anyway, I guess the questions I had related to this:
Any insight or feedback would be greatly appreciated! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 5 replies
-
Hi, @kromenak! Firstly, because we plan migrate from Akka HTTP to Pekko HTTP in Play 3. You can get more information in this PR playframework#11804. It hasn't merged yet, but it have a lot of things about current context. Secondly, we planed but didn't make Netty as default backend in Play 2.9. (see playframework#11495). I think this question will be discussed again after release Play 2.9 and my personal opinion is Netty should be default. |
Beta Was this translation helpful? Give feedback.
-
@kromenak We have a play application that has been in production since 2013, and we've always followed the latest (switched to 2.8.19 in January, switched to 2.8.20 in July, and are running 2.9.0-M7 in development right now for deployment to prod later this year). We switched to Akka when play switched (2.6.?), but I would advise against it in your case...not only for all the drama in the links raised above, but because when we switched to Akka we were forced to bump up the fixed thread pool size to an insanely high number in order to get the concurrency we needed...we've since re-architected some things and have been able to achieve the same concurrency now with only an uncomfortably high fixed thread pool size, but the whole experience has left a really bad taste in the mouth. If you've been on Netty all this time you might as well stick with it until this whole Pekko/Scala 3 thing irons itself out, otherwise, you're bound to have to troubleshoot changes necessary for Akka 2.6 near term and Pekko later for the long term. I'd rather do that just once if I was forced to. BTW, we are planning to switch back to netty for the 2.9.x release, FYI. I'm assuming Netty will continue to be an option going forward, no matter what. |
Beta Was this translation helpful? Give feedback.
Hi, @kromenak!
Sorry, I can't write a detailed answer, but my suggestion to you: still to use Netty.
Firstly, because we plan migrate from Akka HTTP to Pekko HTTP in Play 3. You can get more information in this PR playframework#11804. It hasn't merged yet, but it have a lot of things about current context.
Secondly, we planed but didn't make Netty as default backend in Play 2.9. (see playframework#11495). I think this question will be discussed again after release Play 2.9 and my personal opinion is Netty should be default.