SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
Chia sẻ kinh nghiệm:
Thiết kế hệ thống,
Tối ưu,
Domain Driven Design,
CQRS,
Event Sourcing
Lê Minh Nghĩa,
Toong, 8 Tràng Thi, Hà Nội
2015/09/09
Giới thiệu
• Lê Minh Nghĩa
• Phone: 0936 073 986
• Email: nghia.fit@gmail.com
• Facebook: http://www.facebook.com/nghialeminh
• Quá khứ: Doko.VN – Cty Mimas
Muốn giao lưu chia sẻ về
• Enterprise Software Architecture
• Domain Driven Design
• CQRSCommand and Query Responsibility
Segregation (CQRS)
• Service Oritented Architecture (SOA)
• Event Driven Architecture
• High Performance Database
• Data Mining
• Cost Optimization
Các công việc đã, đang phụ trách
• Tối ưu hóa hệ thống
• Xây dựng giải pháp xử lý distributed transaction
• Triển khai Enterprise Service Bus để tích hợp hệ thống
• Triển khai kiến trúc hệ thống theo mô hình CQRS–ES.
• Xây dựng process manager cho việc xử lý đơn hàng
• Triển khai xử lý đơn hàng bất đồng bộ
Enterprise Software
và các phương pháp
phân tích thiết kế phần mềm
Enterprise Software là gì
• Là các phần mềm phục vụ quản lý các doanh nghiệp
như: công ty, cửa hàng, siêu thị, ngân hàng…
• Không bao gồm các phần mềm về viễn thông, game,
video…
• Có rằng buộc dữ liệu chặt chẽ
• Thường có luồng nghiệp vụ phức tạp
• Không bị gắn chắt vào phần cứng
Demo đơn giản
• Xây dựng một site hiển thị danh sách sản phẩm
• Cho phép đặt đơn hàng
• Đơn hàng có thể xác nhận hoặc hủy
• Môt đơn hàng có tên sản phẩm và số lượng
“Hello” Enterprise Software
• CRUD phương pháp đầu tiên để làm
• Phân tích yêu cầu
• Thiết kế CSDL
• Cài đặt
Nhìn lại, có gì không ổn nhỉ
• Gắn chắt với thiết kế CSDL
• Không gần với đời sống
• Dữ liệu không đóng gói
• Khả năng kế thừa hạn chế
• Khả năng bảo trì hạn chế
Chúng ta nghĩ gì và CRUD nói gì
• Chúng ta nói tới các đối tượng, các thực thể
• Phần mềm chúng ta nói tới các lệnh, các chức năng
• Phần mềm chúng ta không mô hình hóa cái chúng ta
hình dung
Domain Driven Design
• Chúng ta hình dung ra sao phần mềm cần phải xây dựng
như vậy
• Cùng một model
• Cùng một bộ ngôn ngữ
• Dữ liệu và hành vi phải đi liền với nhau
Vấn đề khi xây dựng Enterprise
Software
Vấn đề khi xây dựng Enterprise Software
Ubiquitous Language
Domain là gì
• An area of knowledge or activity
Domain Model
Bounded Context
Bounded Context
Context Map
Domain Model & Bounded Context
Aggregate – Consistent Boundary
Phân tách tầng lưu trữ ra riêng rẽ
Cài đặt ra sao?
• Đóng gói cao nhất
• Không public set
• Quên persistent, thiết kế model trước
• Thiết kế data layer tách biệt domain
• Thiết kế domain service
• Thiết kế application service
Vậy lợi ích là gì?
• Hiệu quả với các Bussiness phức tạp
• Đáp ứng với sự thay đổi liên tục của Bussiness Logic
• Các bên (dev, architect, domain expert) làm việc với
nhau hiệu quả
• Chi phí phát triển sau khi đã có core domain giảm
Còn có thể làm tốt hơn được không?
• Đọc dữ liệu nhanh hơn
• Đọc dữ liệu đơn giản hơn
• Ít rằng buộc hơn
• Sử dụng các schema khác nhau
• Đồng thời ghi dữ liệu vẫn phải đúng nghiệp vụ
CQRS
• Viết tắt: Command And Query Responsibility Segregation
• Phân tách hai luồng riêng biệt: ghi dữ liệu và đọc dữ liệu
• Sử dụng hai schema khác nhau
CQRS hình thù thế nào?
Make it Works
• Command: một lệnh làm hệ thống thay đổi dữ liệu
• Event: một sự thay đổi đã xảy ra
• Command Bus: đường truyền các lệnh
• Event Bus: đường truyền các event
Có cái gì đó xuyên suốt? – Event!
• Mỗi sự thay đổi đều phát sinh event
• Trạng thái của một đối tượng là một chuỗi các sự kiện xảy ra
• Chạy lại event để tái tạo đối tượng
Event Sourcing
• Lưu trữ nguồn event của một đối tượng
• Xây dựng event store lưu trữ toàn bộ event của một
object
• Khi lưu một event đồng thời publish một event
Lưu trữ thế nào – Event Store
• Xây dựng event store
• Một bảng dữ liệu dùng để append event
CQRS - ES
• CQRS kết hợp với ES dễ dàng
• Mỗi command sẽ phát sinh một hoặc nhiều event
• Các event được đánh version
• Version của một object là version của event
Process Manager Pattern
• Mô tả luồng nghiệp vụ là luồng các message
• Cần một manager để điều hướng các luồng message
Event as the Core
State Machine Pattern
• Lưu trữ state của hệ thống
• Xây dựng luồng chuyển trạng thái
• Tách phần quản lý trạng thái ra khỏi aggregate
State Matrix
• Mô tả việc chuyển trạng thái dưới dạng ma trận
• Dễ dàng quản lý
• Logic rõ ràng
State Matrix
Thiết kế hệ thống phân tán có hiệu năng cao
• Tránh tranh chấp dữ liệu
• Tính toán trước
• Sử dụng tài nguyên tính toán hợp lý
Nguyên lý CAP
Một case đơn giản mà không đơn giản
• Xây dựng web service update CSDL đảm bảo strong
consistency data
Distributed Transaction
• Giao dịch với nhiều nguồn dữ liệu
• Cần phải đảm bảo consistency
• Giải pháp là gì
Two Phase Commit
Thưc hiện hai phase:
- Write
- Commit
Nếu lỗi: Undo tất cả
Đòi hỏi: lock tất cả các resources
Eventually Consistency
• Thay thế consistency bằng eventually consistency
• Eventually consistency khắp mọi nơi
• Không thể eventually tất cả nhưng hãy tối đa có thể
Hạn chế của kiến trúc hướng dịch vụ theo
mô hình request - response
SOA theo mô hình Event Driven
Bất đồng bộ và bài toán tối ưu về
hiệu năng và kinh tế
• Bất đồng bộ tối đa có thể
• Không cần scale tất cả các node
• Tập trung tài nguyên tính toán cho node đòi hỏi hiệu
năng cao
Sử dụng Message Bus để phân tách hệ thống
Các vấn đề cần chú ý
• Khi nào CQRS phù hợp?
• Hệ thống collobrative sysytem
• Phải có nền tảng message ổn định
• Cần phải giải quyết transation giữa message bus và database
• Xác định tính chất Idempotent
• Chú ý về thứ tự event
• Xây dựng event store để không bị thắt cổ trai
Các giải pháp
• Phân tích luồng nghiệp vụ thật cẩn thận
• Chọn lựa nền tảng message bus có khả năng persistent và
scale out tốt cũng như có khả năng điều hướng message tốt
• Tránh tình trạng bị trùng lặp message hoặc có cơ chế phòng trừ
• Xây dựng giải pháp partition và sharding data cho event store
Kết luận
“Không thể scale được nếu không chia tách được”
Thank you.
Q&A

