Logistics hỗ trợ nhà quản lý ra quyết định chính xác trong hoạt động sản xuất kinh doanh : Trong quá trình sản xuất kinh doanh, nhà quản lý phải giải quyết nhiều bài toán hóc búa về nguồ
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
SINH VIÊN THỰC HIỆN
LỤC THIÊN BÌNH – 16520092
BÙI GIA HÒA – 16520422
TP HỒ CHÍ MINH, 2021
Trang 31
DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN
Hội đồng chấm khóa luận tốt nghiệp, thành lập theoQuyết định
số ngày của Hiệu trưởng Trường Đại học Công nghệThông tin
1 –Chủ tịch
2 –Thư ký
3 –Ủy viên
4 –Ủy viên
Trang 42
LỜI CẢM ƠN
Sau hơn 4.5 năm học tập và rèn luyện tại Trường Đại Học Công Nghệ
Thông Tin, được sự chỉ bảo và giảng dạy nhiệt tình của quý thầy cô, đặc biệt
quý thầy cô trong khoa Công Nghệ Phần Mềm, em đã học tập được rất nhiều
kiến thức bổ ích về lý thuyết và thực hành trong thời gian qua Trong khoảng
thời gian thực hiện luận văn tốt nghiệp, em càng học hỏi thêm được nhiều
kiến thức, kinh nghiệm để áp dụng và đã hoàn thành được luận văn tốt
nghiệp
Xin chân thành cảm ơn quý thầy cô Khoa Công Nghệ Phần mềm, đặc
biệt là cô Đỗ Thị Thanh Tuyền và thầy Vũ Đức Lung đã tận tình hướng dẫn
em hoàn thành luận văn tốt nghiệp này
Bên cạnh đó, em xin gửi lời cảm ơn đến các bạn cùng lớp đã có những
lời góp ý, động viên để nhóm có thêm động lực thực hiện khóa luận trong
khoảng thời gian khó khăn này
Trong suốt quá trình em tìm hiểu và thực hiện khóa luận, do đề tài sử
dụng công nghệ còn khá mới, thời gian và khả năng có giới hạn nên em vẫn
còn nhiều thiếu sót Do đó, em rất mong nhận được sự thông cảm và những ý
kiến đóng góp chân thành từ quý thầy cô và các bạn Một lần nữa, em xin
chân thành cảm ơn mọi người
Lục Thiên Bình – Bùi Gia Hòa TpHCM, tháng 1 năm 2021
Trang 53
MỤC LỤC
TÓM TẮT ĐỀ TÀI 1
Chương 1 Tổng quan đề tài 2
Chương 2 Zeebe và các sản phẩm tương tự khác trên thị trường 3
2.1 Zeebe là gì ? 3
2.2 Zeebe dành cho ai, hoàn cảnh nào ? 3
2.3 Các sản phẩm công cụ tương tự khác: 5
2.3.1 Camunda BPM 5
2.3.2 Google cloud composer 7
2.3.1 Apache Kafka – chung 1 phần ý tưởng 10
2.3.1.1 Giới thiệu 10
2.3.1.2 Các thành phần cơ bản của Kafka 10
2.3.1.3 Tại sao nên sử dụng Apache Kafka? 12
2.4 Workflow engine là gì ? 13
2.4.1 Giới thiệu 13
2.4.2 Các thuật ngữ cơ bản của workflow engine 13
2.4.3 Concept của 1 workflow engine 14
2.4.1 Ích lợi khi sử dụng workflow engine 15
Chương 3 Quá trình phát triển của Zeebe (Roadmap) 17
3.1 Lịch sử ra đời 17
3.2 Zeebe – Phiên bản production ready 17
3.3 Roadmap của Zeebe theo từng quý qua các năm 18
3.3.1 Qúy 1 năm 2020 18
3.3.2 Quý 4 năm 2019 18
Trang 64
3.3.3 Quý 3 năm 2019 19
3.3.4 Quý 2 năm 2019 19
3.3.5 Quý 1 năm 2019 20
3.3.6 Quý 4 năm 2018 20
3.3.7 Quý 3 năm 2018 21
Chương 4 Các thành phần và chức năng của nó trong Zeebe 22
4.1 Kiến trúc của Zeebe 22
4.1.1 Các thành phần chính của Zeebe 22
4.1.2 Client 22
4.1.3 Gateway 23
4.1.4 Broker 23
4.1.5 Exporter 24
4.2 Quy trình nghiệp vụ (workflow) trong Zeebe 24
4.2.1 Trình tự 25
4.2.2 Dòng dữ liệu 25
4.2.3 Điều kiện dựa vào dữ liệu 26
4.2.4 Sự kiện 26
4.2.5 Tách hay gộp flow 26
4.2.6 Các ký hiệu khác của BPMN 27
4.2.7 BPMN Modeler – Zeebe Modeler 27
4.3 Job worker trong Zeebe – Zeebe worker 27
4.3.1 Khái niệm 27
4.3.2 Yêu cầu công việc từ broker: 28
4.3.3 Long polling: 29
Trang 75
4.3.4 Job Queueing 30
4.4 Partitions (phân mảnh) 30
4.4.1 Ví dụ sử dụng 31
4.4.2 Khả năng mở rộng 31
4.4.3 Partition Data Layout 31
4.4.4 Replication 32
4.5 Protocols (giao thức kết nối) 32
4.6 Quá trình xử lý trạng thái bên trong 33
4.6.1 Xuất record 33
4.6.2 Máy trạng thái 33
4.6.3 Sự kiện và Lệnh 34
4.6.4 Xử lý dòng trạng thái 35
4.7 Exporter 35
4.8 Clustering 37
4.8.1 Giao thức thành viên Gossip 38
4.8.2 Giao thức đồng thuận và nhân rộng Raft 38
4.8.3 Cam kết bền vững 39
Chương 5: Tìm hiểu quản lí chuỗi cung ứng vận chuyển và phân tích các ứng dụng phổ biến trên thị trường 40
5.1 Tìm hiểu quản lí chuỗi cung ứng vận chuyển: 40
5.1.1 Giới thiệu: 40
5.1.2 Các nguyên tắc trong vận chuyển hàng hóa: 40
5.1.3 Các chức năng quản lí vận chuyển hàng hóa: 41
5.1.4 Theo dõi trạng thái của đơn hàng trong vận tải: 44
Trang 86
5.1.5 Quản lý sự kiện sự kiện chuỗi cung ứng: 45
5.1.6 Hệ thống quản lý sự kiện chuỗi cung ứng: 46
5.2 Phân tích các ứng dụng phổ biến trên thị trường: 46
5.2.1 Ứng dụng GHN Express: 46
5.2.2 Ứng dụng Ahamove 47
5.2.3 Ứng dụng ViettelPost: 49
Chương 6: Các công nghệ sử dụng chung với Zeebe 52
6.1 Ngôn ngữ lập trình goLang: 52
6.1.1 Giới thiệu: 52
6.1.2 Ưu điểm: 52
6.1.3 Nhược điểm: 54
6.2 API: 55
6.2.1 Giới thiệu: 55
6.2.2 Ưu điểm: 56
6.2.3 Nhược điểm: 57
6.3 Rest API: 57
6.3.1 Giới thiệu: 57
6.3.2 Ràng buộc Rest: 58
6.3.3 Ưu điểm: 59
6.4 React.JS: 59
6.4.1 Giới thiệu: 59
6.4.2 React là gì: 60
6.4.3 Ưu điểm: 62
6.4.4 Nhược điểm: 62
Trang 97
6.5 React Native: 63
6.5.1 Giới thiệu: 63
6.5.2 Ưu điểm: 63
6.5.3 Nhược điểm: 64
Chương 7: Xây dựng ứng dụng 65
7.1 Sơ đồ Use Case: 65
7.2 Danh sách các Actor: 65
7.3 Danh sách một số Use Case chính: 66
7.4 Đặc tả một số Use Case chính: 66
7.4.1 Tạo transport type: 66
7.4.2 Tạo long ship: 67
7.4.3 Tạo order: 68
7.5 Sơ đồ lớp: 70
7.5.1 Sơ đồ lớp tổng quát: 70
7.5.2 Mô tả các thành phần trong cơ sở dữ liệu: 71
7.6 Thiết kế giao diện: 81
7.6.1 Giao diện ứng dụng điện thoại: 81
7.6.2 Giao diện màn hình web: 92
Chương 8: Kết luận và hướng phát triển: 99
8.1Kết quả đạt được: 99
8.2Nhận xét: 99
8.2.1 Ưu điểm: 99
8.2.2 Khuyết điểm: 99
8.3 Hướng phát triển: 99
Trang 108 Tài liệu kham khảo 100
Trang 119
DANH MỤC HÌNH VẼ
Hình 2.1 Mô hình quy trình làm việc đặt hàng của khách hàng ……….3
Hình 2.2 Hình thống kê thông tin và tính năng của Zeebe ………5
Hình 2.3 Kiến trúc của Camunda BPM ……… 6
Hình 2.4 Kiến trúc của google cloud composer ……….8
Hình 2.5 Kiến trúc của apache kafka ……… 10
Hình 2.6 Các thành phần cơ bản của Kafka ……….12
Hình 2.7 Kiến trúc cơ bản của workflow engine ……….14
Hình 4.1 Các thành phần chính của Zeebe ……… 22
Hình 4.2 Ví dụ quy trình nghiệp vụ cơ bản trong Zeebe ……….24
Hình 4.3 Xử lí trình tự trong Zeebe ……….25
Hình 4.4 Xử lí dòng dữ liệu trong Zeebe ……….26
Hình 4.5 Minh họa workflow của Zeebe ……….29
Hình 4.6 Cách các thành phần trong Zeebe xử lí dữ liệu ……….30
Hình 4.7 Hành động được thực hiện trong long polling ……… 31
Hình 4.8 Minh họa các Zeebe phân mảnh dữ liệu ……… 32
Hình 4.9 Các trạng thái xử lí dữ liệu trong Zeebe ……… 34
Hình 4.10 Xử lí dòng trạng thái trong Zeebe ……… 35
Hình 4.11 Minh họa cách chạy dữ liệu trong exporter ………36
Hình 4.12 Minh họa clustering trong Zeebe ………37
Hình 4.13 Giao thực đồng thuận trong Zeebe ……… 38
Hình 5.1 Chức năng quản lí vận chuyển hàng hóa ……… 41
Hình 5.2 Quy trình quản lí vận chuyển hàng hóa ………43
Trang 1210
Hình 5.3 Theo dõi trạng thái của đơn hàng trong vận tải ………45
Hình 5.4 Ứng dụng GHN Express ……… 47
Hình 5.5 Ứng dụng giao hàng Ahamove ……….48
Hình 5.6 Ứng dụng giao hàng ViettelPost ……… 50
Hình 5.7 Ứng dụng giao hàng LaLaMove ……… 51
Hình 6.1 Min họa về Golang ………53
Hình 6.2 Minh hoạ về web api ……….56
Hình 6.3 Thiết kế của rest api ……… 58
Hình 6.4 So sánh giữa virtual DOM và real DOM ……… 60
Hình 7.1 Sơ đồ Use Case ……….65
Hình 7.2 Sơ đồ lớp ……… 70
Hình 7.3 Màn hình trang Home ……… 81
Hình 7.4 Màn hình trang Notifications ………82
Hình 7.5 Màn hình trang Profiles ……….83
Hình 7.6 Màn hình tạo đơn hàng ……….84
Hình 7.7 Màn hình tạo đơn hàng chi tiết ……….85
Hình 7.8 Màn hình tạo đơn hàng chi tiết ……….86
Hình 7.9 Màn hình tạo đơn hàng chi tiết ……….87
Hình 7.10 Màn hình xem danh danh sách đơn hàng ………88
Hình 7.11 Màn hình xem đơn hàng chi tiết ……….89
Hình 7.12 Màn hình xem đơn hàng chi tiết ……….90
Hình 7.13 Màn hình cập nhật thông tin người dùng ………91
Hình 7.14 Màn hình danh sách nhân viên ………92
Trang 1311
Hình 7.15 Màn hình tạo nhân viên ……… 93
Hình 7.16 Màn hình danh sách khách hàng ……….93
Hình 7.17 Màn hình tạo khách hàng ………94
Hình 7.18 Màn hình dach sách loại dịch vụ vận chuyển ……….94
Hình 7.19 Màn hình tạo loại dịch vụ vận chuyển ………95
Hình 7.20 Màn hình danh sách giao hàng liên tỉnh ……….95
Hình 7.21 Màn hình tạo giao hàng liên tỉnh ………96
Hình 7.22 Màn hình danh sách đơn hàng ………97
Hình 7.23 Màn hình tạo đơn hàng ……… 98
Hình 7.24 Màn hình danh sách đơn hàng nội thành ………98
Hình 7.25 Màn hình cập nhật giao hàng nội thành ……… 99
Trang 1412
DANH MỤC BẢNG
Bảng 7.1 Danh sách các Actor ……….66
Bảng 7.2 Danh sách một số Use Case chính ………66
Bảng 7.3 Đặc tả Use Case tạo transport type ……… 67
Bảng 7.4 Đặc tả Use Case tạo long ship ……… 68
Bảng 7.5 Đặc tả Use Case tạo đơn hàng ……… 69
Bảng 7.6 Thành phần cơ sở dữ liệu Customer ……….71
Bảng 7.7 Thành phần cơ sở dữ liệu CustomerCredit ……… 71
Bảng 7.8 Thành phần cơ sở dữ liệu UserAuthenticate ……….72
Bảng 7.9 Thành phần cơ sở dữ liệu UserFCMToken ……… 72
Bảng 7.10 Thành phần cơ sở dữ liệu Employee ……… 73
Bảng 7.11 Thành phần cơ sở dữ liệu OrderInfo ……… 74
Bảng 7.12 Thành phần cơ sở dữ liệu OrderPay ……… 75
Bảng 7.13 Thành phần cơ sở dữ liệu OrderShortShip ……….76
Bảng 7.14 Thành phần cơ sở dữ liệu OrderLongShip ……….77
Bảng 7.15 Thành phần cơ sở dữ liệu LongShip ……… 78
Bảng 7.16 Thành phần cơ sở dữ liệu OrderWorkflowData ……….79
Bảng 7.17 Thành phần cơ sở dữ liệu TransportType ……… 80
Bảng 7.18 Thành phần cơ sở dữ liệu LongShipWorkflowData ……… 80
Trang 15ĐỀ CƯƠNG CHI TIẾT KHÓA LUẬN TỐT NGHIỆP
Tên đề tài: Ứng dụng công nghệ Zeebe, xây dựng ứng dụng quản lí sự kiện chuỗi cung ứng
Cán bộ hướng dẫn: Ths Đỗ Thị Thanh Tuyền PGS.TS Vũ Đức Lung
Thời gian thực hiện: Từ ngày 01/09/2020 đến ngày 27/12/2020
Sinh viên thực hiện:
1 Bùi Gia Hòa: 16520422
- Nhân viên: Được công ty tuyển dụng để thực hiện các công việc nhập liệu, đóng gói, vận chuyển hàng lên/ xuống xe, giao hàng tận nơi cho khách hàng
- Chủ nhà xe: Giám sát tổng thể thông tin của hệ thống, trích xuất báo cáo thông kê
Trang 1614
Phương pháp thực hiện:
- Phân tích đề tài
- Tìm hiểu các dịch vụ vận chuyển hàng hóa đang có mặt trên thị trường
- Mô hình hóa sơ đồ hệ thống tổng quát
- Lên kế hoạch phát triển sản phẩm và đặt ra mục tiêu cho từng giai đoạn
- Kiểm thử và hoàn thiện
Kết quả mong đợi:
- Hoàn thiện một ứng dụng với đầy đủ các chức năng đã thiết kế, giao
diện thân thiện, mang lại trải nghiệm tốt nhất cho người dùng Triển khai
thành công website và ứng dụng mobile quản lý tình trạng đơn hàng với
độ chính xác cao
Kế hoạch thực hiện: (thời gian thực hiện trong 17 tuần)
công
Phase 1: Tìm hiểu và xây dựng prototype cho dịch vụ vận
chuyển hàng hóa
7 tuần (01/09/2020 – 18/10/2020)
1
Sprint 1: Tìm hiểu về các hoạt động cơ bản
của vận chuyển hàng hóa:
1.1
- Các yêu cầu cơ bản của một hệ thống vận
chuyển hàng hóa?
Tuần 1 – 2 (01/09/2020 -14/09/2020)
Trang 1715
2.1 - Tìm hiểu quy trình nghiệp vụ vận chuyển hàng hóa
theo các tiêu chuẩn quốc tế
Tuần 3 - 4
(13/09/2020 26/09/2020)
-Bình
2.2
- Tìm hiểu các ứng dụng vận chuyển hàng hóa như
Grab, Vnpost, Viettel Post, Giaohangnhanh Hòa
- Tìm hiểu cách tính giá cước nội thành, liên tỉnh
- Tìm hiểu các thông tin mà đơn hàng cần có
- Phân tích các usecase cơ bản
Tuần 5 (27/09/2020 - 3/10/2020)
Hòa
3.1.2
- Tìm hiểu các công cụ hỗ trợ quá trình nhận hàng
- Tìm hiểu các công cụ hỗ trợ tính giá cước vận
- Xây dựng API bằng Spring Boot
- Xây dựng các workflow bằng công cụ của
Zeebe
- Xây dựng front-end (cơ bản)
Tuần 8 - 9 (18/10/2020 - 31/10/2020)
Cả nhóm
5 Sprint 5: Xây dựng frontend web bằng reactJS và mobile app bằng react native
Trang 1816
5.1
- Xây dựng UI cho các trang
- Hiển thị dữ liệu lấy từ API
Tuần 10 - 12 (1/11/2020 - 21/11/2020
Cả nhóm
7 Sprint 7: Vận hành và kiểm thử
7.1 - Thực hiện công việc kiểm thử sản phẩm
Tuần 15 - 16 (6/12/2020 - 19/12/2020)
Cả nhóm
7.2 - Sửa lỗi trong quá trình chạy trước khi deploy
7.3 - Đóng gói sản phẩm và chuẩn bị các thông tin cần thiết cho buổi báo cáo
Tuần 17 (20/12/2020 - 27/12/2020)
Trang 1917
MỞ ĐẦU
Lý do chọn đề tài:
Khi thị trường toàn cầu phát triển với các tiến bộ công nghệ, đặc biệt là việc
mở cửa thị trường ở các nước đang và chậm phát triển, logistic được các nhà quản
lý coi như là công cụ, một phương tiện liên kết các lĩnh vực khác nhau của chiến lược doanh nghiệp Logistic tạo ra sự hữu dụng về thời gian và địa điểm cho các hoạt động của doanh nghiệp Phát triển dịch vụ logistic một cách hiệu quả sẽ góp phần tăng năng lực cạnh tranh của doanh nghiệp và nền kinh tế quốc gia
Là công cụ liên kết các hoạt động trong chuỗi giá trị toàn cầu (GVC-Global Value Chain) như cung cấp, sản xuất, lưu thông phân phối, mở rộng thị trường cho các hoạt động kinh tế Khi thị trường toàn cầu phát triển với các tiến bộ công
nghệ,đặc biệt là việc mở cửa thị trường ở các nước đang và chậm phát triển, logistic được các nhà quản lý coi như là công cụ, một phương tiện liên kết các lĩnh vực khác nhau của chiến lược doanh nghiệp Logistics tạo ra sự hữu dụng về thời gian và địa điểm cho các hoạt động của doanh nghiệp Thế giới ngày nay được nhìn nhận như các nền kinh tế liên kết, trong đó các doanh nghiệp mở rộng biên giới quốc gia và khái niệm quốc gia về thương mại chỉ đứng hàng thứ 2 so với hoạt động của các doanh nghiệp, ví dụ như thị trường tam giác bao gồm 3 khu vực địa lý: Nhật, Mỹ-Canada và EU Trong thị trường tam giác này, các công ty trở nên quan trọng hơn quốc gia vì quyền lực kinh tế của họ đã vượt quá biên giới quốc gia, quốc tịch của công ty đã trở nên mờ nhạt Ví dụ như hoạt động của Toyota hiện nay, mặc dù phần lớn cổ đông của Toyota là người Nhật và thị trường quan trọng nhất của Toyota là
Mỹ nhưng phần lớn xe Toyota bán tại Mỹ được sản xuất tại nhà máy của Mỹ thuộc
sở hữu của Toyota Như vậy, quốc tịch của Toyota đã bị mờ đi nhưng đối với thị trường Mỹ thì rõ ràng Toyota là nhà sản xuất một số loại xe ô tô và xe tải có chất lượng cao
Logistics có vai trò quan trọng trong việc tối ưu hóa chu trình lưu chuyển của sản xuất kinh doanh từ khâu đầu vào nguyên vật liệu,phụ kiện, … tới sản phẩm cuối cùng đến tay khách hàng sử dụng Từ thập niên 70 của thế kỷ XX, liên tiếp các cuộc khủng hoảng năng lượng buộc các doanh nghiệp phải quan tâm tới chi phí, đặc biệt
là chi phí vận chuyển Trong nhiều giai đoạn, lãi suất ngân hàng cũng cao khiến các doanh nghiệp có nhận thức sâu sắc hơn về vốn, vì vốn bị đọng lại do việc duy trì quá nhiều hàng tồn kho Chính trong giai đoạn này, cách thức tối ưu hóa quá trình sản xuất, lưu kho, vận chuyển hàng hóa được đặt lên hàng đầu Và với sự trợ giúp của công nghệ thông tin, logistics chính là một công cụ đắc lực để thực hiện điều này Logistics hỗ trợ nhà quản lý ra quyết định chính xác trong hoạt động sản xuất kinh doanh : Trong quá trình sản xuất kinh doanh, nhà quản lý phải giải quyết nhiều bài toán hóc búa về nguồn nguyên liệu cung ứng, số lượng và thời điểm hiệu quả để
bổ sung nguồn nguyên liệu, phương tiện và hành trình vận tải, địa điểm, khi bãi chứa thành phẩm,bán thành phẩm,… Để giải quyết những vấn đề này một cách có hiệu quả không thể thiếu vai trò của logistics vì logistics cho phép nhà quản lý kiểm
Trang 20ở mức tối thiểu Sự phát triển mạnh mẽ của tin học cho phép kết hợp chặt chẽ quá trình cung ứng, sản xuất, lưu kho hàng hóa, tiêu thụ với vận tải giao nhận, làm cho
cả quá trình này trở nên hiệu quả hơn, nhanh chóng hơn, nhưng đồng thời cũng phức tạp hơn
Hiện nay, trên thị trường có nhiều phần quản lí vận chuyển trong logistic phát triển mạnh mẽ Tuy vậy, đa số phần mềm còn gặp nhiều khó khăn trong việc
hỗ trợ nhu cầu của khách hàng, đơn vị vận chuyển và người quản lí Tụi em mong muốn khi thực hiện đề tài này sẽ đóng góp một phần nhỏ trong việc tạo ra ứng dụng mang đến trải nghiệm tốt nhất cho người dùng
Trang 211
TÓM TẮT KHÓA LUẬN
- Tổng quan đề tài: đặt vấn đề, lý do chọn đề tài, mục tiêu và phạm vi tiếp cận
đề tài
- Tìm hiểu thực trạng, thị trường, khả năng phát triển
- Nghiên cứu các công nghệ, cấu trúc, cơ chế hoạt động của Zeebe và các công nghệ sẽ sử dụng trong đồ án như: goLang, reactJS, react native
- Tim hiểu về các ứng dụng quản lí sự kiện chuỗi cung ứng phổ biến trên thị trường
- Tìm hiểu các cách để xây dựng ứng dụng quản lí sự kiện chuỗi cung ứng
- Thiết kế hệ thống vận chuyển hàng hóa ứng dụng công cụ quản lí quy trình nghiệp
vụ Zeebe
- Trình bày kết luận và hướng phát triển đồ án
Trang 22-Xây dựng ứng dụng quản lý công việc vận chuyển hàng hóa bao gồm web
và mobile có tích hợp Zeebe để quản lí tình trạng đơn hàng tốt hơn và giúp tăng độ chịu tải của ứng dụng khi xử lí nhiều đơn hàng
1.1.2 Phạm vi:
-Khách hàng: Học sinh, sinh viên, nhân viên văn phòng, người dùng độ tuổi
từ 18-60 biết sử dụng điện thoại di động có nhu cầu vận chuyển hàng hóa nội thành hay liên tỉnh
-Nhân viên: Được công ty tuyển dụng để thực hiện các công việc nhập liệu, đóng gói, vận chuyển hàng lên/ xuống xe, giao hàng tận nơi cho khách hàng
-Chủ nhà xe: Giám sát tổng thể thông tin của hệ thống, trích xuất báo cáo thông kê
1.2 Nội dung thục hiện:
Trang 233
Chương 2 Zeebe và các sản phẩm tương tự khác trên thị
trường 2.1 Zeebe là gì?
Zeebe là một công cụ thực hiện quy trình nghiệp vụ và điều phối các nghiệp
vụ đó đến microservice
Khi nói đến"quy trình nghiệp vụ", nó có nghĩa là "một chuỗi các nhiệm vụ cho phép chúng ta đạt được một số mục tiêu." “Quy trình nghiệp vụ” có thể được sử dụng đồng nghĩa với “quy trình kinh doanh” hoặc “quy trình”
Trong quy trình nghiệp vụ được điều phối bởi Zeebe, mỗi tác vụ thường được thực hiện bởi một microservice khác nhau
2.2 Zeebe dành cho ai, hoàn cảnh nào?
Các quy trình nghiệp vụ của một công ty hầu như luôn sử dụng nhiều hơn một microservice Ví dụ: trong một công ty thương mại điện tử, quy trình làm việc
“đặt hàng của khách hàng” có thể liên quan đến dịch vụ vi mô thanh toán, dịch vụ vi
mô hàng tồn kho, dịch vụ vi mô vận chuyển,
Hình 2.1 Mô hình quy trình làm việc “đặt hàng của khách hàng”
Các quy trình công việc yêu cầu nhiều microservice này là động lực thúc đẩy doanh thu cốt lõi của công ty, nhưng chúng hiếm khi được mô hình hóa (modeled) và giám sát (monitored); thông thường, luồng sự kiện thông qua các dịch vụ nhỏ khác nhau chỉ được thể hiện ngầm trong code
Trang 244
Vì thế để giải quyết các vấn đề này Zeebe cung cấp cho bạn:
1 Tầm nhìn: quản lí lỗi phát sinh, cho bạn biết trạng thái, số lượng thời gian
chạy trung bình và những lỗi hiện tại của workflow
2 Điều phối các quy trình: dựa trên trạng thái hiện tại của workflow, Zeebe
tạo ra những “câu lệnh” như là sự kiện có thể tiếp nhận bởi một hay nhiều microservice, đảm bảo sự phát triển của workflow dựa trên định nghĩa của nó
3 Quản lí timeout: hay là những lỗi của workflow với khả năng cấu hình lỗi.
Zeebe được thiết kế để quyết các bài toán điều phối các microservice cho các project có quy mô lớn Nó làm được điều đó bởi vì:
1 Khả năng scale theo chiều ngang: không có sự phụ thuộc vào DB bên
ngoài; Zeebe viết dữ liệu trực tiếp vào file hệ thống của cùng một server nơi
mà Zeebe được deployed Zeebe giúp việc phân tán quá trình đơn giản nhằm đảm bảo thông lượng cao
2 Khả năng chịu lỗi: nhờ vào cơ chế sao chép dễ configure, đảm bảo Zeebe
khắc phục lỗi mà không bị mất dữ liệu trong khoảng thời gian ngắn nhất
3 Model tương tác: có nghĩa là những microservice có thể liên kết với Zeebe
nhằm giúp khả năng quản lí cao
4 Visual workflow BPMN 2.0: nhờ đó các nhà đầu tư dù có rảnh về kĩ thuật
hay không đều có thể làm việc với thiết kế workflow
5 Mô hình ứng dụng đa ngôn ngữ của client: giúp có thể xây dựng ứng dụng
khách Zeebe bằng bất kỳ ngôn ngữ lập trình nào mà tổ chức sử dụng để xây dựng các dịch vụ nhỏ
Bảng thống kê các thông tin và tính năng Zeebe:
Trang 25Hơn thế nữa, Họ muốn Camunda còn có thể được sử dụng bởi những lập trình viên khác Đó chính là lí do BPM tạo ra REST API giúp build các ứng dụng kết nối với các process engine từ xa.
Trang 266
Camunda BPM có thể dùng như là một process egine riêng lẻ hay nhúng vào các ứng dụng Java khác Khả năng nhúng vào các ứng dụng là một yếu tố quan trọng khi cân nhắc tới thiết kế kiến trúc của Camunda BPM
Hình 2.3 Kiến trúc của Camunda BPM
Process engine API công khai: API hướng dịch vụ cho phép các ứng dụng
của Java tương tác với process engine Những trách nhiệm khác nhau của process engine được chia ra thành những dịch vụ riêng biệt API công khai cung cấp tính năng mẫu truy cập: những thread vào process engine sẽ được định tuyến nhờ vào Interceptor mà được dùng cho việc tạo loại cho thread ví dụ như là thanh toán
BPMN 2.0 core engine: đây là phần cốt lõi của process engine Nó cung cấp
một engine nhẹ cho cấu trúc biểu đồ (máy ảo chạy chương trình), BPMN 2.0 parser chuyển đổi file BPMN 2.0 XML thành một đối tượng trong Java và một chuỗi hành
vi thực thi của BPMN (cung cấp cho BPMN những thứ như là cổng giao tiếp hay tác vụ dịch vụ)
Job executor: chịu trách nhiệm cho xử lí công việc bất đồng bộ như là hẹn
giờ, hoặc là chạy bất đồng bộ trong quá trình diễn ra
Trang 277
Persistence layer: process engine cung cấp nó chịu trách nhiệm cung cấp
trạng thái cho cở sở dữ liệu quan hệ Nhà phát triển sử dụng MyBatis cung cấp thông tin engine cho các đối tượng liên quan
Hình 2.4 So sánh giữa Camunda BPM và Zeebe
2.3.2 Google cloud composer
Google cloud composer là một công cụ quản lí quy trình nghiệp vụ được xây dựng dựa trên Apache Airflow Lập trình viên sử dụng Cloud Composer để lên phân quyền, lên kế hoạch và quản lí phát triển phần mềm
Đường dẫn của cloud composer được sắp xếp như những biểu đồ (DAG) nhằm cung cấp file Python và giảm bớt những phiền toái trao quyền và quản lí quy trình nghiệp vụ
Là một phần của Google Cloud Platform, Cloud Composer tương tác với các công cụ như là Big Query, Data Flow, Dataproc
Google Cloud Composer giúp thiết lập môi trường một cách nhanh chóng và hiệu quả, giúp dễ dàng tương tác với các thư viện được yêu cầu của Python Việc deploy ứng dụng khá là dễ dàng nhờ tính năng kéo thả Quy trình nghiệp vụ thì sắp xếp hợp lí cho người sử dụng Vì Cloud Composer là phần mềm mã nguồn mở nên cho phép thường xuyên cập nhật và nâng cấp phần mềm của người sử dụng
Trang 288
Hình 2.4 Kiến trúc của google cloud composer
Cấu tạo của Tenant Project:
Nhằm đảm bảo danh tính và quản lí tốt vấn đề truy cập, bảo mật Cloud Composer deploy
Cloud SQL và App Engine ở Tenant Project
Cloud SQL:
Nó lưu trữ dữ liệu về AirFlow Để bảo vệ đường truyền và thông tin quy trình nghiệp vụ, Cloud Composer giới hạn quyền truy cập cơ sở dữ liệu ở mức mặc định, hay acount service đã được tùy chỉnh để tạo ra môi trường Cloud Composer lưu một bản sao dữ liệu Airflow hàng ngày để giảm thiểu khả năng dữ liệu bị mất
Service account tạo ra môi trường Cloud Composer là tài khoản duy nhất được truy cập cơ sở dữ liệu Cloud SQL
App engine:
Trang 299
App engine quản lí Airflow web server Mặc định, Airflow web server tương tác với Identity Aware Proxy (IAP) Cloud Composer giấu đi thông tin chi tiết của IAP và cho phép người dùng sử dụng chính sách IAM
Cấu tạo của Customer Project:
Cloud Composer deploy Cloud Storage, Google Kubernetes Engine, Cloud Logging, và Cloud Monitoring trong customer project
Cloud Storage:
Cung cấp nơi lưu trữ dữ liệu cho DAG, log và dữ liệu phụ thuộc Để depoly quy trình nghiệp vụ, chúng ta sao chép những file này vào bucket Cloud Composer sẽ phụ trách đồng bộ hóa DAG giữa các worker với nhau, và web server Với Cloud Storage, chúng ta có thể lưu trữ dữ liệu, log mà không cần quan tâm tới kích thước tối đa và có đầu đủ quyền truy cập tới dữ liệu
Google Kubernetes Engine:
1 Mặc định, Cloud Composer deploy những thành phần chính như trình quản lí Airflow, worker node, và CeleryExecutor Để đảm bảo độ scale và tính bảo mật, Cloud Composer còn hỗ trợ VPC-native cluser sử dụng Alias IPS
2 Redis, message broker cho CeleryExecutor, chạy như là một ứng dụng
StatefulSet nhờ đó tin nhắn vẫn được duy trì đối với tất cả container kể cả khi nó khởi động lại
3 Chạy trình sắp xếp và worker trên GKE giúp chúng ta có thể sử dụng
KubernetesPodOperator để chạy bất kì khối lượng công việc container Mặc định, Cloud Composer tự động cập nhật và nâng cấp để bảo vệ nhóm GKE khỏi các vấn đề về bảo mật
Trang 3010
2.3.1 Apache Kafka – chung 1 phần ý tưởng 2.3.1.1 Giới thiệu
Kafka là hệ thống message pub/sub phân tán (distributed messaging system)
Bên pulbic dữ liệu được gọi là producer, bên subscribe nhận dữ liệu theo topic được gọi là consumer
Kafka có khả năng truyền một lượng lớn message theo thời gian thực, trong trường hợp bên nhận chưa nhận message vẫn được lưu trữ sao lưu trên một hàng đợi và cả trên ổ đĩa bảo đảm an toàn Đồng thời nó cũng được replicate trong cluster giúp phòng tránh mất dữ liệu
Hình 2.5 Kiến trúc của apache kafka
2.3.1.2 Các thành phần cơ bản của Kafka
Kafka có thể hiểu là một hệ thống logging để lưu lại các trạng thái của hệ
thống đề phòng tránh mất thông tin
Định nghĩa trên được giải thích bằng các khái niệm sau:
Trang 3111
PRODUCER: Kafka lưu, phân loại message theo topic, sử dụng producer để
publish message vào các topic Dữ liệu được gửi đển partition của topic lưu trữ trên Broker
CONSUMER: Kafka sử dụng consumer để subscribe vào topic, các
consumer được định danh bằng các group name Nhiều consumer có thể cùng đọc một topic
TOPIC: Dữ liệu truyền trong Kafka theo topic, khi cần truyền dữ liệu cho
các ứng dụng khác nhau thì sẽ tạo ra cá topic khác nhau
PARTITION: Đây là nơi dữ liệu cho một topic được lưu trữ Một topic có
thể có một hay nhiều partition Trên mỗi partition thì dữ liệu lưu trữ cố định và được gán cho một ID gọi là offset Trong một Kafka cluster thì một partition có thể replicate (sao chép) ra nhiều bản Trong đó có một bản leader chịu trách nhiệm đọc ghi dữ liệu và các bản còn lại gọi là follower Khi bản leader bị lỗi thì sẽ có một bản follower lên làm leader thay thế Nếu muốn dùng nhiều consumer đọc song song dữ liệu của một topic thì topic đó cần phải có nhiều partition
BROKER: Kafka cluster là một set các server, mỗi một set này được gọi là
1 broker
ZOOKEEPER: được dùng để quản lý và bố trí các broker.
Trang 3212
Hình 2.6 Các thành phần cơ bản của Kafka
2.3.1.3 Tại sao nên sử dụng Apache Kafka?
Kafka là dự án opensoure, đã được đóng gói hoàn chỉnh, khả năng chịu lỗi cao, hiệu năng rất tốt và dễ dàng mở rộng mà không cần dừng hệ thống
Kafka thật sự đáng tin cậy, có khả năng lưu trữ lượng dữ liệu lớn nên nó đang dần được thay thế cho hệ thống message truyền thống
Một vài use case cho kafka:
Sử dụng như một hệ thống message queue thay thế cho ActiveMQ hay RabbitMQ
Website Activity Monitoring: theo dõi hoạt động của website
Stream Processing: Kafka là một hệ thống rất thích hợp cho việc xử lý dòng dữ liệu trong thời gian thực Khi dữ liệu của một topic được thêm mới ngay lập tức được ghi vào hệ thống và truyền đến cho bên nhận
Ngoài ra Kafka còn là một hệ thống có đặc tính durability dữ liệu có thể
được lưu trữ an toàn cho đến khi bên nhận sẵn sàng nhận nó
Log Aggregation: tổng hợp log
Metrics Collection: thu thập dữ liệu, tracking hành động người dùng như các thông số như page view, search action của user sẽ được publish vào một topic và sẽ được xử lý sau
Trang 3313
Event-Sourcing: Lưu lại trạng thái của hệ thống để có thể tái hiện
trong trường hợp system bị down
2.4 Workflow engine là gì?
2.4.1 Giới thiệu
Quy trình nghiệp vụ được sử dụng trong nhiều trường hợp cho quá trình xử lí
tự động và CI/CD để sắp xếp hệ thống quản lí ở các cửa hàng online/offline hay là đặt một cuốc taxi Chúng ta sẽ tìm thấy rất nhiều giải pháp từ các dự án nhỏ trên github đến các hệ thống của doanh nghiệp
Có vô số loại để thực thi: những framework có thể được gắn vào hệ thống của bạn, những giải pháp độc lập, công cụ quản lí quy trình nghiệp vụ mà nó đang được sử dụng trong các hệ thống phức tạp như là một phần của tính năng và ,,,,
Đây là danh sách của công cụ quản lí quy trình nghiệp vụ: Jenkins, Gitlab Pipelines, Cadence, Airflow, Conductor,…
2.4.2 Các thuật ngữ cơ bản của workflow engine
Trước khi tìm hiểu sâu thêm, chúng ta cần phải hiểu những thuật ngữ: quy trình nghiệp vụ, quản lí trạng thái, công cụ quản lí quy trình nghiệp vụ
Dựa vào trang web Wikipedia, nó định nghĩa rằng:
Quy trình nghiệp vụ (workflow): bao gồm một mẫu các hành động được
điều phối và có tính chất lặp đi lặp lại Mẫu các hảnh động này được khởi tổ chức
hệ thống của nguồn mà chuyển đổi tài liệu, cung cấp dịch vụ, hay xử lí thông tin
Quản lí trạng thái (state machine): là mô hính toán học của máy tính Nó
là một định nghĩa trừu tượng theo đó một machine sẽ có những trạng thái khác nhau, nhưng trong một khoảng thời gian nhất định để thực hiện các tác vụ cần thiết
Công cụ thực hiện quy trình nghiệp vụ (workflow engine): điều phối và
vận hành các trạng thái của hoạt động trong quy trình nghiệp vụ như là xử lí và
Trang 3414
chấp thuận đơn xin cho vay, và quyết định hoạt động mới nào sẽ được thực thi tiếp dựa vào quy trình nghiệp vụ
2.4.3 Concept của 1 workflow engine
Hình 2.7 Kiến trúc cơ bản của workflow engine
Quản lí quy trình nghiệp vụ gồm có 6 thành phần chính:
Nơi lập kế hoạch:
Đây là phần chính của quản lí quy trình nghiệp vụ Nó lên lịch cho việc chạy tác vụ, biết về định nghĩa của luồng, quản lí kết quả của từng tác vụ Nơi lập kế hoạch được kích họat bởi những sữ kiện như là hẹn giờ, API
Nơi chứa dữ liệu:
Là nơi chứa dự liệu mà nơi lập kế hoạch cần đề điều phối các phiên chạy Phụ thuộc vào đối tượng được thực thi, nơi chứa dữ liệu có thể nằm trong cấu trúc
bộ nhớ hay là cơ sở dữ liệu
Trang 3515
Thành phần chịu trách nhiệm chạy các tác vụ và cung cấp kết quả từ tác vụ được thực thi đó Nó có thể là những thread độc lập trong ứng dụng của chúng ta, container, hay là máy ảo
Flow repository:
Nơi mà định nghĩa được chửa và tùy thuộc vào từng thực thi khác nhau mà
vị trí của nó sẽ khác nhau và cung cấp thêm nhiều tính năng ngoài việc lưu trữ các định nghĩa Dòng được hiểu một cách khải quát là mô tả của quy trỉnh nghiệp vụ
Shared context:
Ngay khi quy trình nghiệp vụ của chúng ta trở nên phức tạp ta cần chuyển những ngữ cảnh từ tác vụ này sang tác vụ khác ngay lập tức Thành phần này chịu trách nhiệm làm công việc đó
2.4.1 Ích lợi khi sử dụng workflow engine
1 Hỗ trợ quy trình nghiệp vụ:
Sự giới thiệu về các thành phần của quản lí quy trình nghiệp vụ vào trong cơ
sở hạ tầng công nghệ thông tin giúp các doanh nghiệp hợp tác và cung cấp những quy trình nghiệp vụ kinh doanh
2 Qúa trình được quan sát một cách dễ dàng:
Việc quá trình diễn và trạng thái quá trình đó được hiểu là một chuyện hết sức quan trọng Tích hợp quản lí quy trình nghiệp vụ giúp nhân viên có thể thấy được trang thái của quy trình nghiệp vụ, đang chạy tới tác vụ nào và ai đang làm tác
vụ đó
3 Nâng cao hiệu suất:
Việc đưa quản lí quy trình nghiệp vụ vào hệ thống giúp các công ty đưa ra những quyết định nhanh hơn Trong thực tế, sẽ không còn hàng đống giấy tờ được chuyển qua lại giữa các bộ phận với nhau Điều đó dẫn tới giảm thời gian cho quản
lí và nhân viên phải theo dõi các hoạt động này
Trang 3616
4 Quản lí quy trình nghiệp vụ phù hợp cho các doanh nghiệp:
+ Mất tài liệu trong quy trình nghiệp vụ thường ngày
+ Giam thiểu thời gian quản lí và hợp tác và giành nó cho phát triển công ty + Tăng sự rõ ràng và hiệu suất của quản lí
Trang 37và Camunda đã quyết định rằng đây là một hướng đi đúng đắn của mình
Camunda thấy một lượng lớn quan tâm của các lập trình viên đối với Zeebe ngay lập tức, đặc biệt là từ các tổ chức lớn hơn đang thiết lập kiến trúc dựa trên các microservice
Vào năm 2018, một bản rework toàn bộ kiến trúc của Zeebe đã xảy ra, khi chưa có khả năng phục hồi và khả năng chịu lỗi (là các vấn đề bắt buộc đối với một công nghệ như thế này) Bản sửa lỗi này cũng chính do nhu cầu của khách hàng và cũng là một bài học quý giá cho Zeebe và Camunda
Vào năm 2020, phiên bản chính thức dành cho production đã ra đời sau 2 năm phát triển
3.2 Zeebe – Phiên bản production ready
Kể từ Zeebe 0.20.0, nhãn “developer preview” đã được gở ra khỏi Zeebe Điều đó làm cho Zeebe 0.20.0 trở thành sản phẩm “production-ready” đầu tiên của Zeebe
“Production-ready” là một định nghĩa mà Zeebe đã tự đưa ra Điều đó có nghĩa là Zeebe đáp ứng các yêu cầu cơ bản nhất của về sản phẩm:
Hỗ trợ các kí hiệu BMPN cần thiết cho hầu hết các usecase của quản lý microservice
Có thể deploy thành một nhóm trên Kubernetes và scale theo chiều ngang để đảm bảo yêu cầu về thông lượng
Khả năng chịu lỗi tốt: có nghĩa là khắc phục được sự cố mất dữ liệu khi một node chạy fail và khả năng khắc phục lỗi đó
Trang 383.3 Roadmap của Zeebe theo từng quý qua các năm
Các cải tiến của Zeebe nhằm đáp ứng nhu cầu của khách hàng cho tới hiện tại:
3.3.1 Qúy 1 năm 2020
Hỗ trợ BMPN:
o Hỗ trợ quản lí lỗi và đang tiếp tục cải tiến
Cải thiện trạng thái RockDB và hiệu suất của snapshot:
o Hỗ trợ nâng cấp RockDB
o Đảm bảo độ ổn định của public API
Hỗ trợ chạy Zeebe trên đám mây:
o Zeebe cung cấp các thống kê cho vận hành trên đám mây và cảnh báo
o Zeebe cung cấp kiểm tra trạng thái hiện tại của bản thân
o Tài liệu hướng dẫn cho nâng cấp Zeebe trong cụm Kubernetes
Độ ổn định và khả năng phục hồi:
o Hỗ trợ độ ổn định của log phân tán và hiệu suất
o Zeebe xóa các dữ liệu không sử dụng một cách đáng tin cậy
o Zeebe broker có thể tắt đi và khởi động lại khi có lỗi
Sự cải tiến workflow engine Zeebe:
o Cải thiện các bước xử lý của workflow engine
o Thêm biểu thức vào thuộc tính kỹ thuật
3.3.2 Quý 4 năm 2019
Hỗ trợ BPMN:
o Các sự kiện lỗi, các sự kiện quá trình phụ, hoạt động gọi (0.22)
Trang 3919
Hỗ trợ thêm cho các use case phổ biến
o Hỗ trợ “await workflow instance result”
o Hỗ trợ thu nhập tin nhắn
Hỗ trợ khả năng mở rộng và độ ổn định của Zeebe:
o Khả năng phân phối log
o Khả năng mở rộng của Zeebe khi chịu lỗi
Nâng cao năng suất của Zeebe:
o Hỗ trợ long - polling cho job worker
o Thực hiện định nghĩa back pressure
Hỗ trợ các phiên bản Java mới nhất
Mở rộng hệ sinh thái của Zeebe
3.3.4 Quý 2 năm 2019
Giúp cho cho Zeebe cluster có thể chạy vĩnh viễn: để đảm bảo Zeebe có thể chạy một cách lâu dài, Zeebe sẽ xóa những dữ liệu không cần thiết cho sự hoạt động của quy trình nghiệp vụ
o Zeebe chỉ giữ lại một vài snapshot trong suốt quá trình chạy, xóa bỏ đi những snapshot cũ
o Xỏa bỏ những log cũ so với snapshot
Đảm bảo Zeebe có khả năng chịu lỗi: để đảm bảo Zeebe sẵn sàng để được sử dụng chính thức, chúng ta cần kiểm tra kĩ khả năng chịu lỗi của Zeebe
o Zeebe cluster có thể khởi động lại hoàn toàn
o Một node trong cluster có thể khởi động lại trong quá trình chạy
Trang 4020
o Cluster có thể tự sửa lỗi từ sự phân mảnh của mạng
o Một node có thể tham gia mặc dù đã mất hết dữ liệu
Cung cấp hướng dẫn để sử dụng Zeebe: để đảm bảo Zeebe có thể vận hành trơn tru bởi người dùng, nhà phát triển đã cải tiến tài liệu hướng dẫn
và thêm nhiều thứ mới
o Tạo ra một hướng dẫn cụ thể để deploy Zeebe
o Cung cấp Zeebe checklist nhằm giúp người sử dụng có thể Zeebe được sử dụng trong sản phẩm của họ
3.3.5 Quý 1 năm 2019
Hỗ trợ BPMN:
o Tin nhắn / hẹn giờ sự kiện bắt đầu
o Tin nhắn / hẹn giờ sự kiện không kết thúc
Khái niệm “payload” để hỗ trợ phạm vi và đồng thời:
o Khai báo biến được lưu trữ trong một phạm vi, để có thể thông báo khi biến trong phạm vi đó thay đổi
Cải tiến nhắn tin lỗi từ hướng người dùng:
o Cải thiện hiển thị và tính chi tiết của lỗi người dùng, nhờ đó đưa ra nhiều thông tin hữu ích giúp dev hiểu và xử lí những trường hợp lỗi
Cơ sở hạ tầng ban đầu thay đổi để cải thiện độ ổn định:
o Đưa ra những thay đổi cần thiết để cải thiện độ ổn định của cluster, cụ thể là các cluster thành viên, nhận biết lỗi và sao chép
Khái niệm “payload” để hỗ trợ phạm vi và đồng thời:
Tách rời việc giải quyết các lỗi khi trạng thái thay đổi