Luận Văn Thạc Sĩ Về Phát Triển Phần Mềm Dựa Trên Microservices Tại VNU UET

Luận văn thạc sĩ phân tích vnu uet phát triển phần mềm dựa trên microservices, đánh giá thực trạng, chỉ ra hạn chế, đề xuất giải pháp khả thi cho thực tiễn.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Luận Văn Thạc Sĩ

2015

55
3
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CAM ĐOAN

LỜI CẢM ƠN

MỤC LỤC

0.1. MỞ ĐẦU

0.1.1. Tổng quan về kiến trúc microservices

0.1.2. Kiến trúc monolithic

0.1.3. Kiến trúc microservices

0.1.4. Mẫu thiết kế trong microservices

0.1.5. Lợi ích của microservices

0.1.6. Thực trạng ứng dụng kiến trúc microservices hiện nay

0.1.7. Xây dựng ứng dụng SOML trên microservices

0.1.7.1. Giới thiệu về SOML
0.1.7.2. Các chức năng của SOML
0.1.7.3. Mô hình hoá các microservice trong SOML
0.1.7.4. Xác định các microservice cho SOML
0.1.7.5. Mô hình tổng quan của SOML
0.1.7.6. Kiến trúc hệ thống của SOML
0.1.7.7. Cơ chế kết nối trong SOML
0.1.7.8. Xây dựng cổng API
0.1.7.9. Cấu hình cho máy chủ

0.1.8. Kiểm thử trong microservices

0.1.8.1. Mô hình kiểm thử kim tự tháp Mike Cohn
0.1.8.2. Kiểm thử đơn vị
0.1.8.3. Kiểm thử dịch vụ
0.1.8.4. Kiểm thử đầu cuối
0.1.8.5. Kiểm thử tích hợp

0.1.9. Đánh giá microservices

0.1.9.1. Ưu điểm của microservices
0.1.9.2. Nhược điểm của microservices

TÀI LIỆU THAM KHẢO

DANH MỤC CÁC TỪ VIẾT TẮT

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

1. CHƯƠNG 1: TỔNG QUAN VỀ KIẾN TRÚC MICROSERVICES

1.1. Mở đầu chương 1

1.2. Dịch vụ

1.3. Kiến trúc monolithic

1.4. Kiến trúc microservices

1.5. Mẫu thiết kế trong microservices

Tóm tắt

I. Tổng quan về phát triển phần mềm dựa trên Microservices

Kiến trúc microservices đang trở thành xu hướng trong phát triển phần mềm hiện đại. Nó cho phép các nhà phát triển xây dựng các ứng dụng phức tạp bằng cách chia nhỏ chúng thành các dịch vụ độc lập. Mỗi dịch vụ này có thể được phát triển, triển khai và mở rộng một cách riêng biệt. Điều này không chỉ giúp tăng tính linh hoạt mà còn giảm thiểu rủi ro trong quá trình phát triển.

1.1. Định nghĩa và đặc điểm của Microservices

Microservices là một kiến trúc phần mềm trong đó ứng dụng được chia thành nhiều dịch vụ nhỏ, mỗi dịch vụ thực hiện một chức năng cụ thể. Các dịch vụ này giao tiếp với nhau thông qua các API, cho phép chúng hoạt động độc lập và dễ dàng mở rộng.

1.2. Lợi ích của việc áp dụng Microservices

Việc áp dụng kiến trúc microservices mang lại nhiều lợi ích như khả năng mở rộng linh hoạt, giảm thiểu rủi ro khi triển khai, và tăng cường khả năng tái sử dụng mã nguồn. Điều này giúp các tổ chức phát triển phần mềm nhanh chóng và hiệu quả hơn.

II. Thách thức trong phát triển phần mềm dựa trên Microservices

Mặc dù microservices mang lại nhiều lợi ích, nhưng cũng không thiếu những thách thức. Việc quản lý nhiều dịch vụ nhỏ có thể dẫn đến sự phức tạp trong việc triển khai và bảo trì. Ngoài ra, việc đảm bảo tính nhất quán dữ liệu giữa các dịch vụ cũng là một vấn đề cần được giải quyết.

