Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

f#

suave

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.

like image 714
Rajat Agrawal Avatar asked Apr 11 '17 07:04

Rajat Agrawal


1 Answers

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.

like image 102
Stephan Bruny Avatar answered Sep 20 '22 19:09

Stephan Bruny