Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Phát Triển Phần Mềm Theo Hướng Chia Nhỏ Phần Dịch Vụ Microservices Và Phần Giao Diện Micro Frontends
Nội dung xem thử
Mô tả chi tiết
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
BÙI THANH HOA
PHÁT TRIỂN PHẦN MỀM THEO HƯỚNG CHIA NHỎ PHẦN DỊCH VỤ
(MICROSERVICES) VÀ PHẦN GIAO DIỆN (MICRO-FRONTENDS)
HÀ NỘI - 2021
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
BÙI THANH HOA
PHÁT TRIỂN PHẦN MỀM THEO HƯỚNG CHIA NHỎ PHẦN DỊCH VỤ
(MICROSERVICES) VÀ PHẦN GIAO DIỆN (MICRO-FRONTENDS)
NGÀNH: KỸ THUẬT PHẦN MỀM
CHUYÊN NGÀNH: KỸ THUẬT PHẦN MỀM
MÃ SỐ: 8480103.01
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. TRƯƠNG ANH HOÀNG
HÀ NỘI - 2021
i
LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn thạc sĩ công nghệ thông tin “Phát triển phần mềm
theo hướng chia nhỏ phần dịch vụ (microservices) và phần giao diện (micro-frontends)”
là sản phẩm nghiên cứu của cá nhân tôi, được thực hiện dưới sự hướng dẫn của PGS.TS.
Trương Anh Hoàng. Các nội dung được trình bày trong luận văn là công trình nghiên
cứu của bản thân tôi, hoàn toàn không sao chép từ sản phẩm của người khác. Các nội
dung kiến thức được tổng hợp từ nhiều nguồn tài liệu tham khảo và được trích dẫn rõ
ràng.
Tôi cam kết chịu trách nhiệm cho lời cam đoan của mình.
Hà Nội, tháng 10 năm 2021
Tác giả
Bùi Thanh Hoa
ii
LỜI CẢM ƠN
Trước hết, tôi xin bày tỏ lòng biết ơn chân thành, sâu sắc của mình đến PGS.TS.
Trương Anh Hoàng, người thầy đã hết sức tận tâm hướng dẫn và giúp đỡ tôi rất nhiều
trong suốt quá trình hoàn thành luận văn.
Tôi xin gửi lời cảm ơn tới các thầy cô giáo của khoa công nghệ thông tin, trường
Đại Học Công Nghệ, Đại Học Quốc Gia Hà Nội, các thầy cô đã rất tận tình chỉ bảo,
giúp đỡ và tạo mọi điều kiện để tôi có thể hoàn thành được quá trình học tập, nghiên
cứu trong suốt thời gian qua tại trường.
Cuối cùng, tôi xin được cảm ơn gia đình tôi và bạn bè cùng khóa, những người
đã luôn khích lệ, động viên và giúp đỡ tôi trong thời gian qua.
Hà Nội, tháng 10 năm 2021
Tác giả
Bùi Thanh Hoa
iii
MỤC LỤC
LỜI CAM ĐOAN ......................................................................................................i
LỜI CẢM ƠN...........................................................................................................ii
BẢNG CÁC THUẬT NGỮ VÀ CHỮ VIẾT TẮT ................................................. vi
DANH MỤC HÌNH VẼ, ĐỒ THỊ.......................................................................... vii
DANH MỤC BẢNG BIỂU...................................................................................... ix
MỞ ĐẦU ................................................................................................................... 1
Lý do chọn đề tài ................................................................................................... 1
Mục tiêu nghiên cứu.............................................................................................. 1
Đối tượng và phạm vi nghiên cứu......................................................................... 2
Phương pháp nghiên cứu ...................................................................................... 2
Kết cấu luận văn.................................................................................................... 2
CHƯƠNG 1. PHÁT TRIỂN PHẦN MỀM THEO HƯỚNG MICROSERVICES 4
1.1. Một số hướng kiến trúc phần mềm truyền thống ......................................... 4
1.1.1. Kiến trúc nguyên khối................................................................................. 4
1.1.2. Kiến trúc hướng dịch vụ ............................................................................. 6
1.1.3. ESB và việc tích hợp ứng dụng SOA........................................................... 8
1.2. Sơ lược về kiến trúc microservices................................................................. 9
1.2.1. Kiến trúc microservices là gì?.................................................................... 9
1.2.2. Các mẫu thiết kế microservices................................................................ 12
1.3. Nguyên tắc thiết kế microservices................................................................ 19
1.3.1. Đảm bảo tính đơn nhiệm .......................................................................... 19
1.3.2. Áp dụng phương pháp thiết kế hướng miền............................................... 20
1.3.3. Sử dụng các chuẩn về API........................................................................ 22
Tóm lược chương 1.............................................................................................. 22
CHƯƠNG 2. PHÁT TRIỂN ỨNG DỤNG WEB THEO HƯỚNG MICROFRONTENDS ......................................................................................................... 24
2.1. Sơ lược về một số mô hình phát triển ứng dụng web phổ biến .................. 24
2.1.1. Mô hình web tĩnh...................................................................................... 24
iv
2.1.2. Mô hình web động.................................................................................... 24
2.1.3. Mô hình SPA ............................................................................................ 25
2.2. Kiến trúc micro-frontends............................................................................ 27
2.2.1. Tổng quan về micro-frontends............................................................... 27
2.2.2. Lợi ích của micro-frontends.................................................................. 30
2.3. Cơ chế tích hợp trong micro-frontends....................................................... 30
2.3.1. Tích hợp tại thời điểm xây dựng ............................................................... 30
2.3.2. Tích hợp tại thời điểm thực thi.................................................................. 31
2.3.3. Điều hướng giữa các micro-frontends...................................................... 36
2.4. Giao tiếp giữa các micro-frontends.............................................................. 38
Tóm lược chương 2.............................................................................................. 40
CHƯƠNG 3. XÂY DỰNG ỨNG DỤNG THỬ NGHIỆM THEO HƯỚNG
MICROSERVICES VÀ MICRO-FRONTENDS.................................................. 41
3.1. Giới thiệu hệ thống CEMS........................................................................... 41
3.2. Các chức năng chính của CEMS.................................................................. 41
3.2.1. Sơ đồ phân cấp chức năng........................................................................ 41
3.2.2. Sơ đồ use case tổng quát .......................................................................... 42
3.3. Giải pháp xây dựng hệ thống ....................................................................... 43
3.3.1. Giải pháp triển khai ................................................................................. 43
3.3.2. Lựa chọn công nghệ, công cụ ................................................................... 43
3.4. Giới thiệu tổng quan các công nghệ trong dự án ........................................ 43
3.4.1. Tổng quan về Spring Boot ........................................................................ 44
3.4.2. Tổng quan về Single-SPA......................................................................... 45
3.5. Kiến trúc tổng quan hệ thống ...................................................................... 46
3.5.1. Mô hình hóa các microservices ................................................................ 46
3.5.2. Kiến trúc tổng thể của CEMS ................................................................... 47
3.5.3. Xây dựng mô hình dữ liệu......................................................................... 48
3.6. Thiết kế và cài đặt tầng dịch vụ ................................................................... 50
3.6.1. Kiến trúc cụ thể của một microservice...................................................... 50
v
3.6.2. Xây dựng cổng API .................................................................................. 51
3.6.3. Xây dựng mô hình đăng ký và khám phá dịch vụ ...................................... 53
3.6.4. Quản lý cấu hình tập trung....................................................................... 56
3.6.5. Xây dựng chuẩn giao tiếp API.................................................................. 57
3.6.6. Quản lý logging........................................................................................ 59
3.7. Thiết kế và cài đặt tầng giao diện ................................................................ 62
3.7.1. Mô hình tổng quát tầng giao diện............................................................. 62
3.7.2. Kiến trúc của một micro-frontend............................................................. 63
3.7.3. Quản lý vòng đời các đối tượng trong một micro-frontend ....................... 64
3.7.4. Một số màn hình giao diện mẫu................................................................ 66
3.8. Kiểm thử ứng dụng....................................................................................... 68
3.8.1. Thực hiện kiểm thử đơn vị ........................................................................ 69
3.8.2. Thực hiện kiểm thử tích hợp ..................................................................... 71
3.8.3. Thực hiện kiểm thử giao diện ................................................................... 72
3.9. Triển khai ứng dụng..................................................................................... 73
Tóm lược chương 3.............................................................................................. 74
KẾT LUẬN............................................................................................................. 75
1. Kết quả đạt được......................................................................................... 75
2. Đánh giá ưu nhược điểm và bài học kinh nghiệm ..................................... 75
3. Các tồn tại và hướng phát triển.................................................................. 77
TÀI LIỆU THAM KHẢO...................................................................................... 78
vi
BẢNG CÁC THUẬT NGỮ VÀ CHỮ VIẾT TẮT
STT Từ viết tắt Từ viết đầy đủ Mô tả
1 API Application Programming Interface Giao diện lập trình ứng dụng
2 CI/CD Continuous Integration (CI) and
Continuous Delivery (CD)
Quá trình tích hợp và chuyển
giao liên tục
3 CSS Cascading Style Sheet Một kiểu ngôn ngữ định dạng,
trang trí cho tài liệu HTML
4 Client Client Phía máy khách
5 DDD Domain Driven Design Kỹ thuật thiết kế theo hướng
miền
6 DI Dependency Injection Cơ chế tiêm sự phụ thuộc giữa
các đối tượng
7 DOM Document Object Model Một chuẩn được định nghĩa bởi
tổ chức W3C dùng để quản lý
các đối tượng trong tài liệu
HTML
8 ELK Elasticsearch, Logstash and Kibana Bộ ba công cụ phục vụ cơ chế
ghi log
9 ESB Enterprise Service Bus Một thành phần trung gian để
tích hợp các chương trình, dịch
vụ khác nhau
10 ERP Enterprise Resource Planning Hệ thống hoạch định tài nguyên
cho doanh nghiệp
11 Framework Framework Bộ khung phát triển ứng dụng
12 HTML Hypertext Markup Language Ngôn ngữ đánh dấu siêu văn bản
13 HTTP Hypertext Transfer Protocol Giao thức truyền tải siêu văn bản
14 JSON JavaScript Object Notation Một kiểu dữ liệu mở rộng của
JavaScript
15 MVC Model View Controller Một mẫu thiết kế ứng dụng
16 ORM Object Relational Mapping Một kỹ thuật ánh xạ các đối
tượng lập trình với từng bảng
trong cơ sở dữ liệu quan hệ
17 SOA Service Oriented Architecture Kiến trúc hướng dịch vụ
18 SOAP Simple Object Access Protocol Một giao thức để truy cập dịch
vụ web
19 Server Server Phía máy chủ
20 SPA Single Page Application Kiểu ứng dụng một trang
21 REST Representational State Transfer Một tiêu chuẩn thiết kế các API
sử dụng cho các dịch vụ web
22 URL Uniform Resource Locator Địa chỉ định vị tài nguyên trên
Internet
23 XML Extensible Markup Language Ngôn ngữ đánh dấu mở rộng
vii
DANH MỤC HÌNH VẼ, ĐỒ THỊ
Hình 1.1. Kiến trúc nguyên khối cho ứng dụng web ................................................... 5
Hình 1.2. Mô hình hoạt động của một hệ thống SOA.................................................. 7
Hình 1.3. Mô hình trục tích hợp ESB.......................................................................... 9
Hình 1.4. Hệ thống web bán hàng theo mô hình microservices................................. 10
Hình 1.5. Mô hình cổng API trong hệ thống microservices....................................... 13
Hình 1.6. Mô hình client-side discovery ................................................................... 15
Hình 1.7. Mô hình server-side discovery .................................................................. 16
Hình 1.8. Mô hình dùng riêng cơ sở dữ liệu.............................................................. 17
Hình 1.9. Mô hình dùng chung cơ sở dữ liệu ............................................................ 19
Hình 1.10. Miền nghiệp vụ hệ thống quản lý bán hàng ............................................. 21
Hình 1.11. Tổ chức của một microservice................................................................. 21
Hình 2.1. Mô hình web tĩnh [15]............................................................................... 24
Hình 2.2. Mô hình web động .................................................................................... 25
Hình 2.3. Cơ chế hoạt động của mô hình CSR.......................................................... 26
Hình 2.4. Ba mô hình triển khai web truyền thống.................................................... 28
Hình 2.5. Trang thông tin sản phẩm của một web bán hàng ...................................... 29
Hình 2.6. Ba module riêng biệt của trang danh sách sản phẩm.................................. 29
Hình 2.7. Cấu trúc một trang web checkout-order..................................................... 30
Hình 2.8. Tệp tin cấu hình quản lý gói thư viện trong ứng dụng................................ 31
Hình 2.9. Sử dụng iframe để tích hợp micro-frontends ............................................. 32
Hình 2.10. Tích hợp micro-frontends bằng JavaScript .............................................. 33
Hình 2.11. Tệp tin index.html................................................................................... 35
Hình 2.12. Quản lý cấu hình trong tệp server.config ................................................. 35
Hình 2.13. Điều hướng các micro-frontends sử dụng frontend proxy........................ 36
Hình 2.14. Điều hướng micro-frontends sử dụng app shell ....................................... 37
Hình 2.15. Ví dụ một RouterModule của Angular..................................................... 38
Hình 2.16. Giao tiếp giữa các micro-frontends sử dụng EventEmitter....................... 39
Hình 2.17. Tạo một custom event trong Angular ...................................................... 40
Hình 3.1. Chức năng tổng quát của hệ thống CEMS ................................................. 42
Hình 3.2. Sơ đồ use case tổng quát của hệ thống CEMS ........................................... 42
Hình 3.3. Kiến trúc tổng thể của một ứng dụng single-spa ........................................ 46
Hình 3.4. Phân vùng các hành vi trong hệ thống CEMS............................................ 47
Hình 3.5. Kiến trúc tổng thể hệ thống CEMS............................................................ 48
Hình 3.6. Mô hình cơ sở dữ liệu của CEMS.............................................................. 49
Hình 3.7. Mối quan hệ giữa các lớp thực thể trong module user-service ................... 49
Hình 3.8. Kiến trúc tổng thể của một microservice ................................................... 51
Hình 3.9. Vai trò của cổng API trong CEMS ............................................................ 52
Hình 3.10. Cấu hình Zuul API Gateway ................................................................... 53
Hình 3.11. Cơ chế hoạt động của Eureka Service Registry........................................ 54