Software Engineering Institute | Carnegie Mellon University
Software Engineering Institute | Carnegie Mellon University

Digital Library


Scaling Services with an In-Memory Distributed Caches

  • This presentation was created for a conference series or symposium and does not necessarily reflect the positions and views of the Software Engineering Institute.
  • Abstract

    This talk describes the problems we faced in scaling a high-throughput API at GO-JEK and how using the constructs of Golang to build a distributed in-memory cache eventually solved the problem. Using code as an example, we will discuss the choice of data structure, its time complexity based on the Golang spec, and concerns around thread safety that we encountered.

    We will present a few examples of “war stories” that the team faced while implementing it and how we solved them. By learning about the importance of and implementation approach toward the eviction policy, the audience will both be able to understand the significance of cache invalidation and implement one by themselves using the Golang concurrency constructs.

    With the ever-increasing demand to handle data, we will also discuss how we implemented sharding to minimize the memory footprint, hence enabling scaling up approximately 10-fold in a short time. By implementing the practices described in this talk, the audience will be able to make an informed decision of choosing whether a distributed in-memory caching approach makes sense for their problem and, if yes, implement one by themselves.

  • Download

Part of a Collection

SATURN 2018 Presentations