Hướng dẫn xây dựng Rest API cho thương mại điện tử như thế nào với hàng triệu đơn hàng mỗi ngày - Series Rest Api - FullStack

Nội dung bài viết

Video học lập trình mỗi ngày

Hiện nay các ứng dụng thương mại điện tử (TMĐT hay ecommerce) được các nhà lập trình phát triển một cách xuất sắc từ quản lý đơn hàng cho đến chịu tải với hiệu suất cao, tính nhất quán dữ liệu trong khi sử dụng Microservices... Đó là những yếu tố tạo nên một hệ thống bền vững cho các app như Shopee, lazada, alibaba, alimama, và aliconcon.

Kênh youtube về BackEnd

Nếu bạn chưa có duyên gặp nhau thì bạn có thể dành 1 phút lướt qua các video về backend, hiệu suất, bảo mật... ở kênh Tips Javascript. Hy vọng bạn sẽ ở lại lâu hơn với chúng tôi...

Giới thiệu dự án ecommerce ALICONCON

Tôi nghe các bạn giang hồ đồn rằng, đặt title bài viết như vậy sẽ được nhiều lượt truy cập hơn cho nên tôi thử nghiệm xem kakaka.

Ở video lần trước chúng ta đã biết đến cách xây dựng Setup web application ALICONCON.COM với nodejs nginx pm2 certbot https. Cho đến này video đó có rất nhiều bạn quan tâm và cho những câu hỏi cho phần tiếp theo. Và có lẽ là Series lần này tôi sẽ giúp các bạn build một rest api từ a-z về phát triển một services về phần backend cho ứng dụng TMĐT hiện đại. Tôi biết sẽ có rất nhiều thiếu sót đế xây dựng một hệ thống chịu tải cao, chịu lỗi cao và hiệu quả. Nhưng có lẽ một mình tôi cân cả TEAM thì đương nhiên là thiếu sót. Nếu như trong quá trình xây dựng có một lỗi hay một cách nào đó chưa được tối ưu thì các bạn có thể đóng góp comments dưới mỗi phần hay mỗi video. Rất mong được các bạn hợp tác.

Những công nghệ được sử dụng khi phát triển backend của hệ thống thương mại điện tử

Trước hết rất khó để có một hệ thống hoàn hảo ngay từ đầu, cho nên việc lựa chọn những công nghệ trước khi bắt đầu một dự án là một điều kiện quan trọng. Một ngôi nhà vững chắc chịu đựng những cơn giông bão là bắt buộc phải có một móng nhà bền vững và chắc chắc. Cũng giống như ngôi nhà, việc lựa chọn cho một hệ thống để sau này có thể mở rộng quy mô theo chiều dọc và ngang đều phải dễ dàng, chịu tải từng nào không quan trọng và việc mở thêm quy mô tải trọng nhanh đó mới quan trọng...

Cho nên theo tôi chúng ta có thể sử dụng những công nghệ sau đây:

  • Nodejs, expressjs or golang để làm resreq.
  • Upload dùng aws or cloudinary
  • Cache dùng redis or firebase.
  • Realtime dùng firebase or socket, websocket
  • Database dùng mongodb và mysql. Nếu chuyên sâu thì dùng oracle.
  • Searching Tìm kiếm sản phẩm dịch vụ nên dùng Elasticsearch or có thể dùng redis search
  • Queue message dùng rabbitmq, or redis pub sub.
  • Tester dùng Jest or mocha.
  • Trust ip
  • Push notification dùng APN or GCM.
  • Có thể dùng Nginx or Apache or cả hai thì càng tốt. Vì mỗi thằng có một lợi thế khác nhau.
  • Ngoài ra còn có những công nghệ phụ trợ khác...

Như vậy để phát triển một ứng dụng, giả sử bạn là một người chịu trách nhiệm toàn bộ cho việc này, thì ít nhất về cơ bản, bạn phải nắm những công nghệ đó ở Level 2 thì tốt hơn.

Làm thế nào để thiết kế một kiến ​​trúc high concurrency, hiệu suất cao, tính sẵn sàng cao và bảo mật cao?

Là một nhà phát triển hệ thống lớn việc bạn phải phân biệt những khái niệm thật là rõ ràng cho các tình huống cụ thể. Ví dụ như những câu hỏi cơ bản như là Thế nào là tính đồng thời cao?. Bạn sẽ trả lời sao. Tôi biết, mỗi người sẽ có một thế giới quan riêng. Nhưng thế giới quan của bạn có giúp ích được gì cho hệ thống không đó mới là điều thực sự cần. Cho nên những câu hỏi tôi đưa ra dưới đây, và chúng ta sẽ đi phân tích dần dần...

  • Thế nào là tính đồng thời cao?
  • Thế nào là hiệu suất cao?
  • Thế nào là tính sẵn sàng cao?
  • Làm thế nào hạn chế rủi ro về dữ liệu?
  • ...

