Siêu thị PDFTải ngay đi em, trời tối mất

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
PREMIUM
Số trang
91
Kích thước
3.0 MB
Định dạng
PDF
Lượt xem
1967

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 MICRO￾FRONTENDS ......................................................................................................... 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

Tải ngay đi em, còn do dự, trời tối mất!