Monday, March 23, 2026

System Design Interview Problem - WhatsApp or Facebook Messenger

How to Design WhatsApp or Facebook Messenger? [Solved]
image_credit — Neo kim

Hello guys, if you are preparing for system design interview but struggling to solve system design problem like how to design WhatsApp, YouTube, Instagram, Twitter in a limited amount of time then you have come to the right place.

In the past, I have shared the best System design courses, books, System Design WebsitesSystem Design Cheat SheetMock interview platformNewsletterYouTube channelsBlogsRoadmap, as well 25 Software Design questions and today, I am going to do something special.

Today, we will discuss a popular System design problem, how to design a messaging app like WhatsApp, telegram, or Facebook Messenger, or any chat application like Yahoo Messenger which I used to love when I first started using internet 25 years back.

In 5 to 6 minutes, you will learn what kind of database you can use, how you can store messages, what API you can provide, and how to design the whole system so that you can handle it when it comes to interviews.

By the way, if you are preparing for System design interviews and want to learn System Design in depth then you can also checkout sites like ByteByteGoDesign GuruExponentCodemia.ioEducativeCodemia.ioBugfree.ai, and Udemy which have many great System design courses and a System design interview template like this which you can use to answer any System Design question.

If you need more choices, you can also see this list of best System Design coursesbooks, and websites.

How to design WhatsApp or Facebook Messenger in System Design interview?

In interview, you have very limited time so its important that you follow a process like requirement gathering, coming up with essential features, high level design, and low level design to leave a lasting impression on interviewers.

Let’s start with requirements gathering:

1. Requirements

The requirements are simple:

  • A user can send a chat message to another user
  • Users are spread across the globe

It’s important to not choose complicated requirements like group messaging, live calls, group calls, sending images, creating groups etc at the start.

Choose the feature you can implement in limited amount of time

2. Data Storage

After specifying requirement, the next thing you should come up is with the data model. You can also choose between SQL and NoSQL at this point. The main database tables are shown in the diagram. The friends and groups tables are used as join tables between users.

NoSQL database such as Cassandra is a potential solution to store chat messages.

But I’ll use MySQL to store account metadata and chat messages because:

  • It offers strong tooling support
  • The relational data model is a solid discipline

AWS S3 Object storage can be used to store media files shared in the chat.

Memcached or Redis can be used to improve data access efficiency by storing group chat messages and the presence status of people.

The Set data type in Redis can be used to track the online presence status of users.

3. API

After building data model then next logical thing is to come up with the API. The messaging app API is categorized into web API and real-time API.

The web API provides HTTP endpoints for users to log in and perform actions such as changing account details.

And the real-time API should provide WebSockets for bi-directional communication. It can relay chat messages and online presence status.

The API should be paginated for scalability. For example, the user only needs to get a limited number of messages.

A popular technique for API pagination is offset pagination. The idea is to send the number of results per page and the page number in the request parameters.

If you want to see the code for API, you can also checkout the editorial solution of Facebook Messenger Problem on Codemia.io which is very similar to this problem.

4. High-Level Design

A client-server architecture can be used to build the messaging app. Here is a simple design you can use to build WhatsApp, Facebook Messenger or any other Messaging app:

A monolith written in Java can be used to build the chat server.

The gateway server should be a stateless in-memory service. The messages get pushed to the client over WebSockets.

Consistent hashing can be used to route the user connection to the relevant gateway server.

Vitess can be used to partition MySQL because it automates the burden of scaling out.

The replication factor of the chat data store must be set to 3 for durability.

service registry should be installed for services to discover each other and communicate.

A job queue using Redis Streams or Kafka can be used to defer non-critical actions like creating a message search index.

An edge proxy can be used for SSL termination.

Protobuf or Thrift can be used for high-performance data serialization.

A random unique token can be added to chat messages to prevent them from being displayed twice.

A CDN can be used to store the media assets that are shared in chat messages.

5. Design Deep Dive

A snapshot of the data on the server can be sent to the client for data synchronization between the client and the server.

The client can connect to the nearest data center using GeoDNS.

The data can be replicated asynchronously between data centers. This will reduce complexity and prevent data consistency issues.