Mais conteúdo relacionado

Destaque

5.4 giới thiệu một công ty hoặc tổ chức
5.4 giới thiệu một công ty hoặc tổ chức5.4 giới thiệu một công ty hoặc tổ chức
5.4 giới thiệu một công ty hoặc tổ chứcLac Hong University
 
Export promo measures and schemes
Export promo measures and schemesExport promo measures and schemes
Export promo measures and schemesShivani Modi
 
Khác biệt giữa hành vi tiêu dùng tại HN & HCM
Khác biệt giữa hành vi tiêu dùng tại HN & HCMKhác biệt giữa hành vi tiêu dùng tại HN & HCM
Khác biệt giữa hành vi tiêu dùng tại HN & HCMimarketing-mass
 
Ke hoach kinh doanh quan cafe Camisio - Digital Marketting SV Kent
Ke hoach kinh doanh quan cafe Camisio - Digital Marketting SV KentKe hoach kinh doanh quan cafe Camisio - Digital Marketting SV Kent
Ke hoach kinh doanh quan cafe Camisio - Digital Marketting SV KentPhat Huu
 
Tai lieu phat trien kinh doanh 06.2012
Tai lieu phat trien kinh doanh 06.2012Tai lieu phat trien kinh doanh 06.2012
Tai lieu phat trien kinh doanh 06.2012Phạm Anh Dũng
 
