SlideShare a Scribd company logo
2
Most read
4
Most read
18
Most read
Integration in
Ecommerce System
Lê Minh Nghia

Solution Architect - Tiki.VN
Vai trò của tích hợp
Order
Service
Catalog
Service
Warehouse
System
Front End
Application
Accounting
System
Data
warehouse
System
Search
Service
Logistic
Service
Postgresql MysqlMongoDb
Redis Kafka Rabbit
Legacy
System
Payment
Service
Elastic
Vai trò của tích hợp
• Có quá nhiều system cấu thành lên hệ thống

• Các system sử dụng nhiều data source khác nhau 

• Business logic phức tạp, đòi hỏi cao tính chính xác

• Các system do các team khác nhau quản lý và phát triển
Các khó khăn chính
• Đảm bảo tính chính xác của dữ liệu

• Đảm bảo thứ tự của các message trao đổi

• Dễ dàng tích hợp giữa các hệ thống
Các phần tích hợp chính
• Tích hợp giữa backend và front end

• Tích hợp giữa Order và Payment

• Tích hợp giữa Order và Catalog

• Tích hợp giữa với hệ thống kho

• Tích hợp với hệ thống accounting

• Tích hợp với hệ thống data warehouse
Backend và Frontend
Catalog Management
System
Caching vs Searching
Traffic Cao
Các vấn đề khó khăn:
- Update realtime các thay đổi
- Cập nhật chính xác thông tin sản phẩm
- Đảm bảo hiệu năng cao cho read
- Xử lý được cấu trúc product phức tạp
Order và Payment
Order Service Payment Service
Make Transaction
Callback Response
Các khó khăn:
- Bảo mật
- Tính chính xác, ổn định cao
- Xử lý exact once
Order - Catalog
Order Service Catalog Service
Reserve Product
Place Order
Confirm
Các khó khăn:
- Đảm bảo không bán quá số lượng
- Đảm bảo việc cập nhật giá và số
lượng chính xác
- Đảm bảo hiệu năng
Tích hợp kho
Catalog - Order
Systems
Warehouse
System
Inbound/Outbound:
sku, quantity…
Sale Order
Các khó khăn:
- Đảm bảo sự sai lệch giữa kho và hệ
thống online là nhỏ nhất
- Đảm bảo hàng hoá cho các đơn hàng
được đặt
- Nhập xuất số lượng lớn
Tích hợp Accounting
Product/SKU Order
Payment/
Loyalty
Delivery Cash In
Accounting
Các khó khăn:
- Tính chính xác (tới từng đồng)
- Dữ liệu bị phân mảnh
- Nghiệp vụ tài chính phức tạp
Tích hợp
Data Warehouse
Product
Database
Order
Database
Warehouse
Database
Logistic
Database
Data Warehouse
Customer
Database
Logging
Các khó khăn:
- Dữ liệu có cấu cấu trúc đa dạng
- Lượng dữ liệu lớn
- Tính chính xác đòi hòi cao
- Phục vụ các mục đích phân tích đa dạng
Chiến lược và giải pháp
Đơn giản hoá
mô hình tích hợp
• Giảm thiểu sự trùng lặp model dữ liệu và logic giữa các hệ
thống. 

VD: Order service không cần full thông tin model product,
Warehouse không cần full thông tin của order

• Càng tối thiểu hoá sự trùng lặp dữ liệu, càng đơn giản hoá
quá trình tính hợp, giảm thiểu sai sót.

• Hạn chế mô hình tích hợp dạng star schema, ưu tiên mô
hình horizontal 

