HN user

gleber

7 karma
Posts1
Comments3
View on HN

Moral of the story first: developers, please take a look at Erlang.

I cringed when I read the story. Someone calls Node.js a magic when it handles 10k connections. Erlang handles 1MM connections without sweating.

Why? Because around two years ago I have created an Erlang server which does broadcasts of ~500bytes message to up to 1MM of concurrent users with a end-to-end delivery delay of at most 1.5 seconds, using ONE physical server and ONE application server (i.e. just one Erlang VM instance)!

Proof: https://www.erlang-factory.com/conference/Krakow2011/speaker...

TL;DR. Node.js is not magic. It's not as scalable nor as robust compared to Erlang.

Erlang is perfect for any messaging systems. And on other hand Erlang works well for GIS:

Vector Map Server - a BSc thesis project. Vector geospatial data streaming server, very similar thing to server's streaming vector data to Google Earth or Map24. Also works as WFS server. Has to handle a lot of data, but since data is mostly immutable it works well.

Backend service for not yet released liveblogging site. Done in collaboration with few other developers. Massive pubsub system. Done tests with 1M concurrent users on 200 small-node EC2 cluster with end-to-end latency mostly < 1.5s.

Texspace - spatial search server based on Microsoft Research paper. Fuzzy spatial search capable of working with completely unstructured queries. Had pretty big issues with processing, indexing and analyzing big amounts of data due to slowness of all DB solutions available at that time. Writing geometry algorithms in Erlang is not trivial due to immutability, since all of them are described in imperative languages.

IM subsystem for microblogging site (which is pretty big in Asia) - implemented 5 proprietary protocols. Erlang is perfect for such tasks! The only issue was lack of documentation for proprietary protocols ;)

Map routing server - implemented optimized A* search with route graph generalization. Writing fast A* is tricky in immutable world. Books like Okasaki's "Pure Functional Data Structures" FTW!

WMS Tiling / TMS service with caching. Simple and easy task for Erlang. Mnesia + file-level cache.

Overseer - Nitrogen + CouchDB app for tracking employees time by doing screenshots via VNC and marking them as "work" / "not work". A breeze :)

Erlang FTW!