2.1. Quản lý và triển khai dịch vụ

Quản lý nhiều microservices đòi hỏi một hệ thống giám sát và quản lý hiệu quả. Các công cụ như Kubernetes và Docker thường được sử dụng để tự động hóa việc triển khai và quản lý các dịch vụ này.

2.2. Tính nhất quán dữ liệu trong Microservices

Khi các dịch vụ hoạt động độc lập, việc đảm bảo tính nhất quán dữ liệu trở nên khó khăn. Các phương pháp như Event Sourcing và CQRS có thể được áp dụng để giải quyết vấn đề này.

III. Phương pháp phát triển phần mềm dựa trên Microservices

Để phát triển phần mềm hiệu quả dựa trên microservices, cần có một quy trình rõ ràng. Các phương pháp Agile và DevOps thường được áp dụng để tăng cường sự hợp tác giữa các nhóm phát triển và vận hành.

3.1. Quy trình phát triển Agile trong Microservices

Phát triển Agile giúp các nhóm phát triển linh hoạt hơn trong việc thay đổi yêu cầu và cải tiến sản phẩm. Điều này rất quan trọng trong môi trường microservices, nơi mà các dịch vụ có thể cần được điều chỉnh thường xuyên.

3.2. DevOps và Microservices

DevOps là một phương pháp giúp tăng cường sự hợp tác giữa phát triển và vận hành. Việc áp dụng DevOps trong microservices giúp tự động hóa quy trình triển khai và giảm thiểu thời gian đưa sản phẩm ra thị trường.

IV. Ứng dụng thực tiễn của Microservices trong phát triển phần mềm

Nhiều công ty lớn như Netflix, Amazon và eBay đã áp dụng kiến trúc microservices để phát triển các ứng dụng của họ. Việc này không chỉ giúp họ cải thiện hiệu suất mà còn tăng cường khả năng mở rộng và bảo trì.

4.1. Ví dụ về ứng dụng Microservices tại Netflix

Netflix đã sử dụng microservices để phát triển nền tảng phát video của mình. Mỗi dịch vụ trong hệ thống của họ đảm nhiệm một chức năng cụ thể, từ quản lý người dùng đến xử lý video.

4.2. Ứng dụng Microservices trong eCommerce

Các trang thương mại điện tử như Amazon đã áp dụng microservices để quản lý hàng triệu sản phẩm và đơn hàng. Điều này giúp họ cải thiện trải nghiệm người dùng và tăng cường khả năng phục vụ khách hàng.

V. Kết luận và tương lai của Microservices trong phát triển phần mềm

Kiến trúc microservices đang trở thành một phần quan trọng trong phát triển phần mềm hiện đại. Với những lợi ích mà nó mang lại, có thể dự đoán rằng microservices sẽ tiếp tục phát triển và được áp dụng rộng rãi trong tương lai.

5.1. Xu hướng phát triển Microservices trong tương lai

Với sự phát triển của công nghệ đám mây và các công cụ tự động hóa, microservices sẽ ngày càng trở nên phổ biến. Các tổ chức sẽ tiếp tục tìm kiếm cách tối ưu hóa quy trình phát triển và triển khai phần mềm.

5.2. Thách thức và cơ hội trong tương lai

Mặc dù có nhiều cơ hội, nhưng các thách thức như bảo mật và quản lý dịch vụ vẫn cần được giải quyết. Các công ty cần đầu tư vào công nghệ và quy trình để đảm bảo thành công khi áp dụng microservices.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI từ nội dung tài liệu gốc; tài liệu do người dùng đóng góp và được kiểm duyệt trước khi xuất bản. Báo lỗi nội dung.

22/07/2025
Luận văn thạc sĩ vnu uet phát triển phần mềm dựa trên microservices

Trích đoạn nội dung tài liệu

