In part one of this post, I explored the scaling problems that we encountered when MediaMath’s user data delivery system, which was built initially in Perl without the headroom necessary to scale to our current size. In this post, I outline the way we used goroutines and channels (Go’s built-in concurrency primitives) and interfaces to simplify concurrency and parallelism and scale without complicating deployment. Concurrency in Go, or “Let’s just add more workers!” Tackling our concurrency issues proved to be the easiest part of this exercise, due to Go’s fantastic primitives and the fan-out and fan-in patterns. We can start with, as […]
Prasanna Swaminathan is the Director of Developer Relations at MediaMath. In addition to teaching people how to pronounce his name, he leads a team that works with clients across the globe to open our API and build on our platform. Prasanna holds a BA in Physics from the University of Pennsylvania. Prior to joining MediaMath, he worked on power relay firmware systems, though he likes to think that prior to joining MediaMath, the matter/anti-matter ratio was even.