A few months ago we had the opportunity to interview Adam Kittelson about his experience using Elixir in production.
Adam is a senior software engineer at Brightcove. Brightcove is a global provider of cloud solutions for delivering and monetizing video across connected devices. They’re using Elixir and Phoenix to process event streams.
Watch the video below or read the interview to get to know his experiences with Elixir.
José Valim: Hi, I’m here with Adam Kittelson and we are at Erlang Factory. Adam, where do you work?
Adam Kittelson: I work at Brightcove, we do a lot of things with online video. I got started there by way of an acquisition. We were from a company called Zencoder, which they purchased three years ago, and we do online video transcoding as a cloud service.
José Valim: Cool, and I’ve heard that you are already using Elixir in production there. Can you tell us a little bit more about that?
Adam Kittelson: Yeah, a couple months ago – maybe four, five months ago – we started working on an application that allows our customers to subscribe to events. So, someone logs into our website and wants to make a change to some metadata on one of their videos, that generates a video change event which is already used by various services within the organisation, but we wanted to add the capability for the customer to receive a callback at an API endpoint that they control. So, we set up a Phoenix app that essentially attaches to the firehose of that entire event stream and just looks to see if the customer has a subscription to that event, and if they do, then we can send a message to their endpoint.
José Valim: That’s a very good use case for Elixir because sometimes you need to send tons of notification at the same time. So, if you need, you just open a bunch of connections to different clients and that would be completely ok, it’s going to definitely handle that load.
Adam Kittelson: Yeah, it’s no problem because subscriptions change very rarely we’re able to use ETS to cache those. We actually have a small cluster that is load balanced across but we use Phoenix PubSub to be able to communicate when to add things to the cache or to bust the cache. So we only have one cache miss per account essentially.
José Valim: Cool. That’s really really cool. Do you have anything to say about running Elixir in production, what was the main trigger to use Elixir?
Adam Kittelson: The main trigger to use Elixir was kind of unrelated to work. I saw it on Hacker News a year ago, in December, and I had been working on a Mud as a Rails app using websockets. It turns out websockets in Rails isn’t super awesome. And I started switching that over to Elixir and it has been working really really well.
José Valim: Awesome! Thanks a lot.