Is SUAVE production ready for web application development with millions of user traffic?
Asked Answered
M

1

7

We are a startup and currently in the evaluation mode for using SUAVE with F# as the web application development framework. I am very enthusiastic for using the SUAVE framework for developing my applications. I just want to know if SUAVE is production ready and if any performance benchmarking has been done on it as compared to OWIN for concurrent users and how many user traffic can the web server handle.

Merrie answered 11/4, 2017 at 7:54 Comment(5)
This really depends on your specific application, hosting setup (public Suave endpoint, IIS...?), number of servers etc., so I would recommend doing your own proof of concept and measuring the performance. In general Kestrel server is going to be much faster for the raw HTTP plumbing, but Suave still might be OK for you.Interscholastic
It's worth noting as well that there's a (semi?) official add-on for Suave that will allow you to plug it in to Kestrel/ASP.NET - whether that's any faster, I don't know, but it's worth looking into: github.com/SuaveIO/Suave.AspNetCoreFrogmouth
@JoeClay Initial reports I've seen suggest that Suave on top of Kestrel is enormously faster than plain Suave. You should be careful of releases with 0.X version numbers when thinking about planning a production system though.Obrien
Ah, yeah, as @Obrien says, the usual disclaimers about pre-release software apply.Frogmouth
Suave with Kestrel is a good idea as Microsoft is working hard upon the performance part. But how vulnerable is Kestrel in terms of security of the web server. What actions to take to overcome this security vulnerability?Merrie
S
7

Altough this thread now 8 months old, I wanted to share my experience with using Suave as web server.

First, measuring performance based on simple benchmarks won't tell you the truth about the overall performance of a more complicated system. However, when using Suave, it's unlikely that it will be the bottleneck in your application. It depends a lot more on the entire architecture, the sum of mechanics between request and response, and implementation details (e.g. random access on Lists is rather slow).

I used Suave in 3 projects now, always with great success. All of them heavily used paralellization and multi-threading. Two of them where simply run directly by Suave behind an Nginx-Proxy, one used IIS. Running under IIS did not have any measurable influence on the performance. When I came across any performance issues, Suave was never the place too look for them.

When utilizing the awesome concurrency and parallelization features of F#, your application will benefit from vertical scaling. For example, I built an image processing service which performed rather bad on AWS, but great on a notebook with a quad core Pentium processor. But again, this has nothing to do with Suave. Actually it pretty much goes out of your way.

Suave itself is a great, and solid choice. In about 2 years, I did not run into edge cases, where Suave would be the cause of trouble.

I have to mention, that my expeciences are based on simple web servers and services. Suave was used for a fairly flat web layer to serve RPC or REST-APIs.
Other tasks, like streaming or soft-realtime applications maybe would require another approach, and might not be suited well for Suave.

Skirt answered 11/12, 2017 at 11:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.