How to Design WhatsApp or Facebook Messenger? [Solved]

Best System Design Interviews Resources

And, here are curated list of best system design books, online courses, and practice websites which you can check to better prepare for System design interviews. Most of these courses also answer questions I have shared here.

  1. ByteByteGo: A live book and course by Alex Xu for System design interview preparation. It contains all the content of System Design Interview book volume 1 and 2 and will be updated with volume 3 which is coming soon.
  2. Exponent: A specialized site for interview prep especially for FAANG companies like Amazon and Google, They also have a great system design course and many other material which can help you crack FAAN interviews.
  3. DesignGurus Grokking System Design Course: An interactive learning platform with hands-on exercises and real-world scenarios to strengthen your system design skills.
  4. Codemia.io — This is a new, Leetcode style, AI powered platform for practicing system design problems but also gives editorial solution of popular System design problems like designing Twitter or Pastebin etc.
  5. “System Design Interview” by Alex Xu: This book provides an in-depth exploration of system design concepts, strategies, and interview preparation tips.
  6. “Designing Data-Intensive Applications” by Martin Kleppmann: A comprehensive guide that covers the principles and practices for designing scalable and reliable systems.
  7. SystemDesign.one Newsletter by Neo Kim, if you are looking for a weekly newsletter on system design then consider subscribing to this newsletter. And receive simplified system design case studies straight to your inbox. It cover the fundamentals and deep dives in my newsletter.
  8. “System Design Primer” on GitHub: A curated list of resources, including articles, books, and videos, to help you prepare for system design interviews.
  9. Educative’s System Design Course: An interactive learning platform with hands-on exercises and real-world scenarios to strengthen your system design skills.
  10. High Scalability Blog: A blog that features articles and case studies on the architecture of high-traffic websites and scalable systems.
  11. YouTube Channels: Check out channels like “Gaurav Sen” and “Tech Dummies” for insightful videos on system design concepts and interview preparation.
  12. Bugfree.ai: This is a popular platform for technical interview preparation. The System Design tag on this website includes a variety of questions to practice.

image_credit — ByteByteGo

Always remember to combine theoretical knowledge with practical application by working on real-world projects and participating in mock interviews. Continuous practice and learning will undoubtedly enhance your proficiency in system design interviews.

That’s all about how to design WhatsApp, Facebook Messenger or any other messaging app in System Design Interview. The main challenge is time, hence you must be prepared and follow an approach like the one I have shared in this solution.

This will not only save time but also help you to mention all key points to interviewer like requirement gathering, designing decision, high level design, low level design and your choices.

Other System Design Articles and Resources you may like

Thanks for reading this article so far. If you like this engineering blogs then please share with your friends and colleagues. If you have any questions feel free to ask in comments.

