Skip to content
CodeNest

~/work/telecommunications-iot

Scaling a real-time telecom charging & session platform

A mobile-core platform had to sustain millions of concurrent connectivity sessions, but under load the charging path became the throughput ceiling and nodes ran out of memory. We traced both to root cause, re-tuned the I/O-bound charging path and delivered a prioritised scaling strategy.

Industry
Mobile core / IoT connectivity platform
Role
Tech lead / senior distributed-systems engineer
Services
Performance engineering · Distributed systems · Kubernetes scaling
Abstract illustration of radio signal rings connecting to distributed device nodes

Challenge

A mobile-core platform handling session management and real-time charging had to sustain millions of concurrent connectivity sessions. Under high-load testing, the charging path became a throughput ceiling and nodes hit memory saturation — made worse by uneven pod scheduling across the cluster.

In real-time charging, every session event has to be metered correctly and cheaply. The metering layer cannot be the bottleneck.

Approach

  • Measure before tuning. Flame-graph profiling of the charging path showed it was I/O-bound, not CPU-bound — which pointed the work at connections and batching rather than code-level optimisation.
  • Remove the I/O ceiling. Widened HTTP connection pooling, tuned the AWS SDK retry and token-bucket behaviour, right-sized Kafka batch sizes, and redesigned the concurrency model of the NATS event bus.
  • Cache with care. Added a read-through cache for slow-changing reference data — tariffs, routing, quota regions — with event-driven invalidation over NATS. Security-sensitive entities were deliberately excluded from caching to avoid correctness and race-condition risks.
  • Fix scaling at the root. Diagnosed out-of-memory kills caused by eBPF map pre-allocation under burstable QoS, memory saturation on the in-memory store, and skewed pod distribution — then delivered a prioritised scaling strategy.

Outcome

The charging path was re-tuned around its real bottleneck, the reference-data cache took repeated lookups off the hot path without caching anything security-sensitive, and the cluster’s memory and scheduling problems were each traced to a specific root cause with a prioritised plan to address them.

Abstract illustration of ledger rows with a rising line chart

Billing & payment-grade data integrity

A billing event pipeline that never loses or double-charges

Core services published billing events to the broker in-process, coupling every write to broker availability and risking lost or duplicated events. We re-architected the pipeline around change-data capture and end-to-end idempotency.

  • Go
  • DynamoDB
  • DynamoDB Streams
  • AWS Lambda
Abstract illustration of a grid of image, video and document tiles, one being rendered

Media & content platforms

A Digital Asset Management platform, built end to end

A product that needed to store, organise and serve large volumes of media — with fast on-demand rendering and flexible metadata search, without re-processing everything up front. Built end to end, from API to deployment.

  • Go
  • Gin
  • PostgreSQL
  • JSONB

~/next-step

Have something that needs to ship — and keep running?

Tell us what you are building. Within one business day you get a reply from a senior engineer, not a sales rep — with honest questions, a rough approach, and whether we are the right fit.

// NDA available before the first call.