A.O.Akinloluwa Olumuyide, home

ShippedEmployer workSummary only

Backend · Metaverse Magna

Matchmaking for a live game platform

Real-time matchmaking on event-driven microservices, for a live game platform handling millions of player interactions.

The number

Millions

of gaming interactions, on the backend services I build

Client
Nestcoin (Metaverse Magna)
Role
Backend Developer. I designed the real-time matchmaking and led the services upgrade.
Timeline
August 2024 to present
Stack
Node.js · TypeScript · Redis Streams · Microservices · MongoDB · MySQL · AWS S3 · Docker · Coolify · GitHub

The problem

A live game platform with millions of player interactions, and players who expect a match the moment they're ready.

Matching had to work in real time, across many separate services. This is employer work, so the page is a summary: what I built and what it changed, without the internals.

  • Real time
  • No service waits on another

What I built

  1. Real-time matchmaking I designed it on Redis Streams. Services publish what happens as it happens, and each one reads what it needs, instead of calling another and waiting. Gamer retention rose 30%.
  2. A faster backend I led an upgrade of the microservices, with Redis batching and optimised schema indexes. Inter-service latency fell 40%, and throughput held up better under load.
  3. Services at scale Backend services in Node.js and TypeScript, built as microservices, supporting millions of gaming interactions.

How it runs

Matchmaking for a live game platform · 4 steps
  • Start
  • Stored
  • Check
  • Result
  1. Game services

    01, Trigger:

    A player is ready

    Game services

    Joining a match is an event.

  2. Event bus

    02, Data:

    Onto the stream

    Redis Streams

    Services publish as it happens, and read what they need.

  3. Matchmaking

    03, Logic:

    Players matched

    Matchmaking service

    Grouped in real time, as events arrive.

  4. Game services

    04, Output:

    Match announced

    Redis Streams

    Every service that needs it picks it up.

The drawing is generic on purpose. It shows how the parts talk, not what they're called inside.

What I took from it

At scale, services shouldn't wait on each other. Say what happened, and let each one get on with its job.

More on my role

My full record at Metaverse Magna, with the rest of my experience, is on the About page.

Contact

Got a messy problem?

Tell me what's broken, or what your team keeps doing by hand. Hiring? Tell me about the role. Or just book a call.