E-commerce applications are getting exceedingly popular in today's fast-paced business environment, with Amazon being the unparalleled industry leader. From consumer goods and digital media to grocery items, almost everything is available on Amazon these days.
So how do you build a similar online shopping system that stores an inventory of products under different categories, allow customers to search through them, and make purchases. Furthermore, how do you handle the expanding load on the website and prevent it from crashing down, particularly on busy days, such as the Black Friday Sale?
Read this blog to understand how Amazon, Flipkart or a similar e-commerce application is designed.
Though Amazon is a multifaceted platform that offers an exhaustive range of products and services, for the sake of simplicity, we will only try to understand and recreate a simpler version of their online retail business. An online retail platform or e-commerce application allows users to buy and sell products.
Here are the basic features an e-commerce website should include:
Maintaining all three non-functional requirements at all times is difficult, especially with the high traffic that the website will need to handle. However, different components of the system architecture can have different priorities.
For example, payment service and inventory management will need to be highly consistent. Availability is of low priority in this case. Search service, on the other hand, should be highly available and have low latency, even at the cost of consistency. In other words, it's acceptable if the search service is eventually consistent.
Much like Uber or Airbnb's backend, Amazon and other e-commerce platforms also have two sides for the system. If you are a customer of Amazon, you can either be selling products through your own isolated store on Amazon, or you can be buying products available from different sellers.
For the first half of Amazon design, let's discuss the selling-end of the architecture. This part of the architecture will serve the customers who visit the e-commerce application for selling their products or services.
50% off Udemy courses
Grokking the System Design Interview
Java Multithreading for Senior Engineering Interviews
Grokking the Advanced Design Interview
Grokking the Coding Interview: Patterns for Coding Questions
Grokking Dynamic Programming Patterns for Coding Interviews
Coderust: Hacking the Coding Interview