Inside Oyster's Tech Stack

 | 

This is the second installment in our inside look at the technology stacks and architecture decisions of Underdog.io customers. This week, we hear from Andrew Brown, the Co-Founder and CTO at Oyster. Yesterday, Andrew and his team launched The Oyster Review, a modern literary magazine to accompany their web and mobile products. Oyster has made one awesome hire through Underdog.io.

image

Describe Oyster in 2-3 sentences.

Oyster is the leading streaming service for books. For just $9.95 a month, readers can enjoy as many books as they want—everything from New York Times Best Sellers and Oprah’s picks, to children’s titles and more. Our engineering challenges include providing spot-on book recommendations and building award-winning user experiences for our Android and iOS apps.

What are your primary programming languages?

Oyster’s backend was originally written in Python, but we’re in the process of transitioning to a service-oriented architecture backed by Scala and Akka. Python helped us move quickly in the early days, but as we’ve grown we’ve started to crave the safety and expressiveness of a strong type system, especially for data-processing workloads. We’re also big fans of functional programming. On the client side we use Objective-C (iOS), Java (Android), and Javascript (Web). We’ve also open-sourced our image resizing server, Halfshell, which is written in Go.

What are your primary web frameworks?

Django is our go-to server-side web framework, primarily because it helps us iterate quickly. The powerful built-in admin UI has also been a boon for our editorial team. On the front-end we used React to build The Oyster Review because we were looking for a simpler way to manage application state after building other parts of the site in Backbone and Ember.

image

What are your primary databases?

PostgreSQL is our workhorse for data storage. It’s reliable, predictable, and has performed well across all sorts of workloads. Redshift has also become a critical piece of our storage infrastructure as our data sets have grown, making queries that were previously impossible run in just seconds.

Which DevOps tools do you use?

We use Puppet and Docker for automation and consistency, and we’ve built an internal command-line tool called Diver for managing deploys. At Oyster we don’t have a dedicated ops team, so we try to pick tools and abstractions that are easy for anyone on the team to pickup. We’re also excited about expanding our use of Mesos, which provides a really nice abstraction layer on top of the data center that made it a natural choice for our data processing infrastructure built on Spark.

Which part of your stack are you most excited about?

Most people know Oyster for our beautiful native apps, but we’re also tackling some really hard data science problems. Our core mission is to connect our readers with great books, so our recommendation algorithms are critical to our success. It turns out that book recommendations are challenging because the data set is very sparse, largely comprised of implicit data, and spans multiple domains. Building out the team, infrastructure, and algorithms to tackle this problem in just a few months has been a really fun challenge, but it’s still early. For example, we have an incredible data set that tracks reading behavior down to the individual word level that we’re just starting to take advantage of. Our goal is for Oyster to feel like that well-read friend who always knows exactly the book for you.

Can you tell us a bit more about The Oyster Review?

The Oyster Review is a modern literary magazine about a life well-read. At Oyster we’re passionate about connecting our readers with great books, and we believe that the human touch helps inspire and make books more approachable. This is a big step toward our goal of leveraging data science, editorial, and design to help find the perfect book for you.

*****

Thanks, Andrew and everyone at Oyster! Check out the The Oyster Review and Oyster’s web and mobile products to see all of their tech in action. Companies: email josh@underdog.io if you’d like to be featured in this series.