Xây dựng và triển khai ứng dụng phê bình sách sử dụng microservices và quy trình DevSecOps

Building and deploying a Book Reviews application using microservices and pipeline DevSecOps

Đồ án tập trung vào việc xây dựng hệ thống phê bình sách dành cho người dùng với kiến trúc Microservices và quy trình triển khai DevSecOps hiện đại. API được phát triển bằng Java Spring Boot, chia thành các dịch vụ độc lập như xác thực, đăng bài viết, lưu trữ tệp, gửi thông báo,… giúp đảm bảo tính mở rộng, dễ bảo trì và linh hoạt.

Toàn bộ hạ tầng được triển khai trên nền tảng AWS Cloud bằng công cụ Terraform (Infrastructure as Code), tích hợp CI/CD pipeline với Jenkins và GitOps bằng Argo CD để tự động hoá quá trình build – kiểm thử – triển khai. Các công cụ SonarQube, Trivy được tích hợp để kiểm tra chất lượng mã nguồn và bảo mật. Hệ thống giám sát sử dụng Prometheus – Grafana và cảnh báo qua Slack

Đồ án đáp ứng các tiêu chí kỹ thuật hiện đại như: tự động hóa triển khai, kiểm thử bảo mật, khả năng mở rộng, quản lý hiệu quả và giám sát hệ thống. Đây là nền tảng phù hợp cho các ứng dụng thực tế trong môi trường doanh nghiệp.

TÁC GIẢ

Nguyễn Ngô Hải Nam, Nguyễn Hoàng Vũ

GIẢNG VIÊN HƯỚNG DẪN

NGÀNH

Năm:

TỔNG QUAN

Trong thời đại chuyển đổi số, các hệ thống phần mềm cần được xây dựng và triển khai một cách nhanh chóng, có khả năng mở rộng linh hoạt và đảm bảo an toàn bảo mật. 

Mô hình kiến trúc microservice cùng với quy trình phát triển phần mềm hiện đại như DevOps và DevSecOps đang dần trở thành xu hướng tất yếu trong các tổ chức. Tuy nhiên, việc triển khai và vận hành các hệ thống này đòi hỏi sự kết hợp giữa nhiều công nghệ như Kubernetes, CI/CD, giám sát, cảnh báo và kiểm soát bảo mật. 

Đề tài “Xây dựng và triển khai hệ thống đánh giá sách sử dụng kiến trúc microservice và DevSecOps” giúp xây dựn một quy trình triển khai một hệ thống hiện đại, hoàn chỉnh, an toàn và tự động hóa cao

Mục tiêu thực hiện

  • Xây dựng một API hệ thống thống đánh giá sách gồm nhiểu microservice độc lập
  • Triển khai hệ thống lên Kubernester Cluster tự xây dựng trên nền tảng AWS
  • Áp dụng DevSecOps: từ khâu phát triển, kiểm thử, kiểm tra bảo mật đến triển khai tự động
  • Sử dụng các công cụ: Jenkins, SonarQube, Trivy, Argo CD, Terraform, Prometheus, Grafana, Harbor, Slack
  • Tích hợp giám sát,cảnh báo và tự động khôi phục khi có sự cố

Phạm vi thực hiện đề tài 

  • Thiết kế và phát triển các API theo kiến trúc microservice cơ bản phục vụ ứng dụng đánh giá sách 
  • Tự động hoá quá trình build, test, kiểm tra bảo mật, và deploy ứng dụng 
  • Xây dựng hạ tầng trên AWS bằng Terraform và triển khai Kubernetes cluster thủ công bằng kubeadm 
  • Tích hợp đầy đủ các thành phần DevSecOps cần thiết cho một pipeline hoàn chỉnh 
  • Triển khai hệ thống monitoring và cảnh báo (Prometheus, Grafana, Slack)

Phương pháp và công cụ nghiên cứu

Tìm hiểu tài liệu, thực nghiệm, xây dựng và đánh giá hệ thống

Công cụ sử dụng:

  • Terraform: hạ tầng dưới dạng mã ( Infrastructure as Code )
  • Jenkins: công cụ CI để build/test/push image
  • SonarQube: kiểm tra chất lượng mã nguồn
  • Trivy: kiểm tra lỗ hổng bảo mật image
  • Argo CD: triển khai ứng dụng qua GitOps
  • Rancher: giao diện quản lý Kubernetes
  • Harbor: quản lý image container nội bộ
  • Prometheus & Grafana: giám sát hệ thống
  • Slack: nhận cảnh báo hệ thống

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Mô hình nghiệp vụ tổng thể 

Hệ thống đánh giá sánh là hệ thống cho phép người dùng đăng ký và tạo tài khoản để tham gia vào một mạng xã hội về chủ đề sách. Tại đây người dùng có thể xem và viết các bài nhận xét, đánh giá cho các cuốn sách. Ứng dụng sẽ lưu trữ thông tin người dùng, dữ liệu đánh giá về sách và các bài viết đánh giá. Kiến trúc hệ thống được thiết kế theo mô hình microservices để có thể dễ dàng mở rộng và phát triển nhanh chóng tùy theo nhu cầu. Theo nghiên cứu từ AWS cho thấy kiến trúc microservices giúp ứng dụng dễ dàng mở rộng và phát triển nhanh hơn, thúc đẩy đổi mới và rút ngắn thời gian ra mắt tính năng mới. Đối với các ứng dụng doanh nghiệp đa nền tảng, mô hình API Gateway tập trung được áp dụng cho hệ thống để kiểm soát và bảo mật tập trung giữa các dịch vụ 

Các chức năng chính: 

