Tổng quan
Đề tài “Phát triển hệ thống dự đoán lỗi build trong tích hợp liên tục bằng học sâu và MLOps” đặt trọng tâm vào giải quyết các vấn đề lỗi build – một trở ngại phổ biến trong bối cảnh phát triển phần mềm hiện nay, đặc biệt đối với các hệ thống tích hợp liên tục (CI/CD). Với sự gia tăng độ phức tạp của các dự án phần mềm, lỗi build không chỉ gây gián đoạn mà còn làm gia tăng chi phí và suy giảm chất lượng sản phẩm. Đề tài áp dụng các phương pháp học sâu như Stacked-LSTM, StackedBiLSTM, và ConvLSTM để phân tích dữ liệu chuỗi thời gian từ nguồn như TravisTorrent, nhằm dự đoán sớm các rủi ro thất bại của build, từ đó hỗ trợ nâng cao hiệu quả quy trình phát triển và giảm thiểu thời gian xử lý sự cố.
Thực hiện đề tài bằng cách kết hợp ưu điểm nổi bật của trí tuệ nhân tạo (AI), cụ thể là học sâu, với các phương pháp quản lý vòng đời mô hình (MLOps), tích hợp quy trình DevSecOps, giúp mang lại một giải pháp thực tiễn và có tính ứng dụng cao. Hệ thống được triển khai trên nền tảng Kubernetes, tích hợp các công cụ như MLflow, DagsHub, GitHub Actions, ArgoCD, MinIO, Prometheus, Grafana, Loki, và các công cụ kiểm thử bảo mật và lưu trữ bí mật như SonarQube, Snyk, Trivy Vault đảm bảo tự động hóa, bảo mật, giám sát và khả năng mở rộng. Trên tập dữ liệu, các kết quả thực nghiệm với F1-score đạt đến 0.81 và AUC đến 0.84, khẳng định tiềm năng trong việc nâng cao hiệu quả quản lý dự án phần mềm.
Đóng góp chính của đề tài là cung cấp một công cụ giúp các đội phát triển phần mềm, bao gồm lập trình viên, kỹ sư DevOps và quản lý dự án, phát hiện lỗi sớm, sử dụng tài nguyên hiệu quả để nâng cao chất lượng đầu ra. Đồng thời, việc tích hợp MLOps mở ra hướng đi mới trong tự động hóa và quản lý mô hình học máy trong môi trường thực tế. Dù còn hạn chế ở việc xử lý dữ liệu mất cân bằng, tối ưu hóa thời gian thực và tối ưu hoá hệ thống huấn luyện, song đề tài đặt nền móng cho các nghiên cứu tiếp theo, đặc biệt là mở rộng ứng dụng cho các hệ thống CI/CD đa dạng hơn trong tương lai.
Mục tiêu nghiên cứu
Đề tài hướng đến việc xây dựng một mô hình dự đoán lỗi build trong quy trình CI/CD bằng kỹ thuật học sâu, sử dụng các mô hình Stacked LSTM, Stacked BiLSTM, ConvLSTM. Mục tiêu chính là phân tích dữ liệu lịch sử build để dự đoán khả năng thành công hoặc thất bại của các bản build mới, từ đó giảm thiểu gián đoạn trong quá trình phát triển phần mềm. Bằng cách phát hiện sớm các lỗi tiềm ẩn, hệ thống sẽ giúp tối ưu thời gian sửa lỗi và nâng cao chất lượng sản phẩm. Mô hình sẽ được tối ưu hóa để đạt hiệu suất cao thông qua các chỉ số đánh giá như Accuracy, F1-score, AUC và PR-AUC.
Bên cạnh đó, một hệ thống giao diện trực quan được xây dựng nhằm hỗ trợ người dùng theo dõi trạng thái quá trình xây dựng mô hình, đánh giá hiệu suất hoạt động, đồng thời tạo điều kiện để người dùng dễ dàng đóng góp dữ liệu và kích hoạt quy trình huấn luyện lại một cách tự động.
Cuối cùng, đề tài tích hợp MLOps để tự động hóa quá trình huấn luyện lại mô hình và cập nhật dữ liệu mới, đảm bảo hệ thống hoạt động hiệu quả trong môi trường thực tế.
Đối tượng nghiên cứu
Đối tượng chính của nghiên cứu là dữ liệu lịch sử build từ hệ thống CI/CD của TravisTorrent. Dữ liệu đầu vào bao gồm trạng thái build (pass/fail), quy mô và lịch sử thất bại của dự án, số lượng và loại tệp/mã thay đổi, đặc điểm nhóm phát triển, thông tin thời điểm build và metadata về pull request và thay đổi file cấu hình.
Ngoài ra, mô hình còn sử dụng các đặc trưng liên quan đến dự án (số dòng mã, mật độ test, lịch sử lỗi), thay đổi mã nguồn (số file và mức độ chỉnh sửa), nhóm phát triển (quy mô, kinh nghiệm, mức độ tương tác), thời gian build và cấu hình pull request. Hệ thống dự đoán lỗi build hướng đến đối tượng áp dụng chính là các đội phát triển phần mềm, bao gồm lập trình viên và kỹ sư DevOps, những người thường xuyên làm việc với CI/CD. Ngoài ra, quản lý dự án cũng có thể sử dụng hệ thống để giám sát chất lượng code và tối ưu hóa quy trình phát triển.
Phạm vi nghiên cứu
Đề tài tập trung vào việc xây dựng mô hình học sâu nhằm dự đoán lỗi build trong quy trình CI/CD, với trọng tâm là các kiến trúc LSTM và biến thể của nó như Stacked-LSTM, Stacked Bi-LSTM và ConvLSTM. Phạm vi nghiên cứu bao gồm việc khảo sát và phân tích các công trình liên quan đến dự đoán lỗi build, so sánh ưu điểm, hạn chế giữa các mô hình và ứng dụng MLOps để xây dựng nền tảng lý thuyết vững chắc. Dữ liệu được thu thập từ các nguồn công khai như TravisTorrent, bao gồm thông tin về quy mô dự án, lịch sử thất bại, thay đổi mã nguồn (số lượng & loại tệp), đặc điểm nhóm phát triển, thời điểm build, pull request và chỉnh sửa file cấu hình. Mô hình được thiết kế để khai thác mối quan hệ theo chuỗi thời gian giữa các bản build, đồng thời áp dụng thuật toán di truyền (Genetic Algorithm) để tối ưu hóa các siêu tham số. Bên cạnh đó, hệ thống giám sát và trực quan hóa kết quả dự đoán được phát triển dưới dạng giao diện web, giúp người dùng theo dõi hiệu suất và xu hướng lỗi một cách trực quan. Đề tài cũng đánh giá hiệu suất mô hình thông qua các chỉ số như Accuracy, F1-score, AUC và PR-AUC, đồng thời kiểm thử khả năng mở rộng và tiêu thụ tài nguyên khi triển khai thực tế. Hệ thống được triển khai theo hướng MLOps, sử dụng các công cụ như Kubernetes, GitHub Actions, ArgoCD, Prometheus, Grafana và Loki nhằm đảm bảo tính tự động hóa, ổn định và khả năng mở rộng cao trong môi trường thực tế. Ngoài ra, đề tài áp dụng mô hình DevSecOps nhằm tích hợp bảo mật ngay trong pipeline CI/CD. Các công cụ SonarQube (SAST) và Snyk (SCA) được sử dụng để phát hiện sớm lỗi bảo mật và vấn đề chất lượng mã. Trivy được tích hợp để quét lỗ hổng trong container image trong quá trình build. Đồng thời, HashiCorp Vault được sử dụng để lưu trữ và quản lý secrets của ứng dụng trên Kubernetes, bảo vệ cho các dữ liệu quan trọng như token, mật khẩu và khóa API
Thiết kế hệ thống

