Very rough notes from Raffi’s keynote at OSCONJ.
1. Twitter tied to push Ruby beyond its limits. They patched MRI rewrote garbage collection. But they wanted to move the architecture in a direction that they see the industry moving in – they moved to the JVM. This allowed them to use two first-class languages Scala and Java. A lot of the runtime code for Twitter is in Scala, but there is also a lot of pure Java.
2. They have been experimenting and toying with running clojure.
3. The b-ty is the the ops team gives them no grief. As long as he delivers code that gives them similar ways to manage production logs and systems, ops doesn’t care.
4. One of the biggest reasons they are moving to Java is that Java provides a real concurrency model. MRI doesn’t have the best threading model which means that they can’t experiment in the ways they want to. One request per worker model in the MRI artificially gives them a low queries per second. Hampers growth. They are experimenting with a system they call finagle. An open source system to handle asynchronous, event-driven networking writing code in Scala or Java or any other language they choose.
5. Changes efficiency metrics because they have done this.
6. “Fundamentally, Twitter is a real-time, event-driven problem. React to the world and scale as the world scales. As one of the people that works on the core infrastructure, we want to fundamentally rethink the way we work on Twitter. Ruby doesn’t have the ability to create scatter/gather pipelines, he wants to be able to support a model that accepts a request, hits hundreds of back end servers and pulls the results back immediately.”
6. “Fundamentally, the JVM gives us something that Ruby can’t.”
7. “Switching to Java doesn’t imply that we think Ruby is a mistake.”… “Small companies should continue to go with that realm, but when we hit the scale we’ve hit, we’re pivoting as fast as we can to the JVM.”