Recently I decided to learn some Golang on the side and chose to build a real-time chat using websockets from John Crickett's Coding Challenges. As soon as I had something good, I had a doubt - "How do you scale websockets?" 🤔 Curiosity got the best of me, and I stumbled across Hussein Nasser's playslist on scaling websockets. I went deep into the rabbithole and in weeks I was able to build a distributed chat using Go and websockets, Redis for realtime pub/sub, and Kafka for high-throughput, low-latency processing. Configured Nginx as a reverse proxy for layer 7 loadbalancing. Setup the entire infrastructure on AWS using Terraform and build a CI/CD pipeline using Github actions. Heck I even purchased a domain and enabled TLS for secure HTTPS communication. Engineering is Contagious! ⚡ I was able to do this because a lot of good people shared their learnings in public for free, as well as the experience I gained building products at KeyValue Software Systems. Now, I am doing my part by sharing my github repo (for anyone interested in checking it out). I'll do my best to share my learnings through my blog as well. 𝐆𝐢𝐭𝐡𝐮𝐛: https://lnkd.in/gXSZAy5Q #engineering #codingchallenges #opensource #learnbybuilding
Awesome, great to hear that Coding Challenges was useful and inspiring.
Great project Joyal A Johney , can you please explain me the role of Redis in your project as i am new to it. Thank you.
great job buddy 🔥💯 thanks for sharing
Interesting
Very similar path to how I ended up viewing Nasser's course on scaling web sockets, the only difference being I needed to implement websocket functionality capable of maintaining 30000 connections as per a client requirement at Work.I used NodeJS. Very nicely done Joyal👏.
Wow Joyal A Johney very inspiring. Thanks for sharing. Hussein Nasser is the book of engineering.
If I have seen a little further it is by standing on the shoulders of Giants.
Awesome. Really inspiring, Joyal A Johney . 👏
Nice work. This really inspires me to build something 👏
𝗙𝘂𝗹𝗹 𝗦𝘁𝗮𝗰𝗸 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿 + 𝗗𝗲𝘃𝗢𝗽𝘀. Leetcode solver. Ex @Capitall. AWS | Docker | Next.js | React.js | MongoDB | PostgreSQL| Typescript | Javascript | Redux | C++ | DSA
3moI was actually doing the same. Building a scalable chat app. But on Typescript. Here is one question. why do we need Redis here? Can Kafka not work in both pub/sub and Queue model?