Steve Vinoski
steve.vinoski.net · Personal blog · on HN since 2008
Steve Vinoski writes about Erlang, distributed systems, web server benchmarks, and the tradeoffs of programming languages and RPC.
What HN saysHN commenters call his distributed systems paper the best introduction to the topic, and link him for Erlang concurrency and web server benchmarks.
30HN people shared it
9linked it in comments
28stories submitted
177story points
2 years agolast shared
2008people per year2026
Most-shared posts
- 1Convenience over Correctness (2008) [pdf]4 people · 17 points · first shared 2008 · 2 comments on HN
- 2Erlang Web Server Benchmarking3 people · 30 points · first shared 2011 · discussion on HN
- 3Erlang: It’s About Reliability2 people · 22 points · first shared 2008 · 1 comments on HN
- 4Protocol Buffers == Leaky RPC2 people · 6 points · first shared 2008 · discussion on HN
- 5Static Languages: Rationalizations and Myths2 people · 4 points · first shared 2008 · 1 comments on HN
- 6Google App Engine and Clojure[pdf]2 people · 3 points · first shared 2010 · discussion on HN
- 7A Chat Application in Lift Framework [pdf]2 people · 1 points · first shared 2010 · discussion on HN
- 8Concurrency and Message Passing in Erlang [pdf]1 people · 34 points · first shared 2012 · discussion on HN
- 9You Have to Experience It1 people · 16 points · first shared 2008 · 5 comments on HN
- 10Just What We Need: Another RPC Package1 people · 8 points · first shared 2008 · 8 comments on HN
- 11Process Bottlenecks in Erlang Web Apps1 people · 8 points · first shared 2011 · discussion on HN
- 12Thinking in Language, But Not Clearly (Erlang vs JVM)1 people · 7 points · first shared 2008 · discussion on HN
- 13Roy - Statically typed functional language targeting Javascript [pdf]1 people · 5 points · first shared 2012 · discussion on HN
- 14Scala Web Frameworks: Looking Beyond Lift1 people · 4 points · first shared 2011 · discussion on HN
- 15Bob Ippolito's Erlang Presentation1 people · 3 points · first shared 2008 · discussion on HN
What HN people wrote when they linked it
bochi · 2014-08-10
This article is the best introduction to the topic in my opinion: http://steve.vinoski.net/pdf/IC-Rediscovering-Distributed-Systems.pdf
Another good reference for understanding distributed databases is: http://cs-www.cs.yale.edu/homes/dna/papers/abadi-pacelc.pdf
mbrubeck · 2009-10-04
It's not the scale, it's the reliability.
When I worked at Amazon.com we had a deeply-ingrained hatred for all of the SQL databases in our systems. Now, we knew perfectly well how to scale them through partitioning and other means. But making them highly available was another matter. Replication and failover give you basic reliability, but it's very limited and inflexible compared to a real distributed datastore with master-master replication, partition tolerance, consensus and/or eventual consistency, or other availability-oriented features.
I think everyone is missing the boat by evaluating datastores in terms of scalability. Even at Amazon's size, database scaling is only occasionally a problem. By the time your site is that big, hopefully you've split your software into independent services, each with its own (relatively) small database. And for the services that do need a distributed cache or persistence layer, there's now a huge body of literature and software that solves those problems.
Reliability is another matter. Every business can benefit from improved reliability, regardless of size. And reliability is harder. Scaling is basically an engineering problem, which can be solved with the right architecture and algorithms. Reliability is more like security: it's a weakest-link problem and requires constant vigilance in all areas, including engineering, testing, operations, and deployment. Adding redundant components improves reliability against hardware…
whalesalad · 2021-12-24
I shared this because I was trying to find "Virding's Rule" but came up short. Finally found it (http://steve.vinoski.net/blog/2008/02/07/wiger-on-erlang-style-concurr…
Any sufficiently complicated concurrent program in another language contains
an ad hoc informally-specified bug-ridden slow implementation of half of Erlang.
raises hand guilty as charged
knutin · 2012-08-31
Hi,
Author of elli here.
It is very hard to create real and meaningful benchmarks. The "Hello world" benchmarks are very useful when writing a webserver and you are curious about where to optimize it, if necessary. Even though they are very superficial, they can also help you compare two webservers.
It is very easy to run the benchmarks on your own hardware. Get elli, then run "elli:start_link()" and hit "/hello?name=john" with apachebench or your tool of choice.
Elli is only useful if you want to write an Erlang application that exposes a HTTP API. If you want raw performance, Haskell has some servers which does 300k+ rps.
Here is a very good article from Steve Vinoski who is overall a very smart and experienced guy on the topic of benchmarking Erlang webservers: http://steve.vinoski.net/blog/2011/05/09/erlang-web-server-benchmarkin…
Knut
lincolnq · 2012-04-27
I agree that the priors would suggest that you are correct, however, let me give some evidence to update you:
The Warp web server for Haskell is the fastest Web application server that exists. http://steve.vinoski.net/pdf/IC-Warp_a_Haskell_Web_Server.pdf [pdf, but easy to read] -- in the comparison on page 2, php handled 3400 requests per second, and Warp 81000.
cbf · 2011-05-16
I found Steve Vinoski's comment on this exercise interesting:
http://steve.vinoski.net/blog/2011/05/09/erlang-web-server-benchmarkin…
pietrofmaggi · 2010-07-24
Another nice example can be found in the last "Functional Web" column on IEEE Internet Computing by Steve Vinosky:
http://steve.vinoski.net/pdf/IC-Getting_Started_with_Google_App_Engine…
In the July/August 2010 column, Getting Started with Google App Engine and Clojure, guest columnist Aaron Bedra shows how to use Clojure, a relatively new but robust Lisp implementation on the Java Virtual Machine, create and deploy an application using the Compojure web framework on the Google App Engine platform.
dsickles · 2010-05-05
Check out Lift. It's a Scala based web framework.
http://liftweb.net
http://steve.vinoski.net/pdf/IC-A_Chat_Application_in_Lift.pdf
bandris · 2008-05-27
Here is a reply from Steve Vinoski:
http://steve.vinoski.net/blog/2008/05/27/joe-armstrong-erlang-and-rpc/