chương 1 trình bày các khái niệm nền tảng của kiến trúc microservices: dịch vụ, kiến trúc monolithic và định nghĩa kiến trúc microservices. Phần tiếp theo trình bày các mẫu thiết kế của kiến trúc microservices. Phần cuối chương trình bày các lợi ích của kiến trúc microservices cũng như thực trạng sử dụng kiến trúc microservices hiện nay. Dịch vụ Dịch vụ trong phần mềm là một thành phần ứng dụng có thể thực hiện một hoặc nhiều chức năng trong hệ thống mà không cần giao diện cho người dùng (1).

Các ứng dụng chạy trên các môi trường khác nhau đều có thể sử dụng dịch vụ để thực hiện một hoặc một vài chức năng trong hệ thống của mình. Dịch vụ phải có khả năng tái sử dụng, thích ứng với các môi trường khác nhau và có thể tự động phát hiện trên toàn hệ thống, đám mây, … Mỗi dịch vụ sẽ thực hiện xử lý các yêu cầu từ phía máy trạm và gửi lại các câu trả lời theo một chuẩn đã quy ước, đồng thời các dịch vụ cũng có thể kết nối đến nhau để cùng thực hiện một vài chức năng của hệ thống hoặc để tổ hợp thành một dịch vụ khác. Một dịch vụ bao gồm ba thành phần là giao diện (interface), các ràng buộc (contract) và cài đặt (implementation) (Hình 1. Các thành phần của dịch vụ Giao diện sẽ định nghĩa các phương thức để nhà cung cấp dịch vụ (service provider) thực hiện các yêu cầu của người dùng dịch vụ (service consumer).

Các ràng buộc sẽ quy định các chuẩn cho phép các nhà cung cấp dịch vụ và người dùng dịch vụ giao tiếp với nhau. Thành phần cài đặt sẽ thực hiện các chức năng của dịch vụ. LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Kiến trúc monolithic Trong phần mềm, kiến trúc monolithic là một kiểu kiến trúc cho phép xây dựng hệ thống thành một khối duy nhất, trong đó bao gồm ba thành phần: giao diện người dùng, xử lý nghiệp vụ logic và phần truy cập dữ liệu (2) (Hình 1.

Các thành phần của kiến trúc Monolithic  Giao diện người dùng: thông qua các thẻ HTML và javascript để giao tiếp giữa người dùng và hệ thống.  Nghiệp vụ logic: thực hiện các nghiệp vụ logic để thực hiện các yêu cầu HTTP đồng thời tổng hợp các thông tin từ cơ sở dữ liệu dưới dạng HTML và javascript để trả về giao diện người dùng.  Dữ liệu truy cập: thực hiện các thao tác để chỉnh sửa, cập nhật cơ sở dữ liệu. Một hệ thống được xây dựng trên kiến trúc monolithic là một hệ thống hoàn toàn khép kín, độc lập với các hệ thống khác và nó chỉ được xây dựng trên một nền tảng duy nhất, do đó hệ thống được xây dựng trên monolithic rất dễ xây dựng, dễ quản lý.

Cũng chính vì vậy mà các hệ thống xây dựng trên kiến trúc monolithic có một nhược điểm rất lớn là nếu có bất kỳ thay đổi nào dù là rất nhỏ trong một trong ba thành phần của hệ thống cũng khiến đội ngũ phát triển phải tạo ra một phiên bản mới cho cả hệ thống. Ví dụ người dùng muốn thay đổi màu sắc của một nút ngoài giao diện người dùng thì cả hệ thống sẽ phải được điều LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 13 chỉnh, tái kiểm thử, tái triển khai trên một phiên bản mới. Điều này khiến cho việc xây dựng và phát triển hệ thống trên monolithic là rất tốn kém và không linh hoạt. Đặc biệt là với các hệ thống lớn việc xây dựng phát triển hệ thống bằng kiểu kiến trúc monolithic sẽ trở lên rất phức tạp.

Chi phí, thời gian dành cho việc xây dựng, phát triển, sửa lỗi và kiểm thử mỗi chức năng sẽ tăng lên theo độ lớn của hệ thống. Mặc dù kiến trúc monolithic còn tồn tại nhiều nhược điểm nhưng nhờ các ưu điểm độc lập, dễ xây dựng và quản lý monolithic đã được sử dụng để xây dựng và phát triển thành các kiểu kiến phúc phần mềm khác rất phổ biến hiện nay như kiến trúc hướng dịch vụ. Microservices cũng là một kiểu kiến trúc được xây dựng và phát triển từ kiến trúc monolithic, mỗi dịch vụ trong kiến trúc microservices đều kế thừa các đặc điểm độc lập của kiến trúc monolithic. Kiến trúc microservices Tư tưởng chia để trị của kiến trúc microservices thực ra đã được đề xuất từ khá lâu trước đây nhưng phải đến tháng 03/2014 (3) Martin Fowler - tác giả của mô hình phát triển ứng dụng Agile và James Lewis đã có một bài giải thích chi tiết và thú vị trên trang web cá nhân về kiến trúc microservices.

Sau đó tháng 07/2014 (4) Stefan Borjse – Giám đốc, đồng sáng lập công ty bán thiết bị Wi-fi Karma đã viết trên blog cá nhân của mình về quá trình xây dựng cửa hàng trực tuyến bán sản phẩm của Karma bằng cách chia nhỏ các ứng dụng thành các phần nhỏ hơn để thực hiện, nhưng ông và các nhân viên của mình đã gặp khó khăn trong khâu kiểm thử, vì việc kiểm thử các dịch vụ nhỏ thì tương đối dễ nhưng khi ghép chúng vào một hệ thống thì lại là một bài toán khó. Tháng 11/2014 (5) Toby Clemson – một nhà phát triển của ThoughtWorks đã có một bài diễn thuyết cách tiếp cận đa lớp để thử lỗi trong các hệ thống xây dựng trên kiến trúc microservices. Tại đây Toby đã đề nghị thử lỗi cho từng microservice một cách độc lập để khắc phục các khó khăn trong khâu kiểm thử của hệ thống xây dựng trên microservices mà Stefan và các đồng nghiệp của ông đã gặp phải. Tất nhiên Toby cũng khuyến cáo việc tất cả các microservice chạy tốt thì không có nghĩa cả hệ thống sẽ chạy tốt.

Vì vậy Toby cũng đề xuất một loạt các phương pháp về cách tích hợp các thành phần, tương tác, thử lỗi đầu cuối để các nhà phát triển phần mềm khắc phục được các khó khăn trong quá trình xây dựng phần mềm dựa trên kiến trúc microservices. Kiến trúc microservices là một kiểu kiến trúc phần mềm dành cho các hệ thống được xây dựng dựa trên các dịch vụ, trong đó các dịch vụ này được chia thành các thành phần nhỏ và hoàn toàn độc lập với nhau, mỗi thành phần nhỏ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 14 này gọi là một microservice. Mỗi microservice chỉ tập trung vào giải quyết một chức năng duy nhất trong hệ thống và giao tiếp với nhau thông qua các API (6). Ví dụ một ứng dụng được xây dựng trên kiến trúc microservices được thể hiện trong Hình 1.

Ứng dụng gồm ba microservie độc lập và giao tiếp với nhau để thực hiện các chức năng của ứng dụng và mỗi microservice đều có một cơ sở dữ liệu riêng và các microservice này giao tiếp với nhau thông qua các API.Ví dụ kiến trúc microservices Mô hình kiến trúc của microservices bao gồm ba thành phần chính: các hạ tầng phát triển (development), các hạ tầng hoạt động (operational) và kho dữ liệu (datastore). Ngoài ra còn có một số thành phần hỗ trợ khác như các công cụ được trang bị (tooling), các công cụ dùng để cấu hình (configuration), định tuyến (routing) và truy tìm phân phối (observability). Các thành phần hỗ trợ này có thể có hoặc không. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.

Mô hình kiến trúc của microservices (7)  Hạ tầng phát triển (development) là các nền tảng được lựa chọn để xây dựng hệ thống như ngôn ngữ lập trình và ứng dụng đóng gói được sử dụng trong hệ thống.  Hạ tầng hoạt động (operations) bao gồm các thành phần cơ sở hạ tầng để triển khai hệ thống như máy chủ, …  Datastore quản lý các công nghệ mà hệ thống sử dụng để lưu trữ cơ sở dữ liệu.  Các thành phần hỗ trợ: sự trang bị (tooling), cấu hình (configuration), khám phá (discovery), định tuyến (routing) và truy tìm, phân phối (observability). Mỗi microservice trong kiến trúc microservices đều có những đặc điểm giống với các dịch vụ trong các hệ thống khác.

Điều khác biệt lớn nhất là phạm vi của microservice, nó được giới hạn trong một chỉ tiêu nhất định mà trong định nghĩa được gọi là “nhỏ”. “Nhỏ” ở đây không phải được tính bởi số lượng dòng code được sử dụng trong mỗi microservice, mà nhỏ ở đây chính là phạm vi để thực hiện mỗi chức năng bất kỳ trong hệ thống - mỗi microservice trong kiến trúc microservices chỉ giải quyết một chức năng duy nhất của hệ thống. Các microservice giao tiếp với nhau thông qua các API. Mỗi API dùng để kết nối các microservice sẽ có hai kiểu kết nối như sau:  Đồng bộ: microservice A sử dụng API kết nối đến microservice B LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 16 bằng cách gửi thông báo và chờ microservice B phản hồi.

 Bất đồng bộ: microservice A gửi thông báo đến microservice B sau đó tiếp tục chạy và sẽ xử lý phản hồi của B sau khi có câu trả lời. Mỗi microservice trong kiến trúc microservices sẽ gọi đến các microservice khác trên API bằng ba cách gọi sau:  REST (Representational State Transfer): các thông báo được gửi qua HTTP để truy vấn, thao tác dữ liệu. Kiểu dữ liệu sau truy vấn sẽ được trả về dạng XML, JSON, JSONb  RPC (Remote Procedure Call): cách gọi này giống với mô hình Client- Server trong đó microservice gửi yêu cầu kết nối sẽ đảm nhiệm vai trò của Client và microservice nhận kết nối sẽ là Server.  SOAP (Simple Object Access Protocol): các microservice truyền thông điệp cho nhau dưới dạng XML.

Đối với các microservice dành cho người dùng đầu cuối sẽ không được kết nối trực tiếp vào các microservice khác mà chúng sẽ giao tiếp với nhau thông qua một cổng API. Cổng API này có nhiệm vụ phân tải, lưu trữ tạm thời và kiểm tra quyền truy cập của người dùng đầu cuối. Mỗi microservice trong kiến trúc microservices có thể có một cơ sở dữ liệu riêng và chúng có thể có cách lưu trữ dữ liệu khác nhau. Đây là một điểm mới trong kiến trúc microservices, khác với cách lưu trữ dữ liệu tập trung của các kiến trúc khác.

Mẫu thiết kế trong microservices Microservices là kiểu kiến trúc được hình thành từ các dịch vụ nên khi sử dụng kiểu kiến trúc này ta phải lựa chọn phương pháp để các máy trạm có thể kết nối với các microservice và cơ chế để các microservice phát hiện và giao tiếp với nhau trên mạng. Ứng với mỗi kiểu kết nối sẽ có một hoặc nhiều mẫu thiết kế riêng cho nó. Các máy trạm kết nối đến các microservice thì kiến trúc microservices sẽ sử dụng mẫu thiết kế cổng API, để phát hiện dịch vụ thì có thể sử dụng một trong hai mẫu thiết kế phát hiện phía máy trạm (Client-side discovery) và phát hiện phía máy chủ (Server-side discovery).

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