SlideShare a Scribd company logo
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

What's hot

Tiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startupTiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startup
Tung Ns
 
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
 Grokking Techtalk #39: How to build an event driven architecture with Kafka ... Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
Grokking VN
 
High Concurrency Architecture at TIKI
High Concurrency Architecture at TIKIHigh Concurrency Architecture at TIKI
High Concurrency Architecture at TIKI
Nghia Minh
 
itlchn 20 - Kien truc he thong chung khoan - Phan 2
itlchn 20 - Kien truc he thong chung khoan - Phan 2itlchn 20 - Kien truc he thong chung khoan - Phan 2
itlchn 20 - Kien truc he thong chung khoan - Phan 2
IT Expert Club
 
Grokking TechTalk #33: High Concurrency Architecture at TIKI
Grokking TechTalk #33: High Concurrency Architecture at TIKIGrokking TechTalk #33: High Concurrency Architecture at TIKI
Grokking TechTalk #33: High Concurrency Architecture at TIKI
Grokking VN
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservices
TechMaster Vietnam
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking VN
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to know
Thao Huynh Quang
 
SOLID & Design Patterns
SOLID & Design PatternsSOLID & Design Patterns
SOLID & Design Patterns
Grokking VN
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
Araf Karsh Hamid
 
Asynchronous processing in big system
Asynchronous processing in big systemAsynchronous processing in big system
Asynchronous processing in big system
Nghia Minh
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
Paul Mooney
 
Microservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and KafkaMicroservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and Kafka
Araf Karsh Hamid
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
Terry Cho
 
Microservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka EcosystemMicroservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka Ecosystem
confluent
 
Stability Patterns for Microservices
Stability Patterns for MicroservicesStability Patterns for Microservices
Stability Patterns for Microservices
pflueras
 
Grokking Techtalk #38: Escape Analysis in Go compiler
 Grokking Techtalk #38: Escape Analysis in Go compiler Grokking Techtalk #38: Escape Analysis in Go compiler
Grokking Techtalk #38: Escape Analysis in Go compiler
Grokking VN
 
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWSKRUG - AWS한국사용자모임
 

What's hot (20)

Tiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startupTiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startup
 
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
 Grokking Techtalk #39: How to build an event driven architecture with Kafka ... Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
 
High Concurrency Architecture at TIKI
High Concurrency Architecture at TIKIHigh Concurrency Architecture at TIKI
High Concurrency Architecture at TIKI
 
itlchn 20 - Kien truc he thong chung khoan - Phan 2
itlchn 20 - Kien truc he thong chung khoan - Phan 2itlchn 20 - Kien truc he thong chung khoan - Phan 2
itlchn 20 - Kien truc he thong chung khoan - Phan 2
 
Grokking TechTalk #33: High Concurrency Architecture at TIKI
Grokking TechTalk #33: High Concurrency Architecture at TIKIGrokking TechTalk #33: High Concurrency Architecture at TIKI
Grokking TechTalk #33: High Concurrency Architecture at TIKI
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservices
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to know
 
SOLID & Design Patterns
SOLID & Design PatternsSOLID & Design Patterns
SOLID & Design Patterns
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
 
Asynchronous processing in big system
Asynchronous processing in big systemAsynchronous processing in big system
Asynchronous processing in big system
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
Microservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and KafkaMicroservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and Kafka
 
Intro to WebSockets
Intro to WebSocketsIntro to WebSockets
Intro to WebSockets
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 
Microservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka EcosystemMicroservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka Ecosystem
 
Stability Patterns for Microservices
Stability Patterns for MicroservicesStability Patterns for Microservices
Stability Patterns for Microservices
 
Grokking Techtalk #38: Escape Analysis in Go compiler
 Grokking Techtalk #38: Escape Analysis in Go compiler Grokking Techtalk #38: Escape Analysis in Go compiler
Grokking Techtalk #38: Escape Analysis in Go compiler
 
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
 

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

Data center
Data centerData center
Data centerVNG
 
Dynamo: Amazon’s Highly Available Key-value Store
Dynamo: Amazon’s Highly Available Key-value StoreDynamo: Amazon’s Highly Available Key-value Store
Dynamo: Amazon’s Highly Available Key-value Store
Viet-Trung TRAN
 
Chu nhat 02 luu thanh tra e-prior e-trust
Chu nhat   02 luu thanh tra e-prior e-trustChu nhat   02 luu thanh tra e-prior e-trust
Chu nhat 02 luu thanh tra e-prior e-trustSecurity Bootcamp
 
e-Prior e-Trust - Lưu Thanh Trà - ĐH Hoa Sen
e-Prior e-Trust - Lưu Thanh Trà - ĐH Hoa Sene-Prior e-Trust - Lưu Thanh Trà - ĐH Hoa Sen
e-Prior e-Trust - Lưu Thanh Trà - ĐH Hoa Sen
Võ Thái Lâm
 
chuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.pptchuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.ppt
khamgo1191
 
bai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptbai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.ppt
HungHuyNguyen3
 
Python Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-databasePython Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-database
Khánh Nguyễn
 
NoSql Database
NoSql DatabaseNoSql Database
NoSql Database
Nguyen Thieu
 
Bai 11
Bai 11Bai 11

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

Data center
Data centerData center
Data center
 
Dynamo: Amazon’s Highly Available Key-value Store
Dynamo: Amazon’s Highly Available Key-value StoreDynamo: Amazon’s Highly Available Key-value Store
Dynamo: Amazon’s Highly Available Key-value Store
 
Dsd02 sta
Dsd02 staDsd02 sta
Dsd02 sta
 
Chu nhat 02 luu thanh tra e-prior e-trust
Chu nhat   02 luu thanh tra e-prior e-trustChu nhat   02 luu thanh tra e-prior e-trust
Chu nhat 02 luu thanh tra e-prior e-trust
 
e-Prior e-Trust - Lưu Thanh Trà - ĐH Hoa Sen
e-Prior e-Trust - Lưu Thanh Trà - ĐH Hoa Sene-Prior e-Trust - Lưu Thanh Trà - ĐH Hoa Sen
e-Prior e-Trust - Lưu Thanh Trà - ĐH Hoa Sen
 
Dsd04 sta
Dsd04 staDsd04 sta
Dsd04 sta
 
Data Warehouse
Data WarehouseData Warehouse
Data Warehouse
 
chuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.pptchuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.ppt
 
bai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptbai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.ppt
 
Python Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-databasePython Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-database
 
NoSql Database
NoSql DatabaseNoSql Database
NoSql Database
 
Bai 11
Bai 11Bai 11
Bai 11
 

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.fit@gmail.com • Facebook: /nghialeminh • Slide Share: /NghiaLeMinh1