Event Sourcing hay Blockchain: Cuộc chiến của sự "bất biến" và khi nào bạn nên chọn ai?
Lê Lân
0
So Sánh Giữa Event Sourcing Và Blockchain: Lựa Chọn Phù Hợp Cho Hệ Thống Của Bạn
Mở Đầu
Immutability không phải là phép màu—nó là một sự đánh đổi. Cả event sourcing và blockchain đều cam kết mang lại dữ liệu không thể bị xóa, theo dõi lịch sử đầy đủ và kiểm toán minh bạch. Tuy nhiên, mỗi công nghệ giải quyết những vấn đề rất khác nhau.
Việc lựa chọn sai công nghệ sẽ khiến bạn phải trả giá bằng sự phức tạp, hiệu suất, hoặc những đêm thức trắng với cốc cà phê trên tay. Bài viết này sẽ giúp bạn hiểu rõ sự khác biệt giữa event sourcing và blockchain, khi nào nên sử dụng từng phương pháp, và cả cách áp dụng kết hợp để phát huy tối đa lợi ích.
1. Triết Lý Cốt Lõi
Event Sourcing
Event sourcing là gì? Đây là định dạng nhật ký chỉ thêm (append-only log) các sự kiện miền (domain events), ví dụ như OrderPlaced (đặt hàng), UserBanned (cấm người dùng). Các trạng thái hiện tại được xây dựng lại từ các sự kiện này qua các projection.
Ưu điểm nổi bật
Thích hợp cho việc debug - giải thích lý do một trạng thái hiện tại của hệ thống.
Thực hiện các truy vấn theo thời gian: bạn có thể lấy lại trạng thái của dashboard ngày hôm qua, tuần trước.
Hỗ trợ tốt cho các workflow undo/redo.
Blockchain
Blockchain là gì? Đây là một sổ cái phân quyền (decentralized ledger) gồm các giao dịch được bảo chứng bởi cơ chế đồng thuận (consensus), nơi không có chủ sở hữu duy nhất.
Ưu điểm nổi bật
Phù hợp với môi trường không tin tưởng lẫn nhau như tiền mã hóa và chuỗi cung ứng.
Theo dõi nguồn gốc xuất xứ (provenance) như quyền sở hữu tài sản số NFT.
Chống kiểm duyệt (censorship resistance).
2. Những Khác Biệt Chính
Đặc điểm
Event Sourcing
Blockchain
Quyền quản lý
Tập trung (cơ sở dữ liệu của bạn)
Phi tập trung (toàn mạng lưới)
Hiệu suất
Hàng trăm nghìn sự kiện/giây
Từ 3 đến 100 giao dịch/giây, tùy chuỗi
Chi phí lưu trữ
Thấp (chi phí lưu trữ DB)
Cao (nhân bản toàn cầu)
Quyền riêng tư dữ liệu
Mặc định là riêng tư
Mặc định là công khai
Trường hợp sử dụng
Hệ thống nội bộ
Liên tổ chức, đa bên
3. Khi Nào Nên Sử Dụng Event Sourcing
Các Tình Huống Lý Tưởng
Ngành audit nặng về kiểm toán như ngân hàng, y tế.
Các workflow phức tạp, ví dụ như hủy đơn hàng, thay đổi trạng thái liên tục.
Giúp debug các vấn đề sản xuất nhanh và chính xác.
PricingCalculator.replay(events) # Tìm ra lỗi tính toán xảy ra ở đâu
4. Khi Nào Nên Sử Dụng Blockchain
Các Tình Huống Lý Tưởng
Các bên không tin tưởng nhau, ví dụ theo dõi nhà cung cấp trong chuỗi cung ứng.
Quản lý quyền sở hữu tài sản, chẳng hạn quyền sở hữu tài sản số hoặc quyền sở hữu trí tuệ.
Khả năng chống kiểm duyệt tài liệu, phục vụ các mục đích lưu trữ lưu tâm chính trị hoặc xã hội.
Ví Dụ Minh Họa
Chuyển quyền sở hữu NFT trên mạng Ethereum:
function transfer(address to, uint256 tokenId) public {
require(ownerOf(tokenId) == msg.sender);
_transfer(msg.sender, to, tokenId); // Ghi lại lịch sử bất biến
}
5. Giải Pháp Kết Hợp
Case Study: Chuỗi Cung Ứng
Blockchain: Ghi nhận các giao dịch giữa các công ty với nhau như “Lô hàng đã rời nhà máy.”
Event Sourcing: Quản lý các quy trình nội bộ như định tuyến kho hàng, xử lý đơn.
Triển Khai
# Khi lô hàng rời đi
event = ShipmentDispatched.new(tracking_id:"123")
EventStore.publish(event)
Blockchain.record(event) # Ghi lên Hyperledger
Một giải pháp lai (hybrid) tận dụng được sức mạnh riêng của cả hai, giảm thiểu điểm yếu khi dùng riêng lẻ.
6. Những Cạm Bẫy Cần Tránh
🚫 Dùng blockchain như một cơ sở dữ liệu chung: Việc ghi 10.000 lần mỗi phút sẽ “đốt cháy” chi phí phí gas và ảnh hưởng hiệu suất nghiêm trọng.
🚫 Không chú ý vấn đề quyền riêng tư trong event sourcing: Việc xử lý các yêu cầu như GDPR sẽ rất phức tạp nếu không có cơ chế tẩy xóa hoặc làm mờ dữ liệu.
🚫 Overengineering: Không phải mọi ứng dụng đều cần sự bất biến có thể chứng minh bằng kỹ thuật mật mã.
Giải đáp cho câu nói “CTO chúng ta thích blockchain!”: Hãy tự hỏi:
Chúng ta có cần sự phi tập trung không? Nếu không, event sourcing còn rẻ hơn.
Ai trả tiền cho phí gas? Đội vận hành sẽ rất "quậy" đấy.
Có thể dùng event store với chữ ký mật mã thay thế được không?
Kết Luận
Việc lựa chọn giữa event sourcing và blockchain cần dựa trên nhu cầu thực tế của hệ thống: tính bảo mật, kiến trúc phân tán, hiệu suất và chi phí vận hành. Với hệ thống nội bộ cần audit cao và khả năng debug, event sourcing là lựa chọn hợp lý. Trong khi đó, với môi trường nhiều bên và cần sự phi tập trung, blockchain là giải pháp ưu tiên. Kết hợp cả hai cũng là xu hướng mới giúp khai thác thế mạnh từng công nghệ.
Hiểu đúng và dùng đúng sẽ giúp bạn tối ưu hóa hệ thống, tiết kiệm chi phí và cân bằng hiệu năng vận hành.
Nếu bạn đã từng dùng hoặc thử nghiệm cả hai, hãy chia sẻ trải nghiệm và bài học quý báu của mình!