Tổng quan nghiên cứu

Trong bối cảnh công nghệ thông tin phát triển nhanh chóng, nhu cầu về các hệ thống phần mềm có khả năng mở rộng, dễ bảo trì và tích hợp nhiều công nghệ ngày càng tăng cao. Đặc biệt, trong lĩnh vực giáo dục trực tuyến, việc xây dựng các ứng dụng thi trắc nghiệm trực tuyến với tính năng thời gian thực và khả năng mở rộng linh hoạt là một thách thức lớn. Theo ước tính, đại dịch Covid-19 đã thúc đẩy sự chuyển đổi mạnh mẽ sang hình thức thi trực tuyến, tạo ra nhu cầu cấp thiết về các nền tảng thi cử hiện đại, hiệu quả và thân thiện với người dùng.

Luận văn thạc sĩ “Phát triển ứng dụng thi trắc nghiệm trực tuyến dùng kiến trúc Microservices” tập trung nghiên cứu và phát triển một hệ thống thi trắc nghiệm trực tuyến ứng dụng kiến trúc Microservices, nhằm giải quyết các vấn đề về mở rộng, bảo trì và tích hợp công nghệ đa dạng. Mục tiêu cụ thể của nghiên cứu là xây dựng một hệ thống với các chức năng chính như tạo bộ đề thi, tạo phòng thi với hai chế độ thi bình thường và thi cạnh tranh, thống kê kết quả thi và xuất báo cáo dưới dạng file Excel. Phạm vi nghiên cứu tập trung vào việc áp dụng kiến trúc Microservices và các công nghệ hỗ trợ như .Net, NodeJS, Docker, Kubernetes, RabbitMQ, Socket.IO, MongoDB và PostgreSQL, trong khoảng thời gian thực hiện từ năm 2021 đến 2022 tại Đại học Cần Thơ.

Nghiên cứu có ý nghĩa quan trọng trong việc cung cấp một nền tảng thi trực tuyến hiện đại, đáp ứng nhu cầu giáo dục và giải trí lành mạnh cho học sinh, sinh viên, đồng thời làm tài liệu tham khảo cho các nhà phát triển phần mềm trong lĩnh vực giáo dục trực tuyến và kiến trúc Microservices.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết áp dụng

Kiến trúc Microservices là nền tảng lý thuyết chính của luận văn, được định nghĩa là mô hình thiết kế phần mềm chia hệ thống thành các dịch vụ nhỏ, độc lập, mỗi dịch vụ đảm nhiệm một nhóm chức năng riêng biệt và giao tiếp với nhau qua API. Đặc điểm nổi bật của Microservices bao gồm tính độc lập, tính chuyên biệt và tính bao đóng dữ liệu, giúp hệ thống dễ dàng mở rộng, bảo trì và phát triển. Các mẫu thiết kế Microservices được áp dụng gồm API Gateway, Service Discovery và Load Balancing nhằm tối ưu hóa giao tiếp và phân phối tải trong hệ thống.

Ngoài ra, các công nghệ hỗ trợ được nghiên cứu và ứng dụng bao gồm:

  • .Net Framework: cung cấp môi trường phát triển ứng dụng đa nền tảng với khả năng tương tác tốt với cơ sở dữ liệu quan hệ.
  • NodeJS và ExpressJS: môi trường và framework cho server-side JavaScript, hỗ trợ xử lý I/O bất đồng bộ, phù hợp cho các ứng dụng thời gian thực.
  • ReactJS: thư viện JavaScript xây dựng giao diện người dùng dạng SPA, giúp tạo các component tương tác cao.
  • Socket.IO: thư viện hỗ trợ giao tiếp thời gian thực, độ trễ thấp, giao tiếp hai chiều giữa client và server.
  • Docker và Kubernetes: công cụ quản lý container và tự động triển khai, mở rộng ứng dụng.
  • RabbitMQ: message broker hỗ trợ giao tiếp bất đồng bộ giữa các dịch vụ.
  • gRPC: framework RPC hiệu năng cao, sử dụng giao thức HTTP/2 và protobuf để tối ưu giao tiếp giữa các dịch vụ.
  • MongoDB và PostgreSQL: hệ quản trị cơ sở dữ liệu NoSQL và quan hệ, phục vụ lưu trữ dữ liệu linh hoạt và hiệu quả.

Các khái niệm chính được sử dụng trong nghiên cứu gồm: Microservices, API Gateway, Message Broker, Containerization, RPC, NoSQL, SQL, và các mô hình giao tiếp đồng bộ, bất đồng bộ.

Phương pháp nghiên cứu

Luận văn sử dụng phương pháp nghiên cứu kết hợp giữa nghiên cứu lý thuyết và thực nghiệm phát triển phần mềm. Nguồn dữ liệu chính bao gồm tài liệu chuyên ngành, các bài báo khoa học, tài liệu kỹ thuật về Microservices và các công nghệ liên quan, cùng với dữ liệu thực tế thu thập từ quá trình phát triển và kiểm thử hệ thống.

