Microservices seem to be all that anyone is talking about these days; long gone is the monolithic app. The idea is simple - take one large app and break it into a bunch of tinier apps that interact in a reliable and fault-tolerant way. This brings with it a new set of functional and technical challenges to overcome - how do these "tiny apps" communicate? How do they discover each other? How big is too big? In this talk, we will build a microservice-based architecture up from scratch, while discussing different design patterns and common pitfalls, all in Node.js.