Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh mạng Internet phát triển mạnh mẽ và số lượng người dùng trên toàn cầu gia tăng nhanh chóng, các ứng dụng hiện đại đối mặt với yêu cầu phải chuyển đổi kiến trúc để đáp ứng khối lượng truy cập lớn và duy trì tính ổn định. Đồ án môn học "Đồ án 1: Xây dựng hệ thống với Spring Boot" được thực hiện bởi hai sinh viên Nguyễn Văn Quốc Tuấn (MSSV: 21522758) và Trần Phước Long (MSSV: 21521103), dưới sự hướng dẫn của ThS. Nguyễn Công Hoan tại Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM (hoàn thành vào tháng 12 năm 2023).
Lý do nhóm tác giả lựa chọn framework Spring Boot xuất phát từ mức độ phổ biến rộng rãi trong cộng đồng phát triển phần mềm, nền tảng vững chắc, tính linh hoạt cao, khả năng tối ưu hóa hiệu suất, hỗ trợ triển khai thuận tiện và hệ sinh thái công cụ phong phú.
Đồ án xác định các mục tiêu và phạm vi nghiên cứu cụ thể như sau:
- Mục tiêu nghiên cứu:
- Nắm rõ cấu trúc và kiến thức chuyên sâu về các thành phần cốt lõi trong hệ sinh thái Spring Boot.
- Xây dựng ứng dụng hoàn chỉnh áp dụng mô hình kiến trúc Microservice (vi dịch vụ) dựa trên nền tảng Spring Boot.
- Đối tượng nghiên cứu: Các nguyên lý thiết kế hệ thống phân tán, các mẫu thiết kế kiến trúc vi dịch vụ và các module chức năng của Spring Boot/Spring Cloud.
- Phạm vi nghiên cứu:
- Không gian và học thuật: Đồ án môn học chuyên ngành thuộc Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – ĐHQG-HCM.
- Nội dung: Khảo sát lý thuyết thiết kế hệ thống (cân bằng tải, cơ sở dữ liệu, giao dịch phân tán, bộ nhớ đệm, khám phá dịch vụ, đồng thuận dữ liệu, đóng gói triển khai) và hiện thực hóa mô hình vi dịch vụ thông qua ứng dụng thực nghiệm.
Cơ sở lý thuyết và phương pháp
Đồ án được xây dựng dựa trên nền tảng lý thuyết kỹ thuật phần mềm và hệ thống phân tán:
- Khung lý thuyết và mô hình kỹ thuật:
- Lý thuyết hệ thống phân tán: Khái niệm mạng máy tính (Computer Networking), tính toán song song (Parallel Computing), mô hình OSI (Open Systems Interconnection).
- Định lý CAP: Phân tích sự đánh đổi giữa Tính nhất quán (Consistency), Tính khả dụng (Availability) và Khả năng chịu đựng phân vùng mạng (Partition Tolerance).
- Mô hình giao dịch ACID: Đảm bảo tính nguyên tử (Atomicity), nhất quán (Consistency), cách ly (Isolation), và bền vững (Durability) trong hệ quản trị cơ sở dữ liệu.
- Giao thức giao dịch phân tán & Mẫu thiết kế: Two-Phase Commit (2PC), Three-Phase Commit (3PC), Saga Pattern (Choreography và Orchestration), Transactional Outbox.
- Mô hình đồng thuận phân tán: Thuật toán đồng thuận Raft và bài toán các vị tướng Byzantine (Byzantine Fault Tolerance).
- Phương pháp nghiên cứu: Phương pháp phân tích – tổng hợp lý thuyết kết hợp với phương pháp thiết kế và thực nghiệm kỹ thuật phần mềm (System Design & Software Engineering).
- Nguồn tài liệu: Tài liệu kỹ thuật chuyên ngành về kiến trúc phân tán, đặc tả framework Spring Boot, Spring Cloud, Netflix OSS, Docker, Kubernetes và các hệ thống đo lường hiệu năng (Zipkin, Prometheus).
Thiết kế và triển khai hệ thống
Đồ án xây dựng một hệ thống phân tán hướng vi dịch vụ với các thành phần công nghệ và kiến trúc cụ thể:
- Kiến trúc tổng thể: Mô hình Microservices phân tách chức năng nghiệp vụ, định tuyến qua API Gateway, quản lý đăng ký/khám phá dịch vụ tập trung và đồng bộ hóa cấu hình hệ thống.
- Tech stack và các module triển khai:
- Spring Boot & Spring Boot Starter: Nền tảng cốt lõi khởi tạo và quản lý vòng đời ứng dụng.
- Spring Data JPA: Tương tác tầng dữ liệu hướng đối tượng và quản lý cơ sở dữ liệu quan hệ.
- Spring Cloud Config Server: Quản lý cấu hình tập trung cho toàn bộ các dịch vụ thông qua file cấu hình YAML.
- Netflix Eureka Server (
@EnableEurekaServer): Trung tâm Service Discovery phục vụ việc đăng ký và quản lý địa chỉ của các service instances.
- Spring Cloud Gateway: Điểm tiếp nhận request duy nhất từ client, chịu trách nhiệm định tuyến, lọc và phân phối tải.
- Spring Boot Cache: Bộ nhớ đệm dữ liệu tạm thời để giảm tải truy vấn tầng cơ sở dữ liệu.
- Spring Boot Actuator & Spring Boot Security (
@EnableWebSecurity, OAuth2, JWT): Giám sát tình trạng ứng dụng và cung cấp hạ tầng xác thực, phân quyền người dùng.
- Spring Cloud Resilience4j: Xử lý khả năng chịu lỗi (Client resilience, Circuit Breaker).
- Spring Cloud OpenFeign: Khai báo giao tiếp RESTful client giữa các vi dịch vụ.
- Docker & Kubernetes: Đóng gói các dịch vụ thành container và định hình cấu hình cụm triển khai.
- Giám sát và kiểm thử vận hành:
- Distributed Tracing: Tích hợp Zipkin Dashboard theo dõi luồng thực thi request qua các vi dịch vụ độc lập khi khởi tạo dịch vụ, tạo đơn hàng và xử lý thanh toán.
- Hệ thống số liệu (Metrics): Sử dụng Prometheus thu thập số liệu và theo dõi trạng thái hoạt động của hệ thống theo thời gian thực.
Nội dung chính theo từng chương
Chương 1: Giới thiệu đề tài
Chương này nêu rõ động lực nghiên cứu bắt nguồn từ nhu cầu nâng cao năng lực phục vụ của các ứng dụng Internet quy mô lớn. Nhóm tác giả xác định mục tiêu nghiên cứu là làm chủ hệ sinh thái Spring Boot, áp dụng vào kiến trúc Microservice và giới thiệu tổng quan bố cục 11 chương của báo cáo.
Chương 2: Thiết kế hệ thống
Nội dung chương tập trung vào 6 nguyên lý nền tảng trong thiết kế hệ thống phân tán:
- Tính mở rộng (Scalability): So sánh mở rộng theo chiều dọc (Vertical Scaling - nâng cấp CPU, RAM, ổ cứng; chi phí cao, giới hạn phần cứng) và mở rộng theo chiều ngang (Horizontal Scaling - tăng số lượng máy chủ/node mạng; nền tảng cho hệ thống phân tán).
- Tính khả dụng (Availability - $A$): Đo lường thời gian hoạt động bằng số lượng chữ số "9" (từ 90% đến 99.999% - "5 số 9") và thời gian ngừng hoạt động (downtime) cho phép.
- Tính tin cậy (Reliability - $R$): Đánh giá thông qua chỉ số thời gian trung bình giữa các lần hỏng hóc (MTBF - Mean Time Between Failure) và thời gian sửa chữa trung bình (MTTR - Mean Time To Repair) nhằm đáp ứng mục tiêu mức dịch vụ (SLO).
- Tính bảo trì (Maintainability - $M$): Xác suất khôi phục chức năng hệ thống trong khoảng thời gian nhất định, được tính bằng công thức:
$$\text{MTTR} = \frac{\text{Total Maintenance Time}}{\text{Total Number of Repairs}}$$
- Tính nhất quán (Consistency) và Định lý CAP: Phân tích mối quan hệ đánh đổi giữa Consistency, Availability và Partition Tolerance khi xảy ra phân mảnh mạng.
- Tính hồi phục (Fault Tolerance): Phân loại lỗi thành Node fault (Crash-stop, Crash-recovery, Byzantine fault) và Network fault. Trình bày kỹ thuật sao chép (Replication) và bài toán các vị tướng Byzantine (chỉ giải quyết được khi số lượng node lỗi nhỏ hơn $1/3$ tổng số node trong cụm).
Chương 3: Bộ cân bằng tải
Trình bày cơ chế điều phối lưu lượng mạng nhằm tăng thông lượng và đảm bảo tính khả dụng:
- Vị trí triển khai: Đặt giữa Client và Web Server, giữa Web Server và Application Server, hoặc giữa Application Server và Database Server.
- Phân loại theo mô hình OSI: Cân bằng tải Layer 3/4 (định tuyến dựa trên IP/Port TCP/UDP, không xem nội dung gói tin) và Layer 7 (hoạt động tại tầng ứng dụng HTTP, đóng vai trò Reverse Proxy).
- Các thuật toán định tuyến: Round Robin, Weighted Round Robin, Least Connections, Least Response Time, Weighted Least Connections, IP Hash, URL Hash và Randomized.
- Hình thức triển khai: So sánh bộ cân bằng tải phần cứng (F5 BIG-IP, Cisco Catalyst, Barracuda, Coyote Point) và phần mềm (HAProxy, Nginx, các shadow load balancers); phân tích mô hình Client-side Load Balancing và Server-side Load Balancing.
Chương 4: Cơ sở dữ liệu
Khảo sát hai nhánh cơ sở dữ liệu chính:
- Cơ sở dữ liệu quan hệ (RDBMS): Tuân thủ 4 thuộc tính ACID (Atomicity, Consistency, Isolation, Durability). Điển hình gồm: MySQL, Oracle Database, Microsoft SQL Server, IBM DB2, PostgreSQL, SQLite.
- Cơ sở dữ liệu phi quan hệ (NoSQL): Tối ưu hóa cho dữ liệu phi cấu trúc, dễ dàng mở rộng ngang:
- Key-value (ví dụ: Amazon DynamoDB) phục vụ lưu trữ phiên làm việc (session).
- Document (JSON, XML, BSON) quản lý cấu trúc phân cấp.
- Graph (Neo4j, OrientDB, InfiniteGraph) tối ưu hóa biểu diễn các mối quan hệ phức tạp.
- Columnar (Cassandra, HBase, Hypertable, Amazon Redshift) tối ưu truy vấn tổng hợp và giảm thiểu thao tác đọc/ghi đĩa (Disk I/O).
| Tiêu chí |
Cơ sở dữ liệu quan hệ (RDBMS) |
Cơ sở dữ liệu phi quan hệ (NoSQL) |
| Cấu trúc dữ liệu |
Dữ liệu có cấu trúc định sẵn (schema) |
Dữ liệu phi cấu trúc hoặc bán cấu trúc |
| Giao dịch |
Yêu cầu nghiêm ngặt các thuộc tính ACID |
Không yêu cầu hoặc nới lỏng chuẩn ACID |
| Tích hợp dữ liệu |
Không thường xuyên cần tích hợp phân tán |
Hỗ trợ lưu trữ phân tán linh hoạt |
| Quy mô lưu trữ |
Thích hợp cho dữ liệu tập trung trên một node |
Thích hợp cho khối lượng dữ liệu khổng lồ trên nhiều node |
Chương 5: Giao dịch phân tán
Phân tích các giao thức đảm bảo tính toàn vẹn dữ liệu trên môi trường phân tán:
- Two-Phase Commit (2PC): Gồm Coordinator và Participants trải qua 2 pha: Pha biểu quyết (Voting Phase) và Pha xác nhận (Commit Phase), sử dụng Write-Ahead Log (WAL). Nhược điểm lớn nhất là tính chặn (Blocking) và Coordinator là điểm hỏng hóc đơn lẻ (Single Point of Failure - SPOF).
- Three-Phase Commit (3PC): Chia pha biểu quyết thành các pha con có thêm trạng thái Prepare-to-Commit nhằm loại bỏ SPOF, tuy nhiên giao thức này dễ bị phá vỡ khi xảy ra lỗi phân mảnh mạng (Network Partition).
- Saga Pattern: Chuỗi các giao dịch cục bộ (local transactions) nối tiếp nhau, kết hợp Compensating Transactions để hoàn tác khi có lỗi:
- Choreography: Phân tán qua Message/Event Bus (RabbitMQ, Apache Kafka).
- Orchestration: Điều phối tập trung qua một Service Orchestrator.
- Transactional Outbox: Ghi dữ liệu nghiệp vụ và message vào cùng một database transaction trước khi phát tán tới message bus nhằm đảm bảo tính nguyên tử.
Chương 6: Bộ nhớ đệm
Trình bày cấu trúc bảng băm (Hash Table), danh sách liên kết (Linked List) và cơ chế giải phóng bộ nhớ đệm (Cache Invalidation). Đồ án tổng hợp 6 mô hình thiết kế bộ nhớ đệm kinh điển:
- Read-aside / Cache-aside: Ứng dụng tự đọc từ cache, nếu thiếu (cache miss) sẽ đọc từ database và tự cập nhật cache.
- Write-aside: Ứng dụng ghi trực tiếp vào cơ sở dữ liệu và chủ động cập nhật hoặc vô hiệu hóa cache tương ứng.
- Read-through: Ứng dụng luôn đọc từ cache; cache framework tự động nạp từ database nếu xảy ra cache miss.
- Write-through: Dữ liệu được ghi vào cache trước, sau đó cache engine lập tức ghi đồng bộ vào database.
- Write-back (Write-behind): Dữ liệu ghi vào cache và phản hồi client ngay; việc ghi xuống database được thực hiện bất đồng bộ sau đó.
- Write-around: Dữ liệu mới/cập nhật được ghi trực tiếp xuống database mà không đi qua cache, tránh làm loãng cache bằng dữ liệu ít đọc.
Chương 7: Service Discovery & API Gateway
- Service Discovery: Phân loại cơ chế tìm kiếm dịch vụ phía máy khách (Client-side Discovery) và phía máy chủ (Server-side Discovery); cơ chế tự đăng ký (Self-registration) và đăng ký qua bên thứ ba (Third-party Registration).
- API Gateway: Đóng vai trò cổng vào duy nhất, quản lý định tuyến, bảo mật và kết hợp cơ chế bảo vệ máy khách (Client Resilience).
Chương 8: Consensus (Sự đồng thuận)
- Nêu rõ các ca sử dụng cốt lõi của sự đồng thuận phân tán: Bầu chọn trưởng nhóm (Leader Election), Khóa phân phối (Distributed Lock) và Truyền tải nguyên tử (Atomic Broadcast).
- Thuật toán Raft: Khảo sát chi tiết 3 trạng thái của các node (Leader, Follower, Candidate), cơ chế sao chép nhật ký (Replicated Log), kỹ thuật xử lý sự phân kỳ nhật ký giữa các node và đánh giá ưu/nhược điểm vận hành.
Chương 9: Deployment (Triển khai)
- Phân tích các mô hình triển khai: Nhiều phiên bản dịch vụ trên một máy chủ (Multiple Service Instances per Host) và Một phiên bản dịch vụ trên một máy chủ/máy ảo/container (Single Service Instance per Host/VM/Container).
- Giới thiệu công nghệ container hóa Docker, kiến trúc cụm Kubernetes (K8s Cluster) và công cụ quản lý gói ứng dụng Helm.
Chương 10: Thiết kế và xây dựng hệ thống Spring Boot
Trình bày chi tiết cách thức cấu hình, tích hợp các thư viện phụ thuộc (dependencies) trong dự án Maven:
spring-boot-starter-data-jpa: Tương tác cơ sở dữ liệu.
spring-cloud-config-server: Máy chủ cấu hình tập trung.
spring-cloud-starter-netflix-eureka-server: Khởi tạo Eureka Server qua @EnableEurekaServer.
spring-cloud-starter-gateway: Xây dựng API Gateway.
spring-boot-starter-cache: Quản lý bộ nhớ đệm.
spring-boot-starter-actuator: Giám sát sức khỏe dịch vụ.
spring-boot-starter-security & spring-boot-starter-oauth2-client: Bảo mật hệ thống với @EnableWebSecurity và @EnableOAuth2Client.
spring-cloud-starter-circuitbreaker-resilience4j: Triển khai Circuit Breaker.
spring-cloud-starter-openfeign: Giao tiếp liên dịch vụ qua HTTP REST client.
spring-boot-starter-docker: Đóng gói và chuẩn hóa môi trường triển khai.
Chương 11: Demo và tổng kết
Hiện thực hóa hệ thống phân tán thực nghiệm thông qua hai ca nghiệp vụ chính: Đặt đơn hàng (Order Creation) và Thanh toán (Payment). Đồ án cung cấp:
- Sơ đồ hoạt động (Activity Diagrams) mô tả chi tiết luồng xử lý của quá trình đặt hàng và thanh toán.
- Bảng điều khiển Zipkin Dashboard ghi nhận distributed tracing khi các vi dịch vụ khởi tạo và khi thực thi từng giao dịch đặt hàng, thanh toán.
- Giao diện Prometheus hiển thị số liệu đo lường trạng thái vận hành của các dịch vụ trong hệ thống.
Kết quả và đóng góp
- Kết quả kỹ thuật chính:
- Hệ thống hóa toàn bộ các khối kiến thức lý thuyết nền tảng về thiết kế hệ thống phân tán và kiến trúc microservices.
- Xây dựng thành công hệ thống demo vi dịch vụ tích hợp đầy đủ hệ sinh thái Spring Boot / Spring Cloud (Config Server, Eureka Server, Spring Cloud Gateway, Feign, Resilience4j, Security/JWT).
- Triển khai thành công công cụ truy vết phân tán Zipkin Dashboard (giám sát các luồng đặt hàng và thanh toán) và hệ thống thu thập chỉ số Prometheus.
- Giải pháp và kiến nghị của tác giả:
- Đề xuất áp dụng Saga Pattern kết hợp Transactional Outbox thay cho 2PC/3PC truyền thống trong các bài toán giao dịch vi dịch vụ để tránh hiện tượng nghẽn blocking và xử lý sự cố phân mảnh mạng.
- Khuyến nghị sử dụng bộ cân bằng tải phần mềm và các giải pháp đám mây linh hoạt thay vì đầu tư phần cứng chuyên dụng đắt đỏ.
- Đóng góp của đồ án: Đóng vai trò là tài liệu kỹ thuật tổng hợp có tính liên kết chặt chẽ giữa lý thuyết hệ thống phân tán nâng cao và quy trình thực hành cài đặt cấu hình mã nguồn cụ thể trên nền tảng Spring Boot.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế:
- Đồ án mới dừng lại ở việc mô phỏng ứng dụng mẫu đơn giản (luồng đặt hàng và thanh toán) nhằm minh họa kiến trúc, chưa tích hợp các nghiệp vụ thương mại điện tử chuyên sâu.
- Chưa thực hiện kiểm thử tải ở quy mô cực lớn để đánh giá định lượng các thông số MTBF, MTTR và độ trễ dưới áp lực phân mảnh mạng thực tế.
- Hướng nghiên cứu tiếp:
- Mở rộng nghiệp vụ ứng dụng, tích hợp message broker chuyên dụng (như Apache Kafka hoặc RabbitMQ) để vận hành đầy đủ mô hình Saga Choreography.
- Triển khai toàn diện hệ thống trên cụm Kubernetes phân tán có cơ chế tự động co giãn (Auto-scaling).
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho sinh viên ngành Công nghệ Phần mềm, Khoa học Máy tính và Công nghệ Thông tin, cũng như các kỹ sư phần mềm đang trong quá trình chuyển đổi từ kiến trúc đơn khối (Monolith) sang kiến trúc vi dịch vụ (Microservices).
Các nội dung có giá trị tham khảo nổi bật bao gồm:
- Chương 2 và Chương 5: Cung cấp cơ sở lý luận mạch lạc về các nguyên lý thiết kế hệ thống phân tán, định lý CAP và phân tích chuyên sâu các giải pháp giao dịch phân tán (2PC, 3PC, Saga, Outbox Pattern).
- Chương 6 và Chương 8: Phân loại rõ ràng 6 mô hình cache và giải thích chi tiết thuật toán đồng thuận Raft.
- Chương 10 và Chương 11: Cung cấp cấu trúc dependency, annotation và cấu hình hoàn chỉnh để tích hợp các thành phần cốt lõi của Spring Cloud, Zipkin và Prometheus vào một dự án thực tế.
Câu hỏi thường gặp
1. Tại sao giao thức Xác nhận 2 pha (Two-Phase Commit - 2PC) có thể dẫn đến hiện tượng bị chặn (blocking)?
Hiện tượng chặn xảy ra khi người điều phối (Coordinator) gặp sự cố ngừng hoạt động sau giai đoạn biểu quyết (Voting Phase) đồng thời một số máy chủ tham gia (Participants) cũng gặp sự cố. Lúc này, các máy chủ còn lại không thể xác định được Coordinator đã ra quyết định commit hay rollback, cũng như không biết trạng thái của các máy chủ đã sập. Do đó, các nút còn lại buộc phải chờ đợi vô thời hạn và khóa tài nguyên, làm suy giảm tính sẵn sàng của toàn hệ thống.
2. Giao thức Three-Phase Commit (3PC) cải tiến điểm gì so với 2PC và vẫn còn tồn tại hạn chế nào?
3PC giải quyết điểm nghẽn của 2PC bằng cách chia giai đoạn biểu quyết thành hai giai đoạn con (thêm trạng thái trung gian Prepare-to-commit). Khi Coordinator sập, một nút tham gia khác có thể an toàn tiếp quản vai trò điều phối để hoàn thành hoặc hủy bỏ giao dịch mà không bị rơi vào trạng thái chặn. Tuy nhiên, 3PC vẫn có nguy cơ gây sai lệch dữ liệu khi xảy ra lỗi phân mảnh mạng (Network Partition), khiến hai phân vùng mạng độc lập tự đưa ra quyết định trái ngược nhau (một bên commit, một bên abort).
3. Mô hình Saga xử lý giao dịch phân tán khác biệt như thế nào so với 2PC và 3PC?
Thay vì cố gắng thực thi một giao dịch đơn nhất có tính ACID trên nhiều nút máy chủ như 2PC/3PC, Saga chia giao dịch phân tán thành một chuỗi các giao dịch cục bộ (local transactions) kế tiếp nhau. Mỗi dịch vụ tự thực thi transaction riêng của mình và gửi message/event kích hoạt transaction kế tiếp. Nếu một mắt xích thất bại, hệ thống sẽ phát tín hiệu để các dịch vụ phía trước thực hiện các giao dịch bù trừ (Compensating Transactions) nhằm hoàn tác dữ liệu về trạng thái hợp lệ.
4. Sự khác biệt cốt lõi giữa cân bằng tải Layer 4 và Layer 7 theo mô hình OSI là gì?
Cân bằng tải Layer 4 hoạt động tại tầng mạng và tầng giao vận (IP, TCP/UDP), đưa ra quyết định định tuyến dựa trên thông tin cổng và địa chỉ IP mà không đọc nội dung gói tin. Ngược lại, cân bằng tải Layer 7 hoạt động tại tầng ứng dụng, đóng vai trò Reverse Proxy với khả năng kiểm tra nội dung bản tin HTTP (như URL, HTTP Header, Cookies) để đưa ra quyết định định tuyến thông minh hơn.
5. Hệ thống thực nghiệm trong đồ án sử dụng công cụ nào để giám sát và theo dõi dấu vết các vi dịch vụ?
Hệ thống demo sử dụng Zipkin Dashboard để thực hiện truy vết phân tán (Distributed Tracing), cho phép ghi nhận và trực quan hóa luồng request đi qua các microservice độc lập khi tạo đơn hàng và thanh toán. Đồng thời, hệ thống sử dụng Prometheus để thu thập số liệu metrics và theo dõi tình trạng sức khỏe của các thành phần dịch vụ theo thời gian thực.
Kết luận
Đồ án môn học "Xây dựng hệ thống với Spring Boot" của nhóm tác giả Nguyễn Văn Quốc Tuấn và Trần Phước Long đã trình bày một cách có hệ thống các nguyên lý thiết kế hệ thống phân tán cốt lõi, từ lý thuyết cân bằng tải, cơ sở dữ liệu, giao dịch phân tán đến cơ chế đồng thuận Raft. Công trình đã hiện thực hóa thành công các khái niệm lý thuyết thành mô hình vi dịch vụ thực tế dựa trên hệ sinh thái Spring Boot/Spring Cloud, kết hợp cùng hạ tầng đóng gói Docker và hệ thống giám sát Zipkin, Prometheus. Đây là tài liệu tổng hợp có giá trị học thuật và kỹ thuật thực hành cao cho việc nghiên cứu, xây dựng các kiến trúc phần mềm hướng dịch vụ hiện đại.