Email marketing áp dụng trong doanh nghiệp
Email marketing áp dụng trong doanh nghiệpEmail marketing áp dụng trong doanh nghiệp
Email marketing áp dụng trong doanh nghiệpHoang Viet Dao
 
Quan ly-su-thay-doi-va-chuyen-tiep
Quan ly-su-thay-doi-va-chuyen-tiepQuan ly-su-thay-doi-va-chuyen-tiep
Quan ly-su-thay-doi-va-chuyen-tiepThuy Thanh Pham
 
Islam And Fair Trade
Islam And Fair TradeIslam And Fair Trade
Islam And Fair TradeSamia_a
 
Ngành Sữa 2014 Người Tiêu Dùng và Hoạt động Quảng cáo Trực tuyến
Ngành Sữa 2014 Người Tiêu Dùng và Hoạt động Quảng cáo Trực tuyếnNgành Sữa 2014 Người Tiêu Dùng và Hoạt động Quảng cáo Trực tuyến
Ngành Sữa 2014 Người Tiêu Dùng và Hoạt động Quảng cáo Trực tuyếnDung Tri
 
Thị trường sửa bột ở việt nam
Thị trường sửa bột ở việt namThị trường sửa bột ở việt nam
Thị trường sửa bột ở việt namSang Meo
 
Young Marketers 2 - Chung ket - Nhom S.E.X
Young Marketers 2 - Chung ket - Nhom S.E.XYoung Marketers 2 - Chung ket - Nhom S.E.X
Young Marketers 2 - Chung ket - Nhom S.E.XYoungMarketers2
 
Young Marketers 2 - Chung Ket - Indie
Young Marketers 2 - Chung Ket - IndieYoung Marketers 2 - Chung Ket - Indie
Young Marketers 2 - Chung Ket - IndieYoungMarketers2
 
Lập kế hoạch bán hàng Vinamilk khu vực Cầu Giấy, Hà Nội
Lập kế hoạch bán hàng Vinamilk khu vực Cầu Giấy, Hà NộiLập kế hoạch bán hàng Vinamilk khu vực Cầu Giấy, Hà Nội
Lập kế hoạch bán hàng Vinamilk khu vực Cầu Giấy, Hà NộiGiang Coffee
 
Young Marketers 2 - Chung Ket - STORM
Young Marketers 2 - Chung Ket - STORMYoung Marketers 2 - Chung Ket - STORM
Young Marketers 2 - Chung Ket - STORMYoungMarketers2
 
Mẫu kế hoạch kinh doanh ngành sữa 2014
Mẫu kế hoạch kinh doanh ngành sữa 2014Mẫu kế hoạch kinh doanh ngành sữa 2014
Mẫu kế hoạch kinh doanh ngành sữa 2014Kim Thuan
 

Destaque (15)

5.4 giới thiệu một công ty hoặc tổ chức
5.4 giới thiệu một công ty hoặc tổ chức5.4 giới thiệu một công ty hoặc tổ chức
5.4 giới thiệu một công ty hoặc tổ chức
 
