I've built and managed Engineering teams at companies large and small. Currently @ Pusher growing a team who build the world's best realtime web messaging platform.
The core of the main Pusher platform is written in Ruby using the EventMachine framework. We also use Redis extensively for the internal messaging part. We picked this in 2010 because we spun out of a Ruby on Rails agency, and we never had capacity to change it 😁
In the last year we've been building a new platform built in Go to support our new products, which we're finding much more suited to building scalable distributed systems. We use Kubernetes for infrastructure management and React on our front-end.
I've built and managed Engineering teams at companies large and small. Currently @ Pusher growing a team who build the world's best realtime web messaging platform.
I have to say (as a lead developer at Pusher) that I wouldn't recommend EM for new projects. It was a leader in the evented-code-in-dynamic-languages revolution and inspiration for node.js, but it did not take off in the same way. Nowadays it feels quite archaic and unloved. The abstractions have not kept up with the other ecosystems in the space.
If I were to start a concurrent ruby project today, I'd try Celluloid (github.com/celluloid/celluloid), but as Sam mentions, we've mostly moved on to Golang for high-performance work.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
The core of the main Pusher platform is written in Ruby using the EventMachine framework. We also use Redis extensively for the internal messaging part. We picked this in 2010 because we spun out of a Ruby on Rails agency, and we never had capacity to change it 😁
In the last year we've been building a new platform built in Go to support our new products, which we're finding much more suited to building scalable distributed systems. We use Kubernetes for infrastructure management and React on our front-end.
I'm surprised Pusher is written in Ruby. What are Pusher's main performance bottlenecks and how do you deal with them?
It is quite surprising, but EventMachine is actually pretty good for letting us handle a large connection load on a single threaded Ruby process.
We try to handle all performance bottlenecks with horizontally scalability. And Redis is awesome for handling the internal heavy lifting.
Thanks, I'm definitely going to check out EventMachine.
I have to say (as a lead developer at Pusher) that I wouldn't recommend EM for new projects. It was a leader in the evented-code-in-dynamic-languages revolution and inspiration for node.js, but it did not take off in the same way. Nowadays it feels quite archaic and unloved. The abstractions have not kept up with the other ecosystems in the space.
If I were to start a concurrent ruby project today, I'd try Celluloid (github.com/celluloid/celluloid), but as Sam mentions, we've mostly moved on to Golang for high-performance work.