Description
What you’ll learn
-
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)
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.
Who this course is for:
- Intermediate Backend Engineers wanting to build scalable backends
Course content
- Introduction4 lectures • 28min
- Introduction
- Foundations of Web Communications5 lectures • 3hr 40min
- Foundations of Web Communications
- WebSockets Internals7 lectures • 2hr 53min
- WebSockets Internals
- Scaling WebSockets Backends4 lectures • 2hr 5min
- Scaling WebSockets Backends
- Real-Time Systems – Building Scalable IO Intensive Chatting Backend6 lectures • 1hr 18min
- Real-Time Systems – Building Scalable IO Intensive Chatting Backend
- Real-World System – Scalable CPU Intensive Gaming Backend4 lectures • 59min
- Real-World System – Scalable CPU Intensive Gaming Backend
- Conclusion1 lecture • 7min
- Conclusion
Reviews
There are no reviews yet.