Export promo measures and schemes
Export promo measures and schemesExport promo measures and schemes
Export promo measures and schemes
 
Khác biệt giữa hành vi tiêu dùng tại HN & HCM
Khác biệt giữa hành vi tiêu dùng tại HN & HCMKhác biệt giữa hành vi tiêu dùng tại HN & HCM
Khác biệt giữa hành vi tiêu dùng tại HN & HCM
 
Ke hoach kinh doanh quan cafe Camisio - Digital Marketting SV Kent
Ke hoach kinh doanh quan cafe Camisio - Digital Marketting SV KentKe hoach kinh doanh quan cafe Camisio - Digital Marketting SV Kent
Ke hoach kinh doanh quan cafe Camisio - Digital Marketting SV Kent
 
Tai lieu phat trien kinh doanh 06.2012
Tai lieu phat trien kinh doanh 06.2012Tai lieu phat trien kinh doanh 06.2012
Tai lieu phat trien kinh doanh 06.2012
 
Email marketing áp dụng trong doanh nghiệp
Email marketing áp dụng trong doanh nghiệpEmail marketing áp dụng trong doanh nghiệp
Email marketing áp dụng trong doanh nghiệp
 
Quan ly-su-thay-doi-va-chuyen-tiep
Quan ly-su-thay-doi-va-chuyen-tiepQuan ly-su-thay-doi-va-chuyen-tiep
Quan ly-su-thay-doi-va-chuyen-tiep
 
Islam And Fair Trade
Islam And Fair TradeIslam And Fair Trade
Islam And Fair Trade
 
Ngành Sữa 2014 Người Tiêu Dùng và Hoạt động Quảng cáo Trực tuyến
Ngành Sữa 2014 Người Tiêu Dùng và Hoạt động Quảng cáo Trực tuyếnNgành Sữa 2014 Người Tiêu Dùng và Hoạt động Quảng cáo Trực tuyến
Ngành Sữa 2014 Người Tiêu Dùng và Hoạt động Quảng cáo Trực tuyến
 
Thị trường sửa bột ở việt nam
Thị trường sửa bột ở việt namThị trường sửa bột ở việt nam
Thị trường sửa bột ở việt nam
 
Young Marketers 2 - Chung ket - Nhom S.E.X
Young Marketers 2 - Chung ket - Nhom S.E.XYoung Marketers 2 - Chung ket - Nhom S.E.X
Young Marketers 2 - Chung ket - Nhom S.E.X
 
Young Marketers 2 - Chung Ket - Indie
Young Marketers 2 - Chung Ket - IndieYoung Marketers 2 - Chung Ket - Indie
Young Marketers 2 - Chung Ket - Indie
 
Lập kế hoạch bán hàng Vinamilk khu vực Cầu Giấy, Hà Nội
Lập kế hoạch bán hàng Vinamilk khu vực Cầu Giấy, Hà NộiLập kế hoạch bán hàng Vinamilk khu vực Cầu Giấy, Hà Nội
Lập kế hoạch bán hàng Vinamilk khu vực Cầu Giấy, Hà Nội
 
Young Marketers 2 - Chung Ket - STORM
Young Marketers 2 - Chung Ket - STORMYoung Marketers 2 - Chung Ket - STORM
Young Marketers 2 - Chung Ket - STORM
 
Mẫu kế hoạch kinh doanh ngành sữa 2014
Mẫu kế hoạch kinh doanh ngành sữa 2014Mẫu kế hoạch kinh doanh ngành sữa 2014
Mẫu kế hoạch kinh doanh ngành sữa 2014
 

Mais de Vu Hung Nguyen

Co ban horenso - Tai lieu training noi bo
Co ban horenso - Tai lieu training noi boCo ban horenso - Tai lieu training noi bo
Co ban horenso - Tai lieu training noi boVu Hung Nguyen
 
Funix techtalk: Tự học hiệu quả thời 4.0
Funix techtalk: Tự học hiệu quả thời 4.0Funix techtalk: Tự học hiệu quả thời 4.0
Funix techtalk: Tự học hiệu quả thời 4.0Vu Hung Nguyen
 