• Ưu tiên tích hợp bất đồng bộ hơn là tích hợp đồng bộ.
Mô hình Star
Order
Service
Catalog
Service
Warehouse
System
Order
Service
Hạn chế:
- Số lượng kết nối phức tạp. Độ
phức tạp O(n^2) - (Metcalfe's law)
- Khó đảm bảo sự ổn định và
available của tất cả các service
cùng lúc
Mô hình message bus
- Độ phức tạp các liên kết
O(n)
- Không cần các services
available tại cùng một thời
điểm
- Đơn giản khi sử dụng
Đồng bộ và Bất đồng bộ
• Đồng bộ: gọi api giữa các service

• Bất đồng bộ: giao tiếp qua message queue

• Xác định đòi hỏi về tính nhất quán của dữ liệu

• Tối đa hoá tích hợp bất đồng bộ
Eventually Consistency
• Cần đảm bảo dữ liệu được gửi đi

• Đảm bảo các dữ liệu gửi đúng thứ tự

• Đảm bảo gửi exact once nếu có thể
Eventually Consistency
Lỗi phổ biến:
- Ghi dữ liệu đồng thời dữ liệu
cho nhiều service. Do không
có transaction dẫn tới nguy
cơ sai lệch dữ liệu
- Sử dụng các message queue
không đảm bảo thứ tự như
Rabbit MQ.
Eventually Consistency
Database
Event
Publisher
Capture Data
Changes
Write Transaction
Message Bus
Publish Events
- Bắt tất cả các thay đổi
- Đảm bảo thứ tự gửi đi
Binlog - Kafka
MySql
Binlog
Append Events
Kafka
Publish Events
Publisher
- MySql ghi nhận các thay đổi đúng thứ tự
- Kafka đảm bảo delivery các message đúng thứ tự
Event Sourcing Pattern
eventt
Kết luận
• Tích hợp là vấn đề chính với các hệ thống lớn.
• Message queue là chìa khoá đảm bảo việc tích
hợp giữa các thành phần
• Phải đảm bảo gửi đúng thứ tự message khi tích
hợp
• Ưu tiên tích hợp bất đồng bộ hơn là đồng bộ
Cảm ơn
• Contact: Lê Minh Nghĩa
• Email: nghia.fit@gmail.com
• Facebook: /nghialeminh
• Slide Share: /NghiaLeMinh1

More Related Content

PDF
Grokking TechTalk #33: High Concurrency Architecture at TIKI
Grokking VN
 
PPTX
Distributed Transaction in Microservice
Nghia Minh
 
PDF
Domain Driven Design và Event Driven Architecture
IT Expert Club
 
PDF
Kinh nghiệm triển khai Microservices tại Sapo.vn
Dotnet Open Group
 
PDF
Bizweb Microservices Architecture
Khôi Nguyễn Minh
 
PDF
Sapo Microservices Architecture
Khôi Nguyễn Minh
 
PDF
Building Bizweb Microservices with Docker
Khôi Nguyễn Minh
 
PPTX
Asynchronous processing in big system
Nghia Minh
 
Grokking TechTalk #33: High Concurrency Architecture at TIKI
Grokking VN
 
Distributed Transaction in Microservice
Nghia Minh
 
Domain Driven Design và Event Driven Architecture
IT Expert Club
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Dotnet Open Group
 
Bizweb Microservices Architecture
Khôi Nguyễn Minh
 
Sapo Microservices Architecture
Khôi Nguyễn Minh
 
Building Bizweb Microservices with Docker
Khôi Nguyễn Minh
 
Asynchronous processing in big system
Nghia Minh
 

What's hot (20)

PDF
High Concurrency Architecture at TIKI
Nghia Minh
 
PPTX
What is gRPC introduction gRPC Explained
jeetendra mandal
 
PPSX
Event Sourcing & CQRS, Kafka, Rabbit MQ
Araf Karsh Hamid
 
PDF
Nginx Essential
Gong Haibing
 
PPTX
Software architecture for high traffic website
Tung Nguyen Thanh
 
PPTX
Toi uu hoa he thong 30 trieu nguoi dung
IT Expert Club
 
PPTX
Updated: Should you be using an Event Driven Architecture
Jeppe Cramon
 
PPTX
ITLC HN 14 - Bizweb Microservices Architecture
IT Expert Club
 
PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
PPTX
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Flink Forward
 
PPTX
The RabbitMQ Message Broker
Martin Toshev
 
PPSX
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
PPTX
Microservice architecture design principles
Sanjoy Kumar Roy
 
PPTX
게임 분산 서버 구조
Hyunjik Bae
 
PDF
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
Jo Hoon
 
PPTX
Grokking Techtalk #37: Data intensive problem
Grokking VN
 
PDF
Introduction to Event-Driven Architecture
Solace
 
PPTX
Microservices Part 3 Service Mesh and Kafka
Araf Karsh Hamid
 
PPTX
Kafka 101
Clement Demonchy
 
PDF
Benefits of Stream Processing and Apache Kafka Use Cases
confluent
 
High Concurrency Architecture at TIKI
Nghia Minh
 
What is gRPC introduction gRPC Explained
jeetendra mandal
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Araf Karsh Hamid
 
Nginx Essential
Gong Haibing
 
Software architecture for high traffic website
Tung Nguyen Thanh
 
Toi uu hoa he thong 30 trieu nguoi dung
IT Expert Club
 
Updated: Should you be using an Event Driven Architecture
Jeppe Cramon
 
ITLC HN 14 - Bizweb Microservices Architecture
IT Expert Club
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Flink Forward
 
The RabbitMQ Message Broker
Martin Toshev
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
Microservice architecture design principles
Sanjoy Kumar Roy
 
게임 분산 서버 구조
Hyunjik Bae
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
Jo Hoon
 
Grokking Techtalk #37: Data intensive problem
Grokking VN
 
Introduction to Event-Driven Architecture
Solace
 
Microservices Part 3 Service Mesh and Kafka
Araf Karsh Hamid
 
Kafka 101
Clement Demonchy
 
Benefits of Stream Processing and Apache Kafka Use Cases
confluent
 
Ad

Similar to Thiết kế hệ thống E-Commerce yêu cầu mở rộng (20)

PDF
Luận văn: Tích hợp dịch vụ nghiệp vụ ngân hàng theo mô hình soa
Dịch vụ viết bài trọn gói ZALO 0917193864
 
PPTX
DDD - DuyLV - VINID - 17.07.2019
Lê Văn Duy
 
PDF
Phân tích thiết kế hệ thống thông tin PTIT
NguynMinh294
 
PDF
Tổng quan nhập môn ngành Logistics và quản lý chuỗi cung ứng.pdf
chuonchuonot25
 
PDF
Kiến trúc-hướng-dịch-vụ-webservice
Thuyet Nguyen
 
PDF
Kiến trúc hướng dịch vụ (webservice)
Nguyễn Thu Hằng
 
PPTX
Bai 00 - TQHTTT.pptx
Ngan Tran
 
DOCX
Nhóm-13-Last time.docx
trongtangoc
 
PPTX
Phương pháp luận triển khai phần mềm DMS
ctydms
 
PPTX
Getting data from clients - Big Data Applications: Real-Time Data Streaming
Minh123118
 
DOCX
Quản trị dự án trong công nghệ thông tin
cxbach
 
DOCX
hệ-thống-quản-lý (1).docx
OkeNam
 
PPTX
He thong chiu tai cao
Đông Đô
 
PPTX
Mo hinh san xuat tieu chuan
thanh Le
 
PPT
Bai giang tin_hoc_ql_2_046
Heo Mọi
 
PPT
Web Architecture
Hiep Luong
 
PPTX
SCM - Supply Chain Management
Kim Thoa
 
PPT
Chuong03
thuythuxanh123
 
PPT
Bai ii khai quat ha tang co so
Giang Nguyễn
 
PPT
Enterprise Resource Planning.ppt
Vinh Vo
 
Luận văn: Tích hợp dịch vụ nghiệp vụ ngân hàng theo mô hình soa
Dịch vụ viết bài trọn gói ZALO 0917193864
 
DDD - DuyLV - VINID - 17.07.2019
Lê Văn Duy
 
Phân tích thiết kế hệ thống thông tin PTIT
NguynMinh294
 
Tổng quan nhập môn ngành Logistics và quản lý chuỗi cung ứng.pdf
chuonchuonot25
 
Kiến trúc-hướng-dịch-vụ-webservice
Thuyet Nguyen
 
Kiến trúc hướng dịch vụ (webservice)
Nguyễn Thu Hằng
 
Bai 00 - TQHTTT.pptx
Ngan Tran
 
Nhóm-13-Last time.docx
trongtangoc
 
Phương pháp luận triển khai phần mềm DMS
ctydms
 
Getting data from clients - Big Data Applications: Real-Time Data Streaming
Minh123118
 
Quản trị dự án trong công nghệ thông tin
cxbach
 
hệ-thống-quản-lý (1).docx
OkeNam
 
He thong chiu tai cao
Đông Đô
 
Mo hinh san xuat tieu chuan
thanh Le
 
Bai giang tin_hoc_ql_2_046
Heo Mọi
 
Web Architecture
Hiep Luong
 
SCM - Supply Chain Management
Kim Thoa
 
Chuong03
thuythuxanh123
 
Bai ii khai quat ha tang co so
Giang Nguyễn
 
Enterprise Resource Planning.ppt
Vinh Vo
 
Ad

Thiết kế hệ thống E-Commerce yêu cầu mở rộng

  • 1. Integration in Ecommerce System Lê Minh Nghia Solution Architect - Tiki.VN
  • 2. Vai trò của tích hợp Order Service Catalog Service Warehouse System Front End Application Accounting System Data warehouse System Search Service Logistic Service Postgresql MysqlMongoDb Redis Kafka Rabbit Legacy System Payment Service Elastic
  • 3. Vai trò của tích hợp • Có quá nhiều system cấu thành lên hệ thống • Các system sử dụng nhiều data source khác nhau • Business logic phức tạp, đòi hỏi cao tính chính xác • Các system do các team khác nhau quản lý và phát triển
  • 4. Các khó khăn chính • Đảm bảo tính chính xác của dữ liệu • Đảm bảo thứ tự của các message trao đổi • Dễ dàng tích hợp giữa các hệ thống
  • 5. Các phần tích hợp chính • Tích hợp giữa backend và front end • Tích hợp giữa Order và Payment • Tích hợp giữa Order và Catalog • Tích hợp giữa với hệ thống kho • Tích hợp với hệ thống accounting • Tích hợp với hệ thống data warehouse
  • 6. Backend và Frontend Catalog Management System Caching vs Searching Traffic Cao Các vấn đề khó khăn: - Update realtime các thay đổi - Cập nhật chính xác thông tin sản phẩm - Đảm bảo hiệu năng cao cho read - Xử lý được cấu trúc product phức tạp
  • 7. Order và Payment Order Service Payment Service Make Transaction Callback Response Các khó khăn: - Bảo mật - Tính chính xác, ổn định cao - Xử lý exact once
  • 8. Order - Catalog Order Service Catalog Service Reserve Product Place Order Confirm Các khó khăn: - Đảm bảo không bán quá số lượng - Đảm bảo việc cập nhật giá và số lượng chính xác - Đảm bảo hiệu năng
  • 9. Tích hợp kho Catalog - Order Systems Warehouse System Inbound/Outbound: sku, quantity… Sale Order Các khó khăn: - Đảm bảo sự sai lệch giữa kho và hệ thống online là nhỏ nhất - Đảm bảo hàng hoá cho các đơn hàng được đặt - Nhập xuất số lượng lớn
  • 10. Tích hợp Accounting Product/SKU Order Payment/ Loyalty Delivery Cash In Accounting Các khó khăn: - Tính chính xác (tới từng đồng) - Dữ liệu bị phân mảnh - Nghiệp vụ tài chính phức tạp
  • 11. Tích hợp Data Warehouse Product Database Order Database Warehouse Database Logistic Database Data Warehouse Customer Database Logging Các khó khăn: - Dữ liệu có cấu cấu trúc đa dạng - Lượng dữ liệu lớn - Tính chính xác đòi hòi cao - Phục vụ các mục đích phân tích đa dạng
  • 12. Chiến lược và giải pháp
  • 13. Đơn giản hoá mô hình tích hợp • Giảm thiểu sự trùng lặp model dữ liệu và logic giữa các hệ thống. VD: Order service không cần full thông tin model product, Warehouse không cần full thông tin của order • Càng tối thiểu hoá sự trùng lặp dữ liệu, càng đơn giản hoá quá trình tính hợp, giảm thiểu sai sót. • Hạn chế mô hình tích hợp dạng star schema, ưu tiên mô hình horizontal • Ưu tiên tích hợp bất đồng bộ hơn là tích hợp đồng bộ.
  • 14. Mô hình Star Order Service Catalog Service Warehouse System Order Service Hạn chế: - Số lượng kết nối phức tạp. Độ phức tạp O(n^2) - (Metcalfe's law) - Khó đảm bảo sự ổn định và available của tất cả các service cùng lúc
  • 15. Mô hình message bus - Độ phức tạp các liên kết O(n) - Không cần các services available tại cùng một thời điểm - Đơn giản khi sử dụng
  • 16. Đồng bộ và Bất đồng bộ • Đồng bộ: gọi api giữa các service • Bất đồng bộ: giao tiếp qua message queue • Xác định đòi hỏi về tính nhất quán của dữ liệu • Tối đa hoá tích hợp bất đồng bộ
  • 17. Eventually Consistency • Cần đảm bảo dữ liệu được gửi đi • Đảm bảo các dữ liệu gửi đúng thứ tự • Đảm bảo gửi exact once nếu có thể
  • 18. Eventually Consistency Lỗi phổ biến: - Ghi dữ liệu đồng thời dữ liệu cho nhiều service. Do không có transaction dẫn tới nguy cơ sai lệch dữ liệu - Sử dụng các message queue không đảm bảo thứ tự như Rabbit MQ.
  • 19. Eventually Consistency Database Event Publisher Capture Data Changes Write Transaction Message Bus Publish Events - Bắt tất cả các thay đổi - Đảm bảo thứ tự gửi đi
  • 20. Binlog - Kafka MySql Binlog Append Events Kafka Publish Events Publisher - MySql ghi nhận các thay đổi đúng thứ tự - Kafka đảm bảo delivery các message đúng thứ tự
  • 22. Kết luận • Tích hợp là vấn đề chính với các hệ thống lớn. • Message queue là chìa khoá đảm bảo việc tích hợp giữa các thành phần • Phải đảm bảo gửi đúng thứ tự message khi tích hợp • Ưu tiên tích hợp bất đồng bộ hơn là đồng bộ
  • 23. Cảm ơn • Contact: Lê Minh Nghĩa • Email: nghia.fi[email protected] • Facebook: /nghialeminh • Slide Share: /NghiaLeMinh1