Đừng nôn nóng, đây là bài viết đầu tiên mà thôi.

Các chứ năng trong hệ thống TMĐT và nên tập trung chỗ nào?

Cho đến này hầu hết các sàn TMĐT sẽ có những chủ thể như thế này, và chúng ta sẽ xem tập trung vào phần nào là cốt lõi của hệ thống.

  • Người sử dụng dịch vụ hay còn gọi là người mua hàng.
  • Sản phẩm hay còn gọi là hàng hóa.
  • Giỏ hàng
  • Tiếp thị quảng cáo, khuyến mãi...
  • Thanh toán
  • Vận chuyển
  • Quản lý kho
  • Quản lý hệ thống đặt hàng
  • Dịch vụ cơ bản khác...

Nhiều kinh, mới sơ sơ thôi và thấy quá nhiều cái phải làm. Nhìn qua chúng ta sẽ thấy cốt lỗi của một sàn TMĐT đó chính là quản lý kho và quản lý đơn đặt hàng. Chính vì điều đó mà Tim Cook chọn để làm CEO của Apple, vì tôi nhớ đọc được một bài viết Vì sao Tim Cook lại được chọn?. Ok, tiếp tục đi phân tích vì sao?

Thiết kế quản lý đơn hàng và tồn kho là điều cốt lõi

Quản lý đơn hàng đóng một vai trò quan trọng trong toàn bộ trung tâm thương mại trực tuyến. Nó liên quan đến các liên kết cốt lõi của toàn bộ chuỗi bán hàng của doanh nghiệp, đồng thời liên quan đến kết quả giao dịch cuối cùng về sản phẩm của người dùng. Do đó, trong toàn bộ vòng đời từ khi tạo đơn hàng đến khi kết thúc giao dịch, người quản lý sản phẩm và cả người quản lý doanh nghiệp nên suy nghĩ và lập kế hoạch cẩn thận, bởi vì hệ thống đơn hàng là hệ thống phức tạp nhất, cốt lõi và quan trọng nhất trong liên kết bán hàng của toàn bộ hệ thống thương mại điện tử.

Sẽ có rất nhiều tranh cãi về vấn đề này, đó là tùy vào các bạn, còn tôi hãy để tôi nói với thế giới quan riêng của tôi. Vì sao?

Đối với người dùng

Sau khi đặt hàng, người dùng có thể xem tình trạng giao đơn hàng, trạng thái khuyến mãi, tích điểm, và có thể hoàn tiền các kiểu con đà điểu. Quản lý được các giao dịch lịch sử và hiện tại...

Đối với người bán

Người bán quản lý trạng thái đơn hàng, giao hàng theo thời gian thực, xử lý các tranh chấp sau bán hàng,… để đáp ứng nhu cầu người dùng ngày một tốt hơn, nhanh hơn và nâng cao hiệu quả xử lý trong việc bán và quản lý.

Đối với nền tảng

Về mặt hoạt động của nền tảng, thì chúng ta phải xây dựng được cơ chế giám sát các đơn đặt hàng mỗi phút, nhanh chóng xử lý hay can thiệp vào thông tin đơn hàng bất thường, xử lý các tranh chấp giữa người mua và người bán, hỗ trợ kinh doanh, thực hiện quy trình kinh doanh khép kín, nâng cao giá trị người dùng và cải thiện trải nghiệm người dùng....

Ngoài ra còn có nhiều các hệ thống tham gia như Hệ thống bên ngoài, Cấp trung gian quản lý nói chung là nhiều nhiều...

Còn nhiều nữa

Chưa hết đâu, cho nên chúng ta sẽ xây dựng từ đầu... Và phần tiếp theo các bạn nên bắt đầu cho mình một Cấu trúc thư mục cho dự án ngày từ bây giờ. Và tôi đã xây dựng sẵn, việc của các bạn chỉ là lấy về và bắt đầu từng phần mà thôi... Lấy ở đâu, ở đây: Cấu trúc dự án API REST từ lv1 đến lv4 | APIStructure Your Nodejs REST API for beginner to Advanced 2

Tham khảo

Nên tham khảo ở đâu: ở đây sẽ có hết cho các bạn, nó sẽ làm tiền đề cho các bạn

Có thể bạn đã bị missing