Học cờ cùng con - Nguyễn Vỹ Kỳ Anh [U8]
Học cờ cùng con - Nguyễn Vỹ Kỳ Anh [U8]Học cờ cùng con - Nguyễn Vỹ Kỳ Anh [U8]
Học cờ cùng con - Nguyễn Vỹ Kỳ Anh [U8]Vu Hung Nguyen
 
Japanese for it bridge engineers
Japanese for it bridge engineersJapanese for it bridge engineers
Japanese for it bridge engineersVu Hung Nguyen
 
Basic IT Project Management Terminologies
Basic IT Project Management TerminologiesBasic IT Project Management Terminologies
Basic IT Project Management TerminologiesVu Hung Nguyen
 
2018 Học cờ cùng con - Nguyễn Vũ Kỳ Anh [U7]
2018 Học cờ cùng con - Nguyễn Vũ Kỳ Anh [U7]2018 Học cờ cùng con - Nguyễn Vũ Kỳ Anh [U7]
2018 Học cờ cùng con - Nguyễn Vũ Kỳ Anh [U7]Vu Hung Nguyen
 
Làm việc hiệu quả với sếp Nhật (2017)
Làm việc hiệu quả với sếp Nhật (2017)Làm việc hiệu quả với sếp Nhật (2017)
Làm việc hiệu quả với sếp Nhật (2017)Vu Hung Nguyen
 
Problem Solving Skills (for IT Engineers)
Problem Solving Skills (for IT Engineers)Problem Solving Skills (for IT Engineers)
Problem Solving Skills (for IT Engineers)Vu Hung Nguyen
 
Using Shader in cocos2d-x
Using Shader in cocos2d-xUsing Shader in cocos2d-x
Using Shader in cocos2d-xVu Hung Nguyen
 
Pham Anh Tu - TK Framework
Pham Anh Tu - TK FrameworkPham Anh Tu - TK Framework
Pham Anh Tu - TK FrameworkVu Hung Nguyen
 
My idol: Magnus Carlsen vs. Ky Anh 2G1 NGS Newton
My idol: Magnus Carlsen vs. Ky Anh 2G1 NGS NewtonMy idol: Magnus Carlsen vs. Ky Anh 2G1 NGS Newton
My idol: Magnus Carlsen vs. Ky Anh 2G1 NGS NewtonVu Hung Nguyen
 
Basic advanced scrum framework
Basic advanced scrum frameworkBasic advanced scrum framework
Basic advanced scrum frameworkVu Hung Nguyen
 
FPT Univ. Talkshow IT khong chi la lap trinh
FPT Univ. Talkshow IT khong chi la lap trinhFPT Univ. Talkshow IT khong chi la lap trinh
FPT Univ. Talkshow IT khong chi la lap trinhVu Hung Nguyen
 
Basic & Advanced Scrum Framework
Basic & Advanced Scrum FrameworkBasic & Advanced Scrum Framework
Basic & Advanced Scrum FrameworkVu Hung Nguyen
 
Agile Vietnam Conference 2016: Recap
Agile Vietnam Conference 2016: RecapAgile Vietnam Conference 2016: Recap
Agile Vietnam Conference 2016: RecapVu Hung Nguyen
 
IT Public Speaking Guidelines
IT Public Speaking GuidelinesIT Public Speaking Guidelines
IT Public Speaking GuidelinesVu Hung Nguyen
 
Kanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoKanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoVu Hung Nguyen
 
Học cờ vua cùng con Nguyễn Vũ Kỳ Anh (U6)
Học cờ vua cùng con Nguyễn Vũ Kỳ Anh (U6)Học cờ vua cùng con Nguyễn Vũ Kỳ Anh (U6)
Học cờ vua cùng con Nguyễn Vũ Kỳ Anh (U6)Vu Hung Nguyen
 
Fuji Technology Workshop: Learning Skills
Fuji Technology Workshop: Learning SkillsFuji Technology Workshop: Learning Skills
Fuji Technology Workshop: Learning SkillsVu Hung Nguyen
 
