Overview
System Design for Real-Time backend scaling, The Internals of WebSockets, How WebSockets Work, WebSockets on Secure TLS, Scaling WebSockets with Layer 4 Proxying, Scaling WebSockets with Layer 7 Proxying, WebSockets on HTTP/2 and HTTP/3, Building a Real-time Group Chatting App (IO Intensive), Building a Real-time Game App (CPU Intensive)
Intermediate Backend Engineers wanting to build scalable backends
Fundamentals of Backend Engineering
Engineering efficient and scalable backends is such an enjoyable design activity. Understanding the frontend workflows, designing the APIs, picking the right protocols and databases for the task, and determining the communication patterns—whether the workload is CPU- or I/O-intensive—are all part of the fun.
However, what’s truly more challenging is designing real-time backend applications that support unfettered and ad-hoc bidirectional communication. The workloads of gaming, chatting, and even mission-critical real-time applications are unique in that they require a “push” nature to function effectively.
I spent a few months designing this course, and I chose the WebSockets protocol as the foundation for this work. WebSockets is by far the most widely available bidirectional protocol, supported across all clients—from browsers and command-line apps to runtimes like Node and Bun, and even other languages like C and Go.
While there is the newer WebTransport protocol, it isn’t yet as widely supported or battle-tested as WebSockets. Perhaps I’ll refresh this course in a few years when WebTransport matures.
This course is divided into three main sections:
1. WebSockets Internals – A deep dive into the inner workings of the protocol: the handshake, keepalive mechanisms, frame headers, and how it behaves over TLS. We’ll also discuss limitations—because I believe understanding limitations helps us build better applications. Each lecture will include a coding session and a quiz at the end of the section.
2. Scaling WebSockets – Taking your WebSocket knowledge to the maximum: how to scale this protocol over HTTP/1.1, HTTP/2, and HTTP/3. We’ll cover implementation with proxies in both stream mode (Layer 4) and application mode (Layer 7), along with their pros and cons. Each lecture will include a coding session and a quiz at the end of the section.
3. Building Real-Time System Designs – Putting everything into practice by designing two systems: an I/O-intensive chat system and a CPU-intensive game. I’ll propose multiple designs for each and choose one to implement.
Prerequisite: Fundamentals of Backend Engineering.
I hope you enjoy the course.
Hussein Nasser
Early in my career 20 years ago I built database applications without fully grasping their inner mechanics. Facing performance issues, racing conditions bug and even corruption often left me helpless.
I resolved to truly understand the workings of database systems, ensuring I knew every query from my app and its execution in the db and what I choose to make as a transaction and what I make into an atomic query.
From that day I have fascinated by pursuing deep understanding of what is happening behind the scenes in software. If you follow me here you would see deep dive posts about backend, databases and operating systems.
If you enjoy pursing the internals, I think you may like my courses.