Phương pháp phân tích chủ yếu là phân tích thiết kế hệ thống, đánh giá hiệu năng và tính ổn định của hệ thống qua các kịch bản kiểm thử chức năng và phi chức năng. Cỡ mẫu nghiên cứu là toàn bộ các chức năng và thành phần của hệ thống thi trắc nghiệm trực tuyến được xây dựng, với các nhóm người dùng gồm Admin, người dùng khách và thành viên đã đăng ký.

Timeline nghiên cứu kéo dài trong khoảng 12 tháng, từ việc khảo sát tài liệu, thiết kế kiến trúc, phát triển từng module, đến kiểm thử và đánh giá kết quả. Quá trình phát triển áp dụng mô hình Microservices, sử dụng Docker và Kubernetes để triển khai, RabbitMQ cho giao tiếp bất đồng bộ, và gRPC cho giao tiếp đồng bộ giữa các dịch vụ.

Kết quả nghiên cứu và thảo luận

Những phát hiện chính

  1. Hiệu quả của kiến trúc Microservices trong phát triển hệ thống thi trực tuyến: Hệ thống được chia thành 4 dịch vụ chính (User Service, Auth Service, Exam Service, Exam Challenge Service) hoạt động độc lập, giúp tăng tính mô đun hóa và dễ dàng mở rộng. Qua kiểm thử, hệ thống duy trì ổn định khi một dịch vụ gặp sự cố, đảm bảo tính sẵn sàng cao.

  2. Tăng tốc giao tiếp giữa các dịch vụ nhờ gRPC: Việc sử dụng gRPC thay cho REST API truyền thống giúp giảm đáng kể thời gian phản hồi, tăng tốc độ giao tiếp lên khoảng 30-40%, đặc biệt trong các tác vụ yêu cầu đồng bộ như xác thực người dùng và truy xuất dữ liệu bài thi.

  3. Giao tiếp bất đồng bộ qua RabbitMQ nâng cao khả năng xử lý song song: Hệ thống xử lý các yêu cầu tạo phòng thi, mời người tham gia và tính điểm thi theo chế độ cạnh tranh một cách hiệu quả, giảm thiểu tình trạng nghẽn cổ chai khi có nhiều người dùng cùng thao tác đồng thời. Tỷ lệ thành công trong xử lý message đạt trên 95%.

  4. Ứng dụng Docker và Kubernetes giúp triển khai nhanh và mở rộng linh hoạt: Thời gian khởi động lại dịch vụ trung bình dưới 5 giây, giúp hệ thống có thể mở rộng theo nhu cầu người dùng tăng đột biến, đồng thời giảm thiểu thời gian bảo trì và cập nhật.

Thảo luận kết quả

Nguyên nhân chính của các kết quả tích cực trên là do kiến trúc Microservices cho phép phân tách rõ ràng các chức năng, giảm sự phụ thuộc giữa các thành phần, từ đó tăng tính ổn định và khả năng mở rộng. Việc kết hợp các công nghệ hiện đại như gRPC và RabbitMQ giúp tối ưu hóa giao tiếp giữa các dịch vụ, vừa đảm bảo tốc độ vừa duy trì tính bất đồng bộ cần thiết.

So sánh với các nghiên cứu trong ngành, hệ thống này có điểm tương đồng với các nền tảng thi trực tuyến lớn như Kahoot về mặt kiến trúc và tính năng thời gian thực, nhưng có ưu thế hơn về khả năng mở rộng và tích hợp đa công nghệ. Việc sử dụng Docker và Kubernetes cũng là xu hướng phổ biến trong phát triển phần mềm hiện đại, giúp giảm thiểu rủi ro khi triển khai và vận hành.

Dữ liệu có thể được trình bày qua biểu đồ thể hiện thời gian phản hồi của các dịch vụ khi sử dụng gRPC so với REST API, biểu đồ tỷ lệ thành công của các message qua RabbitMQ, và bảng thống kê thời gian khởi động lại dịch vụ khi sử dụng Docker và Kubernetes.

Đề xuất và khuyến nghị

  1. Triển khai mở rộng hệ thống theo mô hình Microservices: Khuyến nghị các trung tâm giáo dục và nhà phát triển phần mềm áp dụng kiến trúc Microservices để xây dựng các hệ thống thi trực tuyến, nhằm tăng tính linh hoạt và khả năng mở rộng. Thời gian thực hiện dự kiến 6-12 tháng, do các nhóm phát triển chuyên biệt đảm nhận.

  2. Tăng cường sử dụng giao tiếp bất đồng bộ qua Message Broker: Động viên sử dụng RabbitMQ hoặc các message broker tương tự để xử lý các tác vụ có tính chất song song và không đồng bộ, giúp giảm tải cho hệ thống và tăng hiệu suất xử lý. Chủ thể thực hiện là đội ngũ phát triển backend, trong vòng 3-6 tháng.

  3. Áp dụng công nghệ container và orchestration: Sử dụng Docker và Kubernetes để triển khai và quản lý hệ thống, giúp giảm thời gian bảo trì và nâng cao khả năng mở rộng tự động. Đề xuất đào tạo kỹ thuật cho đội ngũ vận hành trong 3 tháng đầu triển khai.

  4. Phát triển thêm các tính năng hỗ trợ người dùng và bảo mật: Nâng cao trải nghiệm người dùng bằng cách bổ sung các tính năng như thông báo thời gian thực, hỗ trợ đa nền tảng, và tăng cường bảo mật dữ liệu người dùng. Thời gian phát triển dự kiến 6 tháng, do nhóm phát triển frontend và backend phối hợp thực hiện.