Anti patterns in it project management
Anti patterns in it project managementAnti patterns in it project management
Anti patterns in it project managementVu Hung Nguyen
 

Mais de Vu Hung Nguyen (20)

Co ban horenso - Tai lieu training noi bo
Co ban horenso - Tai lieu training noi boCo ban horenso - Tai lieu training noi bo
Co ban horenso - Tai lieu training noi bo
 
Funix techtalk: Tự học hiệu quả thời 4.0
Funix techtalk: Tự học hiệu quả thời 4.0Funix techtalk: Tự học hiệu quả thời 4.0
Funix techtalk: Tự học hiệu quả thời 4.0
 
Học cờ cùng con - Nguyễn Vỹ Kỳ Anh [U8]
Học cờ cùng con - Nguyễn Vỹ Kỳ Anh [U8]Học cờ cùng con - Nguyễn Vỹ Kỳ Anh [U8]
Học cờ cùng con - Nguyễn Vỹ Kỳ Anh [U8]
 
Japanese for it bridge engineers
Japanese for it bridge engineersJapanese for it bridge engineers
Japanese for it bridge engineers
 
Basic IT Project Management Terminologies
Basic IT Project Management TerminologiesBasic IT Project Management Terminologies
Basic IT Project Management Terminologies
 
2018 Học cờ cùng con - Nguyễn Vũ Kỳ Anh [U7]
2018 Học cờ cùng con - Nguyễn Vũ Kỳ Anh [U7]2018 Học cờ cùng con - Nguyễn Vũ Kỳ Anh [U7]
2018 Học cờ cùng con - Nguyễn Vũ Kỳ Anh [U7]
 
Làm việc hiệu quả với sếp Nhật (2017)
Làm việc hiệu quả với sếp Nhật (2017)Làm việc hiệu quả với sếp Nhật (2017)
Làm việc hiệu quả với sếp Nhật (2017)
 
Problem Solving Skills (for IT Engineers)
Problem Solving Skills (for IT Engineers)Problem Solving Skills (for IT Engineers)
Problem Solving Skills (for IT Engineers)
 
Using Shader in cocos2d-x
Using Shader in cocos2d-xUsing Shader in cocos2d-x
Using Shader in cocos2d-x
 
Pham Anh Tu - TK Framework
Pham Anh Tu - TK FrameworkPham Anh Tu - TK Framework
Pham Anh Tu - TK Framework
 
My idol: Magnus Carlsen vs. Ky Anh 2G1 NGS Newton
My idol: Magnus Carlsen vs. Ky Anh 2G1 NGS NewtonMy idol: Magnus Carlsen vs. Ky Anh 2G1 NGS Newton
My idol: Magnus Carlsen vs. Ky Anh 2G1 NGS Newton
 
Basic advanced scrum framework
Basic advanced scrum frameworkBasic advanced scrum framework
Basic advanced scrum framework
 
FPT Univ. Talkshow IT khong chi la lap trinh
FPT Univ. Talkshow IT khong chi la lap trinhFPT Univ. Talkshow IT khong chi la lap trinh
FPT Univ. Talkshow IT khong chi la lap trinh
 
Basic & Advanced Scrum Framework
Basic & Advanced Scrum FrameworkBasic & Advanced Scrum Framework
Basic & Advanced Scrum Framework
 
Agile Vietnam Conference 2016: Recap
Agile Vietnam Conference 2016: RecapAgile Vietnam Conference 2016: Recap
Agile Vietnam Conference 2016: Recap
 
IT Public Speaking Guidelines
IT Public Speaking GuidelinesIT Public Speaking Guidelines
IT Public Speaking Guidelines
 
Kanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoKanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng cao
 
Học cờ vua cùng con Nguyễn Vũ Kỳ Anh (U6)
Học cờ vua cùng con Nguyễn Vũ Kỳ Anh (U6)Học cờ vua cùng con Nguyễn Vũ Kỳ Anh (U6)
Học cờ vua cùng con Nguyễn Vũ Kỳ Anh (U6)
 
