eCommerce is a classic Internet application since it arrives the "web age". Now we use the services of amazon, alibaba, ebay everyday, from PC and smartphone. All of them are actually eCommerce system, though they can be put into different business modes. We are so familiar with these services, processes, therms and logics behind. From the view of technique, it is easy to understand the foundamental components and software that used to build a eCommerce website. One can eailly to build a eCommerce website within 10 minutes using some out-of-box open source solutions such as magento.
So why I am still trying to reexplain the architecture of the system with all functionalities and implementation details?
Why?
Unfortunately, most of us (professionals as software developpers, product managers and IT consultants) do not know the eCommerce system & technologies as well as we imagin. And we are frequently mading mistakes from system design to the details of implementations.
The problem can be concluded as:
Incorrect or Incomplete Domain Modelling
I've seen a lot of really bad designs and implementations. There are so many developpers and PMs who don't know what are SPU & SKU and what they work for. It exists a lot of eCommerce system that do not have appropriate categories and attributes, which caused endless refactoring and failures in daily operation. So many developpers start to build a eCommerce system without a clear plot for order lifecycle and its interactions with stocking functions, logistics functions and promotion functions. I do not tend to blame anyone. In fact I have made all above mentioned mistakes in my career. And I find all these mistakes could be avoided if there were a correct domain model and appropriate moduling of the system. It is pitty that there are still so many new commer who are repeating the similar mistakes and wasting time and resources to repair them (or even worse to produce more mistakes). I hope that I could give a general eCommerce domain model to avoid the fundemental mistakes from the begining.
Business Logic Mismatch
With arrivals of new business modes and innovations. The system has to adapt itself to the new patterns and 3rd party systems such as payment gateway, CRM SAAS, new processes and so on. It will definitively increase the complexity of the system. While it comes some internal evolutions such as upgrade of stockhouse, development of logistics networks etc. All of the changes from internal or external environment would affect the system, or even worse, break the original architecture of the system. It is why we need to design the system carefully to avoid potential problems.
Besides the existing misunderstandings of eCommerce system, the other reason to spotlight on eCommerce system is that it covers almost all parts of general information systems. In fact, you can find all 2B software modules in eCommerce system such as CRM, CMS, WMS, MRP etc. And more on, there are more and more new technologies are involved, e.g. search engine, NLP, machine learning, etc. Since eCommerce is now the largest general comprehensive fundamental application in the IT world, it is necessary for every IT professional to understand it. No matter in which specific domain you are working on, all these knowledge will be helpful.
Contents
Commodity Module
Category & Attribute
SKU & SPU
Inventory
User Module
Authentication
Back Office Role & Authorities
Cart
User Tagging
Order Module
FSM of Order
Order Splitting
Interaction with Other Modules
Payment Module
Logistics Module
CMS Module
Warehouse Management Module
Search & Ranking Service
Real World Practise
This series of articles will not only focus on domain model and logic architecture of the eCommerce system, but will also give a concrete code demonstration. The code is for better understanding of the archtecture and gives some inspiration of implementations. You may have different implementations as well. It depends totally on your demand from the real business scenarios. And don't forget that a good system is never the most complex one but the most suitable one. If you are just begining to build a new system, I recommand to start with mandatory modules and keep them simple. Once you understand better the business demand and your domain models, you could easily scale your system out and add more functions into it. For example, you might detach the inventory function into an independant service when the amount of SKU is drastically increased and your warehouse management is also becoming complex.
eCommerce is a classic Internet application since it arrives the "web age". Now we use the services of amazon, alibaba, ebay everyday, from PC and smartphone. All of them are actually eCommerce system, though they can be put into different business modes. We are so familiar with these services, processes, therms and logics behind. From the view of technique, it is easy to understand the foundamental components and software that used to build a eCommerce website. One can eailly to build a eCommerce website within 10 minutes using some out-of-box open source solutions such as magento.
So why I am still trying to reexplain the architecture of the system with all functionalities and implementation details?
Why?
Unfortunately, most of us (professionals as software developpers, product managers and IT consultants) do not know the eCommerce system & technologies as well as we imagin. And we are frequently mading mistakes from system design to the details of implementations.
The problem can be concluded as:
Besides the existing misunderstandings of eCommerce system, the other reason to spotlight on eCommerce system is that it covers almost all parts of general information systems. In fact, you can find all 2B software modules in eCommerce system such as CRM, CMS, WMS, MRP etc. And more on, there are more and more new technologies are involved, e.g. search engine, NLP, machine learning, etc. Since eCommerce is now the largest general comprehensive fundamental application in the IT world, it is necessary for every IT professional to understand it. No matter in which specific domain you are working on, all these knowledge will be helpful.
Contents
Real World Practise
This series of articles will not only focus on domain model and logic architecture of the eCommerce system, but will also give a concrete code demonstration. The code is for better understanding of the archtecture and gives some inspiration of implementations. You may have different implementations as well. It depends totally on your demand from the real business scenarios. And don't forget that a good system is never the most complex one but the most suitable one. If you are just begining to build a new system, I recommand to start with mandatory modules and keep them simple. Once you understand better the business demand and your domain models, you could easily scale your system out and add more functions into it. For example, you might detach the inventory function into an independant service when the amount of SKU is drastically increased and your warehouse management is also becoming complex.