From Monolith to Services @ QuizUp

Last week I did a talk at a local IT conference, UT Messan. The title was the rather inflated “From Monolith to Services at Scale: How QuizUp is making the (inevitable?) transition, one endpoint at a time”.

In it I try to tell the story of how we at QuizUp are transitioning to a more service-oriented architecture, and which steps we decided to take first.

The route we chose was to use ZooKeeper as the heart of our system for service registration, discovery and configuration, and then figure out how to route client requests to services running inside Docker containers. The building blocks we ended up using were basically ZooKeeper, NGiNX, Docker, our own Docker registries (which we refer to as “dockistries”), as well as a few custom components which are outlined in the talk:

video

slides

*The slides here above are slightly updated from the ones I used during my talk.

I would have liked to tell a bit more of a story, as we did create a couple of services in the spring of 2014 which we always had issues deploying. After some pondering we realized that without some kind of deployable packages (we rolled our own, and also looked at using .deb), or standardized containers, and a service registry we would probably end up with a lot of confusion (and unexpected outages). We decided on ZooKeeper, Docker and since we’re doing that why not a dynamic router as well.

Since the timeslot was only 30 minutes so I condensed this into 20-25 minutes + questions.