Fuji Technology Workshop: Learning Skills
Fuji Technology Workshop: Learning SkillsFuji Technology Workshop: Learning Skills
Fuji Technology Workshop: Learning Skills
 
Anti patterns in it project management
Anti patterns in it project managementAnti patterns in it project management
Anti patterns in it project management
 

Itlc hn 20150909 - le minh nghia - crud, ddd, cqrs, cqrs-es and op

  • 1. Chia sẻ kinh nghiệm: Thiết kế hệ thống, Tối ưu, Domain Driven Design, CQRS, Event Sourcing Lê Minh Nghĩa, Toong, 8 Tràng Thi, Hà Nội 2015/09/09
  • 2. Giới thiệu • Lê Minh Nghĩa • Phone: 0936 073 986 • Email: nghia.fit@gmail.com • Facebook: http://www.facebook.com/nghialeminh • Quá khứ: Doko.VN – Cty Mimas
  • 3. Muốn giao lưu chia sẻ về • Enterprise Software Architecture • Domain Driven Design • CQRSCommand and Query Responsibility Segregation (CQRS) • Service Oritented Architecture (SOA) • Event Driven Architecture • High Performance Database • Data Mining • Cost Optimization
  • 4. Các công việc đã, đang phụ trách • Tối ưu hóa hệ thống • Xây dựng giải pháp xử lý distributed transaction • Triển khai Enterprise Service Bus để tích hợp hệ thống • Triển khai kiến trúc hệ thống theo mô hình CQRS–ES. • Xây dựng process manager cho việc xử lý đơn hàng • Triển khai xử lý đơn hàng bất đồng bộ
  • 5. Enterprise Software và các phương pháp phân tích thiết kế phần mềm
  • 6. Enterprise Software là gì • Là các phần mềm phục vụ quản lý các doanh nghiệp như: công ty, cửa hàng, siêu thị, ngân hàng… • Không bao gồm các phần mềm về viễn thông, game, video… • Có rằng buộc dữ liệu chặt chẽ • Thường có luồng nghiệp vụ phức tạp • Không bị gắn chắt vào phần cứng
  • 7. Demo đơn giản • Xây dựng một site hiển thị danh sách sản phẩm • Cho phép đặt đơn hàng • Đơn hàng có thể xác nhận hoặc hủy • Môt đơn hàng có tên sản phẩm và số lượng
  • 8. “Hello” Enterprise Software • CRUD phương pháp đầu tiên để làm • Phân tích yêu cầu • Thiết kế CSDL • Cài đặt
  • 9. Nhìn lại, có gì không ổn nhỉ • Gắn chắt với thiết kế CSDL • Không gần với đời sống • Dữ liệu không đóng gói • Khả năng kế thừa hạn chế • Khả năng bảo trì hạn chế
  • 10. Chúng ta nghĩ gì và CRUD nói gì • Chúng ta nói tới các đối tượng, các thực thể • Phần mềm chúng ta nói tới các lệnh, các chức năng • Phần mềm chúng ta không mô hình hóa cái chúng ta hình dung
  • 11. Domain Driven Design • Chúng ta hình dung ra sao phần mềm cần phải xây dựng như vậy • Cùng một model • Cùng một bộ ngôn ngữ • Dữ liệu và hành vi phải đi liền với nhau
  • 12. Vấn đề khi xây dựng Enterprise Software
  • 13. Vấn đề khi xây dựng Enterprise Software
  • 15. Domain là gì • An area of knowledge or activity
  • 20. Domain Model & Bounded Context
  • 22. Phân tách tầng lưu trữ ra riêng rẽ
  • 23. Cài đặt ra sao? • Đóng gói cao nhất • Không public set • Quên persistent, thiết kế model trước • Thiết kế data layer tách biệt domain • Thiết kế domain service • Thiết kế application service
  • 24. Vậy lợi ích là gì? • Hiệu quả với các Bussiness phức tạp • Đáp ứng với sự thay đổi liên tục của Bussiness Logic • Các bên (dev, architect, domain expert) làm việc với nhau hiệu quả • Chi phí phát triển sau khi đã có core domain giảm
  • 25. Còn có thể làm tốt hơn được không? • Đọc dữ liệu nhanh hơn • Đọc dữ liệu đơn giản hơn • Ít rằng buộc hơn • Sử dụng các schema khác nhau • Đồng thời ghi dữ liệu vẫn phải đúng nghiệp vụ
  • 26. CQRS • Viết tắt: Command And Query Responsibility Segregation • Phân tách hai luồng riêng biệt: ghi dữ liệu và đọc dữ liệu • Sử dụng hai schema khác nhau
  • 27. CQRS hình thù thế nào?
  • 28. Make it Works • Command: một lệnh làm hệ thống thay đổi dữ liệu • Event: một sự thay đổi đã xảy ra • Command Bus: đường truyền các lệnh • Event Bus: đường truyền các event
  • 29. Có cái gì đó xuyên suốt? – Event! • Mỗi sự thay đổi đều phát sinh event • Trạng thái của một đối tượng là một chuỗi các sự kiện xảy ra • Chạy lại event để tái tạo đối tượng
  • 30. Event Sourcing • Lưu trữ nguồn event của một đối tượng • Xây dựng event store lưu trữ toàn bộ event của một object • Khi lưu một event đồng thời publish một event
  • 31. Lưu trữ thế nào – Event Store • Xây dựng event store • Một bảng dữ liệu dùng để append event
  • 32. CQRS - ES • CQRS kết hợp với ES dễ dàng • Mỗi command sẽ phát sinh một hoặc nhiều event • Các event được đánh version • Version của một object là version của event
  • 33. Process Manager Pattern • Mô tả luồng nghiệp vụ là luồng các message • Cần một manager để điều hướng các luồng message
  • 34. Event as the Core
  • 35. State Machine Pattern • Lưu trữ state của hệ thống • Xây dựng luồng chuyển trạng thái • Tách phần quản lý trạng thái ra khỏi aggregate
  • 36. State Matrix • Mô tả việc chuyển trạng thái dưới dạng ma trận • Dễ dàng quản lý • Logic rõ ràng
  • 38. Thiết kế hệ thống phân tán có hiệu năng cao • Tránh tranh chấp dữ liệu • Tính toán trước • Sử dụng tài nguyên tính toán hợp lý
  • 40. Một case đơn giản mà không đơn giản • Xây dựng web service update CSDL đảm bảo strong consistency data
  • 41. Distributed Transaction • Giao dịch với nhiều nguồn dữ liệu • Cần phải đảm bảo consistency • Giải pháp là gì
  • 42. Two Phase Commit Thưc hiện hai phase: - Write - Commit Nếu lỗi: Undo tất cả Đòi hỏi: lock tất cả các resources
  • 43. Eventually Consistency • Thay thế consistency bằng eventually consistency • Eventually consistency khắp mọi nơi • Không thể eventually tất cả nhưng hãy tối đa có thể
  • 44. Hạn chế của kiến trúc hướng dịch vụ theo mô hình request - response
  • 45. SOA theo mô hình Event Driven
  • 46. Bất đồng bộ và bài toán tối ưu về hiệu năng và kinh tế • Bất đồng bộ tối đa có thể • Không cần scale tất cả các node • Tập trung tài nguyên tính toán cho node đòi hỏi hiệu năng cao
  • 47. Sử dụng Message Bus để phân tách hệ thống
  • 48. Các vấn đề cần chú ý • Khi nào CQRS phù hợp? • Hệ thống collobrative sysytem • Phải có nền tảng message ổn định • Cần phải giải quyết transation giữa message bus và database • Xác định tính chất Idempotent • Chú ý về thứ tự event • Xây dựng event store để không bị thắt cổ trai
  • 49. Các giải pháp • Phân tích luồng nghiệp vụ thật cẩn thận • Chọn lựa nền tảng message bus có khả năng persistent và scale out tốt cũng như có khả năng điều hướng message tốt • Tránh tình trạng bị trùng lặp message hoặc có cơ chế phòng trừ • Xây dựng giải pháp partition và sharding data cho event store
  • 50. Kết luận “Không thể scale được nếu không chia tách được”