I’m seeking feedback on a language or platform for a highly reliable and low latency web service / application.
Assumption
Bottlenecks in a web service are usually related to data retrieval and storage, and eventually bandwidth and latency.
Highly concurrent, lightweight threads provide options for reliability, load distribution, and perceived performance that would otherwise not be available.
General Requirements
- Easy to use (build, deploy, monitor)
- Plentiful external, stable, pre-integrated Libraries
- Use case: distributed, non-blocking web services
- Quite a bit of message and job queueing
- multiple databases , caching
Top candidates
Very incomplete list of pros and cons, but some of my thoughts, highlighted.
- Scala
- pros
- assume it will take great advantage of Java 1.7 concurrency, multi-core
- fairly trivial import of external java libs (except for non-thread safe?)
- e.g. ZooKeeper – http://hadoop.apache.org/zookeeper/docs/r3.0.0/index.html
- cons
- new language syntax, paradigm learning curve
- doubts about JVM memory efficiency and stability as resources are constrained
- pros
- Server Side Javascript – via node.js
- pros
- redis integration for caching
- fast, lightweight, easy language.
- some custom js would be portable to browsers (coolness)
- cons
- very new
- performance
- not as many external libs?
- pros
- Tornado
- pros
- Python
- as many libs as Scala
- Python
- cons
- narrower use cases
- performance
- pros
Would love comments, but a more complete list is presented in a survey: