Phát triển hệ thống quản lý và quy trình tự động hóa triển khai ứng dụng CRM dựa trên microservices.

Developing a management system and automation process for deploying a microservices-based CRM application.

Trong đề tài này, nhóm nghiên cứu phát triển một hệ thống quản lý và thiết lập quy trình CI/CD cho việc triển khai ứng dụng CRM (Customer Relationship
Management) dựa trên kiến trúc Microservices. Nhóm áp dụng kiến trúc Microservices cho ứng dụng không chỉ để nâng cao khả năng mở rộng và tính linh hoạt của hệ thống mà còn tạo điều kiện cho việc triển khai và quản lý các dịch vụ một cách độc lập. Việc này sẽ mang lại nhiều lợi ích, bao gồm việc dễ dàng bảo trì, cập nhật và mở rộng các tính năng mới mà không ảnh hưởng đến toàn bộ hệ thống.

TÁC GIẢ

QUÁCH THỊ HOÀI PHƯƠNG, HUỲNH PHI LINH

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

NGÀNH

Năm:

Tổng quan

Ngày nay, Kubernetes hiện là một trong những nền tảng quản lý container phổ biến và được sử dụng nhiều bởi các công ty lớn, nhỏ trên toàn thế giới. Với sự phát triển không ngừng của các ứng dụng Container hóa và Microservies, Kubernetes còn được xem là công nghệ tiên phong trong việc quản lý và triển khai ứng dụng.

Kubernetes đảm bảo được hiệu quả trong việc quá lý và triển khai các ứng dụng, việc hỗ trợ mở rộng trên nhiều nền tảng đám mây khác nhau, giúp doanh nghiệp dễ dàng quản lý hạ tầng hybrid hoặc multi-cloud. Từ đó giúp tối ưu hóa hiệu suất và chi phí.

Mục tiêu của việc nghiên cứu Kubernetes là hiểu rõ cách thức hoạt động của hệ thống này, từ đó áp dụng vào thực tiễn để tối ưu hóa việc quản lý tài nguyên, nâng cao hiệu suất và độ tin cậy của ứng dụng.

Trong đề tài này, nhóm nghiên cứu phát triển một hệ thống quản lý và thiết lập quy trình CI/CD cho việc triển khai ứng dụng CRM (Customer Relationship Management) dựa trên kiến trúc Microservices.

Nhóm áp dụng kiến trúc Microservices cho ứng dụng không chỉ để nâng cao khả năng mở rộng và tính linh hoạt của hệ thống mà còn tạo điều kiện cho việc triển khai và quản lý các dịch vụ một cách độc lập. Việc này sẽ mang lại nhiều lợi ích, bao gồm việc dễ dàng bảo trì, cập nhật và mở rộng các tính năng mới mà không ảnh hưởng đến toàn bộ hệ thống.

Hơn nữa, nhóm cũng xây dựng một quy trình CI/CD hoàn chỉnh giúp tự động hóa quá trình kiểm tra, xây dựng và triển khai ứng dụng. Điều này không chỉ giảm thiểu rủi ro lỗi xảy ra trong quá trình triển khai mà còn tăng cường khả năng phản hồi nhanh chóng với các yêu cầu thay đổi và cập nhật.

Đồng thời, thông qua đề tài này, nhóm mong muốn trang bị kiến thức chuyên sâu về Kubernetes, mở ra cơ hội nghề nghiệp và khả năng phát triển các dự án công nghệ phức tạp trong tương lai. Nghiên cứu này cũng nhằm giải quyết các thách thức thực tế trong việc triển khai và quản lý hạ tầng IT, từ đó đóng góp vào sự phát triển chung của ngành công nghệ thông tin.

Mô hình triển khai

image 4
  • Mô hình triển khai hệ thống gồm hai phần chính: Keepalived và Kubernetes Cluster. Phần Keepalived bao gồm một node master và một node backup. Phần Kubernetes Cluster gồm một master node và hai worker node, với master node chịu trách nhiệm chứa toàn bộ các cấu hình phần mềm cài đặt cho Kubernetes.
  • Khi người dùng truy cập vào địa chỉ IP ảo (VIP), lưu lượng truy cập sẽ được chuyển đến dịch vụ HAProxy trên master node của Keepalived. Trong trường hợp dịch vụ HAProxy bị ngừng hoạt động, VIP sẽ tự động chuyển sang node backup của Keepalived, dựa vào tham số priority trong cấu hình Keepalived.
  • Tiếp theo, HAProxy sẽ thực hiện các quy tắc để phân phối các yêu cầu theo phương thức round-robin đến các master node tại cổng Node Port của Nginx-Ingress. Sau đó, Nginx-Ingress sẽ phân tích URL của các yêu cầu và chuyển tiếp đến các server phù hợp dựa trên các ingress-rule đã được khai báo trong Kubernetes.
image 5

Đối với quá trình triển khai tự động, khi developer commit code lên GitHub và build Jenkins pipeline. Jenkins khởi động các stage bao gồm kiểm tra chất lượng code với SonarQube. Nếu vượt qua, Jenkins build source code thành Docker image và đẩy lên Docker registry. Sau đó, Jenkins dùng Helm chart để triển khai ứng dụng lên Kubernetes. Cuối cùng, Jenkins kiểm tra kết quả triển khai và thông báo cho đội ngũ phát triển. Quá trình này tự động hóa từ kiểm tra, build đến triển khai, đảm bảo ứng dụng luôn được kiểm tra kỹ lưỡng và triển khai một cách nhất quán.

Kết luận

Nhìn chung, mô hình đã tận dụng các công nghệ và cấu hình tiên tiến để đảm bảo tính sẵn sàng cao, khả năng mở rộng, và quản lý lưu lượng truy cập hiệu quả trong hệ thống Kubernetes. Tuy nhiên, việc chạy nhiều node và dịch vụ giám sát đòi hỏi nhiều tài nguyên phần cứng và phần mềm, điều này có thể làm tăng chi phí hoạt động. Nhưng cũng có thể nói lợi ích từ việc đảm bảo an toàn, tính sẵn sàng và khả năng mở rộng của hệ thống hoàn toàn xứng đáng với chi phí đầu tư.