Đối tượng nên tham khảo luận văn

  1. Nhà phát triển phần mềm và kỹ sư hệ thống: Luận văn cung cấp kiến thức thực tiễn về thiết kế và triển khai hệ thống Microservices, giúp họ áp dụng hiệu quả trong các dự án phần mềm quy mô lớn.

  2. Giảng viên và sinh viên ngành Công nghệ thông tin: Tài liệu tham khảo hữu ích cho việc nghiên cứu, học tập về kiến trúc phần mềm hiện đại, các công nghệ hỗ trợ và phát triển ứng dụng web thời gian thực.

  3. Các trung tâm giáo dục và tổ chức đào tạo trực tuyến: Có thể áp dụng kết quả nghiên cứu để xây dựng hoặc nâng cấp hệ thống thi trực tuyến, đáp ứng nhu cầu kiểm tra, đánh giá học sinh, sinh viên trong môi trường số.

  4. Nhà quản lý dự án công nghệ thông tin: Hiểu rõ hơn về lợi ích và thách thức khi áp dụng kiến trúc Microservices, từ đó đưa ra các quyết định chiến lược phù hợp cho dự án phát triển phần mềm.

Câu hỏi thường gặp

  1. Microservices là gì và tại sao nên sử dụng trong phát triển hệ thống thi trực tuyến?
    Microservices là kiến trúc phần mềm chia hệ thống thành các dịch vụ nhỏ, độc lập, giúp tăng tính mở rộng và dễ bảo trì. Trong thi trực tuyến, Microservices giúp xử lý đồng thời nhiều người dùng, giảm thiểu rủi ro khi một phần hệ thống gặp sự cố.

  2. Làm thế nào để đảm bảo giao tiếp hiệu quả giữa các dịch vụ Microservices?
    Sử dụng các giao thức như gRPC cho giao tiếp đồng bộ và RabbitMQ cho giao tiếp bất đồng bộ giúp tối ưu tốc độ và độ tin cậy trong truyền tải dữ liệu giữa các dịch vụ.

  3. Tại sao lại sử dụng Docker và Kubernetes trong hệ thống này?
    Docker giúp đóng gói ứng dụng và môi trường chạy thành container, dễ dàng triển khai trên nhiều nền tảng. Kubernetes quản lý và tự động mở rộng các container, giúp hệ thống vận hành ổn định và linh hoạt.

  4. Hệ thống có hỗ trợ tính năng thi cạnh tranh như thế nào?
    Hệ thống cho phép nhiều người cùng tham gia thi trong một phòng thi, với chế độ thi cạnh tranh tính điểm cho người trả lời đúng nhanh nhất, tạo sự hấp dẫn và tương tác cao.

  5. Làm sao để xuất kết quả thi ra file Excel?
    Hệ thống cung cấp chức năng xuất thống kê điểm thi dưới dạng file Excel, giúp người dùng dễ dàng lưu trữ và phân tích kết quả thi một cách thuận tiện.

Kết luận

  • Kiến trúc Microservices giúp xây dựng hệ thống thi trắc nghiệm trực tuyến có tính mở rộng, dễ bảo trì và tích hợp đa công nghệ.
  • Việc sử dụng gRPC và RabbitMQ tối ưu hóa giao tiếp giữa các dịch vụ, nâng cao hiệu suất và độ tin cậy.
  • Docker và Kubernetes hỗ trợ triển khai nhanh, quản lý hiệu quả và mở rộng linh hoạt hệ thống.
  • Hệ thống đáp ứng đầy đủ các chức năng thiết yếu như tạo đề thi, phòng thi, thi cạnh tranh, thống kê và xuất báo cáo.
  • Hướng phát triển tiếp theo là mở rộng tính năng, nâng cao bảo mật và cải thiện trải nghiệm người dùng.

Để tiếp tục phát triển và ứng dụng hệ thống, các nhà phát triển và tổ chức giáo dục nên bắt đầu triển khai thử nghiệm trong môi trường thực tế, đồng thời đào tạo đội ngũ vận hành và bảo trì. Hãy liên hệ để nhận tư vấn chi tiết và hỗ trợ kỹ thuật trong việc áp dụng kiến trúc Microservices cho các dự án phần mềm giáo dục trực tuyến.