Open Source at Tapjoy

by Tanner Burson in


The Engineering team here at Tapjoy is excited to get to introduce several new Open Source projects. Today we’re announcing the release of three new projects: Chore, Teamout and Slugforge. These projects are all used in production, and are under continual development. I’ll briefly introduce each of these projects, but expect a lot more detail on these coming soon.

Slugforge

Slugforge is the Tapjoy packaged deployment tool; It’s used to produce, store, catalog, and install static deployable artifacts from a source code repository. While building it out, we were particularly concerned with making sure that we had something that would scale out to the size of our environment with no problems, but still not be too burdensome to implement for new projects from day one. Today, Slugforge is used internally to deploy to all our environments, from single servers to deployments of 400+ nodes, and because it deploys static packages, we can go back in time just as reliably as we can roll out new code.

Rolling out large deployments efficiently is a general problem, so when we got done we wanted to provide it back to the community. It benefits us all when we have more implementations to talk about and refine, and besides, we’re all pretty proud of how Slugforge turned out.

Teamout

At Tapjoy we’re always striving to find ways to become more efficient and effective at communication across our three engineering offices (Boston, Atlanta, and San Francisco). Whether you’re working on a team distributed across offices or working from home, the lack of a team presence can have a significant impact on your productivity and culture. While we have (and use) Google Hangouts, we’ve found that you just don’t get the same effect as turning around and instantly chatting with a team member sitting next to you.

We knew there must be a better way — and so we built Teamout. Teamout allows remote employees to easily collaborate through a persistent browser-based group video chat. Teamout is built as an extension to Google Hangouts, meaning it requires little to no resources to use beyond what Google offers. Teamout allows employees to instantly see and hear each other without the need to call while at the same time focusing on the privacy of its users. It also allows for multiple simultaneous conversations to take place in the same Google Hangout, easily integrating with teams who already use Google Hangouts.

We hope the release of Teamout will provide a significant improvement to the use of Google Hangouts as a team collaboration tool. As your team continues to grow, you’ll need to find more creative ways to create a unified team — and you can start that (for free) with Teamout!

Chore

Chore is Tapjoy’s job processing system. We set out to create a job processor that works with Amazon’s SQS, but provided the performance, stability and flexibility for us to use it in places where we traditionally would have reached for Resque or Sidekiq.

Chore is designed to be queue agnostic and provide configurable processing models. What this means in practice is that you can run Chore in a configuration that looks like Resque (fork per job), Sidekiq (fiber or thread per job), a hybrid of both, or something else entirely. For our primary use case we settled on a fork per batch strategy. We fetch many messages from SQS in parallel, and then hand a batch of those messages to a forked process. Different job types are configured to use different batch sizes to balance resource efficiency with total time in queue.

Chore has been a huge success internally. It’s been in production on our largest system for nearly a year, and has been used successfully in a number of other projects. Across all the projects Chore has processed nearly a billion jobs to date.

Wrapping Up

It’s exciting to have the opportunity to share all of this work with the world. We’re thankful for all of the excellent, high quality open source we make use of everyday and are excited to contribute back to the community. We look forward to getting feedback and suggestions from the community as these projects continue to grow and mature.

 

Think this is interesting? We're hiring! See our current openings here.