P. S. — By the way, DesignGuru.io also have many other Grokking courses to prepare for essential coding interview topics like OOP Design, System Design, Dynamic Programming etc and you can get access to all of their courses for a big discount by joining their All course bundle. You can also use code GURU to get 30% discount.

    Sunday, March 22, 2026

    Top 15 Websites to Learn System Design in 2026

    10 Best Places to Learn System Design
    image_credit — educative.io

    Hello friends, if you are preparing for System design Interview and looking for best resources to master Software design and System design then you have come to the right place.

    Earlier, I have shred best System CoursesBooks, and System Interview Questions and in this article, I am going to share best places to learn System design in 2026.

    Before we get to the best websites that will teach you everything you need to know about system design, let me tell you a little bit about what it really is.

    Systems design is basically the process of defining elements of a system including modules, architecture, components, interface, and data for a system based on a specific set of requirements.

    It can also refer to the process of defining, developing, and designing systems. These designs have to satisfy the specific needs of a company or an organization.

    15 Best Websites for Software Design and System Design Interview Preparation in 2026

    As a System designer, you have to make use of all the different modeling languages for expressing the information and knowledge in the structure of a system.

    This system has to be defined by a consistent set of rules and definitions. It can also be defined in textual or graphical modeling languages.

    There are different kinds of graphical modeling languages like the Unified Modeling Language, UML, Flowchart, Business Process Modeling Notation, and Systems Modeling Language.

    There are also different types of design methods that you can make use of. They include Architectural DesignLogical Design, and Physical Design.

    Here we have compiled a list of the best websites for learning system design. Keep reading to find out more.

    1. ByteByteGo by Alex Yu (best Website for learning System Design)

    This is one of the best and amazing platform to learn about System design concepts and also prepare for System Design Interview. This website is created by Alex Yu, author of popular System Design Interview — An insider’s guide books, one of the most recommend books for System Design interview.

    This website also serves as the digital version of his book but it offers much more than that because now it contains the content of 7 of his best books on System Design, OOP Design, ML System Design and Coding Interviews.

    Alex has shared detailed, step by step framework to solve system design questions from interviews like How to design YouTube and How to design a chat system.

    He also regular share interesting and visually explained content on System Design which are quite useful to learn about essential System design concepts like scaling, caching and distribute messaging.

    If you are preparing for System design or Coding interview then I highly recommend you to checkout this website and join his course. They have also relaunched the site now and offering 50% discount as part of relaunch SALE, probably the best time to join ByteByteGo.

    Here is the link to join this course — 50% discount on ByteByteGo

    In case you missed the ByteByteGO 50% OFF SALE then also you can my use my discount code JALJAD to get 10% discount, specially secured for Javarevisited reader.

    2. Codemia.io (Best Place to Practice System Design Problems)

    Codemia.io is a new website with a lot of System Design problems, 120+ to be precise, which you can practice online. It’s like Leetcode for System Design but with better feedback and learning experience.

    Most of the people like Leetcode because the active learning it provides. Its a sheer joy to solve Leetcode problem without any help but when it comes to system deign, everything was passive.

    You need to read, read and read.

    While mock interviews from sites like tryExponent and DesignGuru is good for practice, there was a need for LeetCode like site for System Design and that’s where Codemia comes in.

    At Codemia, now you can practice system design problems like the way you practice data structure and algorithms on Leetcode. With 120+ Practice Problems and 70 high quality solution, you can master System design in quick time without getting bored.

    If you are an active learner like me then you will love Codemia, with community support and interactive learning this is one of the best place to learn System Design.

    Here is the link to learn more — Codemia

    When it comes to pricing its also much more affordable than any other platform with just $69/year (30% discount now, original price $99/year) this is just like a cost of book but with much more active learning experience. I highly recommend it.

    3. Udemy [Best Platform for System Design Course]

    This is a wonderful website that will teach you everything you need to know about system designing along with grokking from absolute scratch. In this way, it is absolutely perfect for complete beginners.

    Udemy is a perfect starting guide for beginners looking to enter the amazing world of system design.

    Using this fantastic website, you will learn about all the core features of advanced system design. You will also become a very advanced system designer. You will be able to master both system design and grokking.

    Here are the best System design courses from Udemy which are worth looking:

    By the time you finish all the courses on Udemy, you will become an expert system designer and also be ready to solve those complex System design problems like how to design YouTube, Instagram, WhatsApp or a messaging queue.

    4. Educative [Interactive Courses for System Design]

    Educative is one of my favorite for learning system design on the internet right now. It is basically a website that has been literally created to prepare you for a system design interview.

    Through this website, you will also get an idea of how to approach system design in general.

    It is also one of the only websites out there that will teach you about large-scale distributed system design problems in painstaking detail. It does not matter even if you are an expert in the field.

    I am pretty sure that you will find this website a valuable learning experience.

    The smart people who have created this website have also gone the extra mile to give you a list of design choices.’

    This list will make you understand the requirement, compare different approaches, and finally come up with a suitable solution for the complex problem that you are facing.

    Here are the best System Design Courses from Educative.io:

    What makes Educative really interesting is also the fact that the instructors do not spoon-feed you anything. You are required to work on the problem and come up with innovative solutions yourself.

    If you are looking for just one website that will thoroughly prepare you for a system design interview, you do not need to look any further.

    Here is a nice System Design cheat sheet from Educative for quick revision:

    The instructors on Educative.io will also share with you their first-hand experiences on how to solve a complex system design problem.

    You will learn about all the different tips, tricks, concepts, and approaches for solving system design questions in general.

    You will also have the opportunity to practice a lot of classic system design problems like the web crawler, URL shortener, and designing a restaurant reservation system.

    These System Design courses on Educative will teach you about different techniques that are useful for scaling distributed systems. You will get an overview of database technologies and NoSQL solutions.

    In addition, you will also learn how to use caching for improving scalability and performance.

    By the way, you can either join this course individually or you can take an Educative Unlimited subscription for just $14.9 per month on annual plan (recommended) to get access to their 350+ high quality, text-based, interactive courses to learn key skills for coding interviews, software development, and technology.

    5. Exponent

    This is another great website to learn about System design and prepare for System design interview, especial for FAANG companies.

    There System Design Interview Course has 36 lessons and it provides solutions of system design questions like Design Twitter, Instagram, Parking lot, design a Web Crawler, and many other popular Software design questions.

    They also have dedicated course for different FAANG companies, For example they have a dedicate course for Amazon SDE interview which not only prepare you for tech round but also conduct mock interviews to check your actual preparation level. They also have a similar courses for Google interview as well.

    The best thing I liked about Exponent is their mock interviews which is like real drill as well 1-to-1 coaching and interactive discussion on popular interview questions from Google, Facebook, Microsoft and Amazon,

    If you are preparing for System design interviews on FAANG companies then I highly recommend this course and website and you can join them for just $12 a month now (70% discount).

    Here is the link to join Exponent — Try Exponent now

    6. DesignGurus.io

    DesignGuru is another awesome site with lots of system design tutorial and courses, particular for interviews. It’s also a popular online platform for Software Engineers to prepare for Coding interviews.

    If you have been taking online courses then you may have come across courses like Grokking the System Design Course or Grokking the Coding Interview Courses, well these are the courses which have been created by 

     and available DesignGurus.

    I have been taking their courses on Educative.io but now that they have moved out from that platform and it create their own online platform, it make sense to join them for just their Grokking interview courses.

    If you are also preparing for coding interviews then you can join DesignGuru to get access of not just their System Design courses but also many other coding interview courses

    Here is the link to join DesignGurus — Join DeisignGurus.io

    But, they are not stopping there, they are creating more and better courses to assist Software Engineers cracking coding interviews of FAANG and other technical companies.

    So joining them will definitely help you with your tech interview preparation. You can also use discount code and coupon GURU for 30% discount, only for Javarevisited followers.

    They even offer a bundle of all courses where you can buy all of their courses for big discount. If you want to excel on coding interview and prepare well, I highly recommend to get this bundle, its really useful.

    7. BugFree.ai

    BugFree.ai is an emerging platform that focuses on real-world system design problem-solving through mock interviews and hands-on guidance.

    What sets BugFree.ai apart is its interactive learning model, where you can practice system design problems in a live, interview-style setting and get feedback from experienced engineers.

    Pros:

    • Offers live mock interviews and feedback
    • Good for both beginners and intermediate learners
    • Covers latest system design topics relevant for FAANG interviews

    Cons:

    • The depth of content library is still growing
    • Primarily suited for those actively preparing for interviews

    Here is the link to learn more — Join BugFree.ai now

    8. System Design School

    System Design School provides a structured and in-depth curriculum designed for cracking system design interviews at top tech companies. 


    What’s notable about this platform is that it offers one-on-one mentorship, detailed case studies, and practical frameworks for tackling large-scale design problems.

    They are very similar to Algomonster, which is my go-to platform for Data Structure and Algorithms preparation and together with System Design school the now have complete package for coding interviews.

    Pros:

    • Mentorship-driven learning — personal guidance from experienced engineers
    • Focuses on building intuition for design decisions
    • Covers both fundamentals and advanced topics

    Cons:

    • Relatively premium pricing
    • Requires commitment of time for best results

    Another great thing about System Design School is that they are offering 50% discount now, similar to Algomonster 50% discount offer, which means its a great time to get the lifetime membership for both the side for half price.

    Here is the link to learn more — 50% OFF on System Design School

    9. Interview Kickstart

    Interview Kickstart is a well-known name in the interview prep space. They offer dedicated System Design tracks along with coding, ML, and domain-specific programs.

    Their USP is that their courses are taught by industry engineers from FAANG companies, and they have a rigorous curriculum that includes mock interviews, assignments, and feedback.

    Pros:

    • FAANG-level mentors and instructors
    • Comprehensive prep covering system design + other domains
    • Includes mock interviews and personalized feedback

    Cons:

    • Quite expensive compared to other resources
    • Heavier time commitment — best for those seriously preparing

    I highly recommend this platform to mid and senior level candidates who want to prepare with Mock interviews with real FAANG engineers.

    Here is the link to learn more — Join Interview Kickstart

    It’s also one of the best place for System Design mock interviews but if you need more options, you can also check my earlier post about best places for System Design mock interviews online.

    10. Amazon (Books)

    If you are someone who prefers self-paced study using books, these two are absolute must-haves for your bookshelf:

    Pros:

    • Great for self-learners who like deep dives
    • Both books are written by experts with real-world experience
    • Timeless knowledge that will help beyond interviews

    Cons:

    • Lacks interactive / hands-on components
    • Reading alone may not be sufficient — better combined with practice

    If you want to start now, I suggest you start reading System Design Interview — An Insider’s Guide by Alex Xu, ByteByteGo Founder.

    11. Coursera

    Coursera is another awesome place to learn in-demand tech skill online. The best thing about Coursera is that their course materials are designed and delivered by world class universities and top tech companies like Google, AWS, and IBM.

    When it comes to Software design, I really liked Software Design and Architecture Specialization from University of Alberta, which contains a couple of nice courses related to software design.

    The fantastic courses on Coursera will act as a great brief introduction to the amazing world of modern system design. It is perfect for beginners as you will learn about system design from absolute scratch. You will learn exactly what system design is and why is it used.

    Coursera is also a great choice that will help you take your skills in object-oriented design to another level. You will be able to do this by using object-oriented system design rather than the traditional system design techniques.

    The courses on this website will also teach you how to pass your system design interview. You will also learn how to get jobs at Google. Facebook, Microsoft, and Amazon.

    Here is the link to join this course — Software Design and Architecture Specialization

    By the way, If you are planning to join multiple Coursera courses or specializations, then consider taking a Coursera Plus subscription which provides you unlimited access to their most popular courses, specialization, professional certificate, and guided projects. It costs around $59/ per month but is worth it because you get access to more than 7000+ courses and projects, and you can also get unlimited certificates.

    12. System Design Primer  (Free)

    This is another awesome resources where you will find a collection of topics, articles, tutorials to prepare for System design interview preparation.

    There are also solution of common System design problems. I highly recommend you to checkout this place if you want to learn System design in depth. Its completely free tool

    I have also created a GitHub repository to help you learn system design last year and it received 2500+ stars on GitHub.

    I’ve added many case studies to make it easy for you to find important information.

    It gives you:

    - System design interview tips

    - System design fundamentals

    - Simplified engineering case studies with visuals

    - Deep dives into real-world architecture

    My goal is to create a system design front page on the internet.

    So I’ll add more case studies and extra sections.

    And you’ll get everything needed for system design in this repository over time

    repo — https://github.com/javabuddy/best-system-design-resources

    13. FrontendMasters

    FrontendMasters is a fantastic website that will help you polish your front end system design skills. I particularly liked Front-End System Design course by Evgenii Ray

    This is an awesome course, and I can see making use of all the things discussed, in interviews as well as day-to-day feature development.

    This course dive into front-end system design to create scalable, efficient user interfaces! Master core UI fundamentals: box model, browser rendering, DOM manipulation, state management, and performance. Practice by building infinite scrolling with IntersectionObserver.

    You can use this course to reinforce what you learn with a simulated design interview, diagramming a social media news feed. Evgenii has packed a lot of knowledge in this, which definitely will demand frequent revisits when needed.

    Here is the link to join this course — Front-End System Design course by Evgenii Ray

    By the way, you would need a Frontend Masters membership to watch this course which would cost around $390 for one year or $39 per month if you opt for monthly plan.

    This will give you access to 200+ high-quality and in-depth courses and learning paths. I am big fan of Frontend Masters courses and I highly recommend you to join them if you want to do well on frontend system design.

    14. YouTube

    Many people already know that YouTube is probably the best place to learn anything and that includes System Design.

    While its not easy to find the best videos on System Design on YouTube, there are plenty of great System design tutorials and resources are available like YouTube Channel by ByteByteGo and Exponent.

    There are also many free System Design courses available on YouTube, the most up-to-date and comprehensive one is from FreeCodeCamp and I strongly recommend you to check that out.

    Btw, if you need more free resources, you can also checkout this list of best free Software Design courses for beginners and experienced developers.

    15. Zero to Mastery Academy [ZTM]

    Not many people know that but ZTM or Zero to Mastery academy has a great System Design course for tech interviews called Master the Coding Interview: System Design + Architecture .

    What sets this System Design course by Zero to Mastery apart from other system design courses is its emphasis on seeing the bigger picture and executing on it.

    It goes beyond low-level coding and encourages students to understand the broader system they are a part of, fostering a deeper comprehension of the “why” behind their work. By providing a problem-solving framework and practical knowledge gained from Yihua’s industry experience, the course empowers students to become better problem solvers and programmers.

    Many people who have joined this course is also placed on top tech companies such as Google, Tesla, Amazon, Apple, IBM, Uber, Facebook, and Shopify, among others.

    By enrolling in the course, you will also gain access to an exclusive online community where they can learn alongside fellow students, alumni, mentors, TAs, and instructors.

    The interactive learning environment enhances the overall experience and facilitates networking opportunities.

    Overall, one of the best online course to not just master System design concepts but also crack coding interviews on top tech companies and also progress to become senior software engineer.

    Here is the link to join this course — Master the Coding Interview: System Design + Architecture

    Btw, you would need a ZTM membership to watch this course which costs around $39 per month but also provides access to many super engaging and useful courses like his Python course. You can also use my code FRIENDS10 to get a 10% discount on any subscription you choose.

    System Design Frequently Asked Questions

    Now, let’s see common doubts and questions about learning System design and Software design from programmers and developers.

    1. What exactly is system design?

    Systems design is basically the process of defining elements of a system including modules, architecture, components, interface, and data for a system based on a specific set of requirements. It can also refer to the process of defining, developing, and designing systems.

    2. Can I become a system designer?

    As a system designer, you have to make use of all the different modeling languages for expressing the information and knowledge in the structure of a system.

    This system has to be defined by a consistent set of rules and definitions. It can also be defined in textual or graphical modeling languages.

    3. What should I learn as a system designer?

    There are different kinds of graphical modeling languages like the Unified Modeling Language, UML, Flowchart, Business Process Modeling Notation, and Systems Modeling Language.

    There are also different types of design methods that you can make use of. They include Architectural Design, Logical Design, and Physical Design.

    4. What are common System Design Interview questions?

    Many questions like how to design YouTube, Instagram, WhatsApp, and distributed messaging queues are popular System questions which you can practice before interviews. I have shared 25 system design questions here, you can check

    That’s all about the 10 best places to learn Software Design and System Design in 2026. These sites are not just great resources to prepare for System Design Interview but also to improve design of the software and applications you are designing. If you liked this list of the best websites for learning system design, feel free to share it with your friends and family.

    You can also drop a comment if you have any doubts about the system design and we will get back to you in an instant.

    I have no doubt that the websites in this list will transform you from a complete beginner to a system design expert within a matter of weeks or months.

    Other Programming Articles and Tutorials you may like

    Thanks for reading this article so far. If you know any excellent online resources like websites or programming platforms to learn System Design and Software Designing, especially for beginners, which you think complements these two websites, then feel free to share.

    Everybody loves great resources and happy learning System design.

    P. S. — By the way, DesignGuru.io also have many other Grokking courses to prepare for essential coding interview topics like OOP Design, System Design, Dynamic Programming etc and you can get access to all of their courses for a big discount by joining their All course bundle. You can also use code GURU to get 30% discount.