Hi Mr. Amit,
You are the chief architect of runa.com, an enterprise system that is written entirely in Clojure.
Would you please share with us your own experience about Clojure in the real world projects?
What was the most difficult thing about adopting Clojure? any pros and cons?
And if it is ok to share, what is your stack in runa.com (the application server, the database, frameworks).
Thanks a lot.
Runa is a SaaS for online merchants. We collect the complete click-stream of any customer that browses a merchant website. This data is continuously analyzed to maintain an running understanding of the traffics conversion behavior and patterns. Then, in real-time, Runa makes offers to likely abandoners - it could be a price-discount, free-shipping, bundling, etc.
As you can imagine, this involves large amounts of data, processing of that data, real-time web-services, etc.
Our stack is Clojure for web-services, and all the data-processing logic. The system is built as a family of DSLs that are used by our engineers, support-staff, and the merchants themselves. Data is stored in HBase for long-term storage, and in Redis for session-related information.
There was no real challenge per se about using Clojure. A couple of engineers needed to transition from Ruby to Clojure, but with pair-programming, they were able to do so within a couple of months. Mastery, of course, takes longer. We've been in production with Clojure for nearly three years now, and we've been extremely satisfied every minute of that time. As far as I'm concerned, Clojure is the language to use on all new projects, and for all new functionality on existing projects.