Mô hình kiến trúc được đề xuất trong nghiên cứu này là một giải pháp phân tán dựa trên mô hình microservices, được phát triển và quản lý thông qua Kubernetes. Hệ thống được xây dựng để đáp ứng cho các ứng dụng đa ngôn ngữ (bao gồm Ruby, Node.js, và các API tùy chỉnh) và tối ưu cho việc mở rộng quy mô, tích hợp các công cụ MLOps, CI/CD, lưu trữ dữ liệu, và giám sát hiệu suất. Kiến trúc này bao gồm các thành phần chính như mạng đám mây (cloud network), bộ cân bằng tải (load balancer), cụm Kubernetes, các dịch vụ microservices, các công nghệ liên quan đến quản lý dữ liệu, lưu trữ đối tượng và giám sát hệ thống. Mục tiêu là đảm bảo tính ổn định, đáp ứng mở rộng, và tự động hóa trong quy trình phát triển và triển khai phần mềm.
Tích hợp MLOps vào hệ thống

Hệ thống tự động của MLOps được xây dựng để nâng cao hiệu quả quy trình quản lý vòng đời mô hình máy học, trong đó luồng huấn luyện lại giữ vai trò cốt lõi trong việc duy trì hiệu suất được diễn ra liên tục. Quá trình bắt đầu khi các máy chủ backend kích hoạt lệnh huấn luyện lại models, sau đó gửi tín hiệu đến Python để tiến hành quá trình huấn luyện mô hình. Tập dữ liệu cần thiết cho việc huấn luyện được tải từ DagsHub, nơi lưu trữ các tập dữ liệu. Sau khi hoàn tất huấn luyện, các mô hình sẽ được xuất ra và lưu trữ trên MLflow để theo dõi và quản lý, đảm bảo khả năng cập nhập và giám sát trong môi trường sản xuất.
Luồng cho phép người dùng đóng góp, bổ sung dữ liệu được triển khai để duy trì và mở rộng cơ sở dữ liệu một cách hiệu quả. Quá trình này bắt đầu khi các máy chủ backend kích hoạt thao tác đóng góp dữ liệu, một máy chủ sẽ tiền xử lý và gửi dữ liệu tới DagsHub, nơi lưu trữ toàn bộ dữ liệu. Luồng này hỗ trợ việc duy trì một kho dữ liệu phong phú và cập nhật, phục vụ cho các tác vụ phân tích hoặc trong tương lai huấn luyện lại mô hình, đồng thời duy trì tính nhất quán bằng cách xử lý tập trung.
Hệ thống cũng cung cấp một cơ chế linh hoạt thông qua luồng action custom, được kích hoạt theo kết quả suy luận từ quy trình CI mà người dùng kích hoạt, bao gồm cả trường hợp thất bại hoặc thành công. Nếu dự đoán thất bại, các thông báo qua email sẽ được tự động gửi đến quản trị viên để thông báo về lỗi và yêu cầu can thiệp.
Tích hợp DevSecOps và GitOps vào hệ thống