Auth: Dịch vụ xác thực và quản lý người dùng, bao gồm đăng ký, đăng nhập, cấp phát JWT token và kiểm tra, lưu trữ thông tin tài khoản an toàn. 

Post: Dịch vụ quản lý bài viết và đánh giá sách, cho phép tạo, đọc, sửa, xóa (CRUD) các bài viết đánh giá. Mỗi bài viết có thể bao gồm tiêu đề, nội dung, đánh giá và tiêu đề cuốn sách. 

File: Dịch vụ lưu trữ tệp, upload, download và lưu trữ hình ảnh đại diện của tài khoản người dùng hoặc hình ảnh về sách liên quan đến đánh giá. 

API Gateway: Cổng trung gian nhận tất cả yêu cầu từ client thông qua Load Balancer, thực hiện xác thực và chuyển tiếp đến các dịch vụ tương ứng của backend. Gateway đảm bảo điểm truy cập duy nhất cho toàn bộ hệ thống, tập trung triển khai các chính sách bảo mật như kiểm tra JWT. 

Các chức năng chính trên tạo thành mô hình nghiệp vụ tổng thể của hệ thống đánh giá sách. Kiến trúc microservices giúp chia nhỏ hệ thống thành các thành phần độc lập, chuyên biệt theo từng nghiệp vụ, qua đó nâng cao tính linh hoạt trong việc mở rộng và bảo trì. 

Thiết kế kiến trúc tổng thể

image 57
image 58

Triển khai tự động bằng ArgoCD 

Quy trình triển khai sử dụng Argo CD theo mô hình GitOps để tự động hóa giai đoạn CD (Continuous Deployment). Argo CD được cài đặt trên cụm K8s, cung cấp giao diện (UI/CLI) để liên kết Gitops repository chứa các Kubernetes manifests. Khi developer cập nhật mã nguồn hoặc file cấu hình và commit lên Gitops, ArgoCD sẽ tự động đồng bộ (sync) những thay đổi đó lên cụm K8s, đảm bảo trạng thái live luôn phù hợp với trạng thái mong muốn trên Git. Tính năng Auto-sync của ArgoCD cho phép triển khai ứng dụng tự động ngay khi phát hiện thay đổi mã nguồn. Đồng thời, ArgoCD hỗ trợ cơ chế rollback tự động: nếu một phiên bản triển khai mới gặp lỗi, nó có thể khôi phục trở lại phiên bản trước đó đảm bảo hệ thống luôn ổn định.

XÂY DỰNG HẠ TẦNG VÀ TRIỂN KHAI CLUSTER

Mô hình triển khai

image 59

ĐÁNH GIÁ, KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Đánh giá hệ thống 

Hệ thống đã đạt được mục tiêu đề ra, nó cho phép người dùng đánh giá sách và đăng nhận xét trên một kiến trúc microservices, đồng thời cũng đã tích hợp triển khai bằng quy trình CI/CD chuẩn DevSecOps. Dựa vào việc sử dụng microservices, từng thành phần hoạt động độc lập và có thể thay đổi, mở rộng riêng biệt một cách linh động. Các kiểm thử tự động và công cụ bảo mật trong pipeline đã phát hiện sớm nhiều vấn đề (bugs, lỗ hổng) trước khi đưa dự án vào môi trường production, góp phần nâng cao tính an toàn. 

Kiến trúc microservices cũng đã giúp hệ thống đạt được ngưỡng chịu lỗi tốt hơn: khi một dịch vụ gặp sự cố, nó có thể được thay thế hoặc tái khởi động trong khi các dịch vụ khác vẫn tiếp tục hoạt động bình thường. Nhìn chung, việc áp dụng quy trình DevSecOps và các công cụ giám sát đã giúp hệ thống đạt độ tin cậy và tính sẵn sàng cao. 

So sánh với các giải pháp khác 

So với kiến trúc nguyên khối (monolithic), giải pháp hiện tại vượt trội hơn về khả năng mở rộng và phát triển. Ở monolith, toàn bộ ứng dụng gắn chặt thành một khối, khi mở rộng chỉ có thể triển khai lại cả khối (gây lãng phí tài nguyên) hoặc nếu code trở nên lớn, việc build và deploy rất chậm. Kiến trúc này dẫn đến khó khăn khi ứng dụng phát triển lớn hơn về sau. Trong khi đó, kiến trúc microservices cho phép chia nhỏ ứng dụng theo chức năng, nên khi nhu cầu tăng ở một tính năng nào đó chỉ cần scale service tương ứng. Quá trình triển khai và bảo trì cũng linh hoạt hơn. Như đánh giá, “sự ra đời của microservices là để khắc phục tình trạng monolithic khi ứng dụng lớn dần”. 

Kết luận tổng thể đề tài và hướng phát triển 

Trong tương lai, chúng em có dự định mở rộng hệ thống theo một số hướng sau: 

(1) Bổ sung các thành phần AI/ML để đề xuất sách hoặc phân tích cảm xúc của các bài nhận xét. 

(2) Mở rộng hệ thống lên đa cluster hoặc đa vùng (multi-cluster, hybrid cloud) để gia tăng tính sẵn sàng và hiệu năng. 

(3) Cải thiện bảo mật theo chuẩn OWASP, bổ sung kiểm thử động (DAST) hoặc quản lý secret (Vault) trong pipeline. 

(4) Tối ưu dashboard giám sát, bổ sung AlertRules chi tiết hơn cho từng microservice. Các cải tiến này sẽ giúp hệ thống hoàn thiện hơn và đáp ứng tốt hơn với các yêu cầu thực tế mà nhóm chúng em đề ra và các xu hướng công nghệ mới hiện nay.