Kiến trúc DevSecOps được thiết kế nhằm tích hợp bảo mật xuyên suốt chu trình phát triển phần mềm từ khi viết mã đến khi đưa vào sử dụng trong môi trường sản xuất. Mọi bước đều được tự động hóa và được theo dõi chi tiết nhằm đảm bảo an toàn, ổn định và hiệu quả. Các ứng dụng và lợi ích như:
- Phát hiện sớm lỗ hổng bảo mật,
- Bảo vệ tài nguyên nhạy cảm,
- Giảm thiểu rủi ro triển khai,
- Tăng độ tin cậy và khả năng tuân thủ.
Quy trình hoạt động chính:
- Mã nguồn được commit lên GitHub, khởi động pipeline CI/CD.
- Kích hoạt pipeline: Quá trình CI/CD được tự động kích hoạt sau mỗi thay đổi mã.
- Build & Push: Docker Hub tiến hành build image từ mã nguồn và đẩy lên registry.
- Phân tích bảo mật (SCA & SAST): Tích hợp công cụ phân tích thành phần phần mềm và kiểm thử mã nguồn tĩnh nhằm phát hiện kịp thời các rủi ro bảo mật.
- Lưu trữ & quét container: Image được lưu trên Harbor và tự động quét để kiểm tra độ an toàn trước khi triển khai.
- Triển khai lên môi trường: Image đã qua kiểm tra được triển khai vào hệ thống thực tế.
- Inject secrets: Các thông tin nhạy cảm (secrets) được chèn vào ứng dụng một cách an toàn.
Thành phần chính:
- GitHub: Kho mã nguồn và điểm khởi đầu của pipeline CI/CD.
- GitHub Actions: Nền tảng CI tự động hóa các bước build, test và bảo mật.
- Docker: Giúp xây dựng container image.
- Harbor: Container registry tích hợp chức năng quét bảo mật.
- Vault: Quản lý secrets và đảm bảo bảo mật thông tin cấu hình.
- ArgoCD: Công cụ GitOps triển khai tự động ứng dụng từ Git lên Kubernetes, đảm bảo nhất quán và dễ rollback.
- Ứng dụng: Môi trường vận hành chính của hệ thống sau triển khai.

Kết luận
1. Những kết quả đạt được
So với mục tiêu ban đầu:
- Phát triển mô hình học sâu hiệu quả:
- Đề tài đã thành công trong việc xây dựng và triển khai các mô hình học sâu như Stacked LSTM, Stacked Bi-LSTM và ConvLSTM để dự đoán lỗi build trong hệ thống CI/CD.
- Các mô hình này được tối ưu hóa bằng thuật toán di truyền (Genetic Algorithm), cho thấy hiệu suất tốt trên tập dữ liệu TravisTorrent, CIBench, với các chỉ số như F1-score, Accuracy, AUC và PR-AUC đạt mức có cải thiện.
- Phát triển hệ thống web với giao diện trực quan: Một hệ thống ứng dụng web với giao diện thân thiện đã được phát triển, hỗ trợ người dùng quản lý thông tin về quy trình CI/CD được đồng bộ với GitHub, cụ thể là GitHub Workflows. Ngoài ra, người dùng có thể quản lý được trạng thái xây dựng mô hình, đánh giá hiệu suất và kích hoạt huấn luyện lại một cách tự động, tăng cường tính thực tiễn và khả năng áp dụng. Mục đích giúp cho người dùng có cái nhìn tổng quan về trạng trái hiện tại của quy trình CI/CD và xu hướng lỗi, từ đó có thể đưa ra các hành động hợp lý giúp nhận biết lỗi sớm và tối ưu quy trình phát triển phần mềm.
- Tích hợp MLOps: Hệ thống đã được tự động hóa quy trình huấn luyện lại mô hình và cập nhật dữ liệu mới lên DagsHub và MLflow thông qua MLOps, sử dụng các công cụ như Kubernetes, GitHub Actions, ArgoCD, cùng với các giải pháp giám sát (Prometheus, Grafana, Loki)
Trong quá trình thực hiện và nghiên cứu để triển khai đề tài, nhóm đã học được nhiều điều giá trị, bao gồm:
- Kỹ năng phân tích dữ liệu và phát triển các đặc trưng tổng quan phù hợp với bài toán, ngay cả khi phải đối mặt với hạn chế về sự đa dạng của dữ liệu.
- Kinh nghiệm tích hợp DevSecOps với các công cụ như SonarQube, Snyk, Trivy và HashiCorp Vault, giúp nâng cao tính bảo mật và chất lượng mã nguồn ngay trong pipeline CI/CD.
- Hiểu biết sâu sắc về việc đánh giá toàn diện mô hình, thông qua các thử nghiệm thực tế, từ đó nhận thấy khả năng tổng quát hóa của mô hình, đặc biệt trong các kịch bản kiểm định trực tuyến và kiểm định chéo, với hiệu suất được cải thiện trên nhiều tập dữ liệu khác nhau.
- Phát triển ứng dụng web giao diện ưu nhìn và thân thiện với người dùng, hỗ trợ phản ứng linh hoạt khi truy cập ứng dụng web trên nền tảng mobile.
2. Những điểm còn hạn chế
Trong quá trình nghiên cứu và thực hiện đề tài của nhóm, một số hạn chế và thách thức mà nhóm đã gặp phải và ghi nhận, bao gồm:
Hạn chế về dữ liệu: Tập dữ liệu từ TravisTorrent còn thiếu sự phong phú và chưa phản ánh đầy đủ đặc điểm của phần mềm hiện đại, làm hạn chế hiệu suất của các mô hình phức tạp như ConvLSTM, Transformer, và đòi hỏi dữ liệu chất lượng cao hơn để tăng độ tin cậy.
Thời gian huấn luyện: Tối ưu hóa siêu tham số bằng Genetic Algorithm hiệu quả nhưng tốn thời gian, đặc biệt trong các trường hợp cần phản hồi thời gian thực, cần cải tiến để đáp ứng xử lý nhanh trong thực tế.
Giới hạn truy xuất dữ liệu từ các dự án lớn: Khi thu thập dữ liệu từ các kho lưu trữ mã nguồn mở trên GitHub nhằm phục vụ huấn luyện và phân tích, hệ thống gặp phải giới hạn truy cập (rate limit) từ GitHub API. Điều này gây khó khăn khi cần thu thập hoặc cập nhật thông tin từ các dự án lớn với nhiều commit, pull request, và pipeline CI/CD. Việc phân tích dữ liệu thời gian thực từ nhiều dự án trở nên kém hiệu quả do phải chờ đợi hoặc thực hiện truy xuất phân tán và bị gián đoạn.
3. Hướng phát triển
Dù hệ thống đã đạt được những kết quả tích cực ban đầu, nhóm vẫn nhận thấy còn nhiều cơ hội để phát triển thêm và tối ưu hiệu suất trong các giai đoạn tiếp theo.
Một số hướng phát triển nhóm sẽ triển khai cụ thể như sau:
- Mở rộng và đa dạng hóa tập dữ liệu: Tập dữ liệu hiện tại chủ yếu dựa trên TravisTorrent, vốn chưa phản ánh đầy đủ các đặc điểm hiện đại của hệ thống phần mềm hiện nay. Trong tương lai, việc thu thập và tổng hợp dữ liệu từ nhiều nguồn CI/CD phổ biến khác như GitHub Actions, GitLab CI, Jenkins hoặc CircleCI sẽ giúp tăng tính đại diện của tập dữ liệu.
- Nâng cấp kiến trúc mô hình học sâu: Các mô hình hiện tại như StackedLSTM, BiLSTM hoặc ConvLSTM cho thấy hiệu quả nhất định, nhưng vẫn còn hạn chế khi xử lý các chuỗi thời gian phức tạp. Việc áp dụng các mô hình hiện đại hơn như Transformer có thể giúp khai thác sâu hơn các mối quan hệ thời gian và phi tuyến tính trong dữ liệu, đồng thời tăng cường khả năng giải thích của mô hình.
- Tối ưu hóa siêu tham số hiệu quả hơn: Thuật toán di truyền hiện tại tuy hiệu quả nhưng tiêu tốn nhiều thời gian tính toán. Trong các bối cảnh yêu cầu phản hồi nhanh, có thể xem xét áp dụng các kỹ thuật tối ưu hóa hiện đại hơn để rút ngắn thời gian huấn luyện và cải thiện tốc độ phản hồi của hệ thống.
- Tăng cường khả năng tích hợp đa nền tảng: Hệ thống cần được thiết kế linh hoạt để tích hợp với nhiều nền tảng CI/CD khác nhau như GitLab CI, Jenkins hay Bamboo. Việc hỗ trợ đa nền tảng không chỉ giúp hệ thống mở rộng phạm vi sử dụng mà còn tăng khả năng áp dụng trong doanh nghiệp với nhiều hệ thống hiện có.
- Phát triển ứng dụng đa nền tảng trên cả ứng dụng web, mobile, desktop và giàu tính năng để đảm bảo đáp ứng với nhu cầu và hiệu quả trong thực tế.
- Khảo sát và thử nghiệm thực tế trong doanh nghiệp: Việc triển khai thử nghiệm tại môi trường thực tế của doanh nghiệp sẽ giúp kiểm chứng các giả thuyết ban đầu và phát hiện những điểm cần cải thiện. Đồng thời, khảo sát các giải pháp tương tự trên thị trường sẽ cung cấp thêm dữ liệu so sánh, giúp hoàn thiện sản phẩm phù hợp với nhu cầu thật sự của ngành phần mềm.


