Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh công nghệ thông tin phát triển nhanh chóng, phương thức học tập trực tuyến và tiếp cận kiến thức qua các video hướng dẫn đang trở thành xu hướng phổ biến. Tuy nhiên, theo khảo sát thực tế của các tác giả Lưu Tấn Phát và Nguyễn Công Phát trong khóa luận tốt nghiệp ngành Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, thị trường khóa học trực tuyến hiện nay đang đối mặt với nhiều bất cập. Các khóa học xuất hiện tràn lan, thiếu một quy chuẩn cụ thể dẫn đến tình trạng mất kiểm soát về chất lượng nội dung, thông tin cung cấp không đầy đủ, thiếu chính xác nhưng lại được bán với mức giá không tương xứng. Mặt khác, các diễn đàn trao đổi trực tuyến quy mô lớn tại Việt Nam như Spiderum, VozForum hay nền tảng quốc tế Medium chủ yếu tập trung vào chia sẻ bài viết dạng văn bản mà chưa khai thác sâu mảng chia sẻ và phân phối khóa học đa phương tiện. Xuất phát từ thực trạng đó, đề tài "Xây dựng hệ thống bán khóa học trực tuyến Easy Learning" được thực hiện nhằm xây dựng một nền tảng kết hợp giữa mô hình thương mại điện tử giáo dục và diễn đàn tương tác, tạo không gian kết nối trực tiếp giữa người dạy và người học.
Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể như sau:
- Xây dựng một ứng dụng học tập và phân phối khóa học trực tuyến tiện lợi, hỗ trợ người học dễ dàng tìm kiếm và tiếp cận các khóa học phù hợp với nhu cầu phát triển của bản thân.
- Thiết lập kênh kết nối hiệu quả giữa các chuyên gia, giảng viên trong từng lĩnh vực chuyên môn với cộng đồng người học.
- Nghiên cứu và áp dụng các công nghệ lập trình hiện đại nhằm hoàn thiện hệ thống quản trị, bảo mật và vận hành tối ưu chi phí.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Hành vi, nhu cầu học tập thực tế của người dùng trong nước và quốc tế; các giải pháp công nghệ phần mềm bao gồm Spring Framework, kiến trúc RESTful API, thư viện ReactJS, hệ quản trị cơ sở dữ liệu quan hệ MySQL, các giải pháp bảo mật phân quyền Spring Security và Spring OAuth.
- Phạm vi nghiên cứu: Tập trung xây dựng, phát triển và xử lý các quy trình nghiệp vụ cơ bản của hệ thống giáo dục trực tuyến đa nền tảng (giao diện web dành cho quản trị viên, chuyên gia, học viên và giao diện ứng dụng di động).
Cơ sở lý thuyết và phương pháp
Khóa luận áp dụng mô hình kiến trúc Client - Server để phân tách rõ ràng giữa tầng hiển thị và tầng xử lý nghiệp vụ trung tâm. Hệ thống phân chia các kênh trao đổi dữ liệu qua hai giao thức mạng:
- Giao thức HTTP: Đóng vai trò là phương thức giao tiếp chính cho các yêu cầu xử lý tài nguyên thông qua chuẩn RESTful API, truyền tải dữ liệu đa phương tiện (Media) và kết nối với dịch vụ xử lý video (
process-video-service). Dữ liệu trao đổi giữa máy khách và máy chủ được chuẩn hóa chủ yếu dưới định dạng JSON với các mã trạng thái tiêu chuẩn (200 OK, 201 Created, 204 No Content, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 422 Unprocessable Entity, 429 Too Many Requests). - Giao thức TCP: Được thiết lập cho các kênh kết nối hai chiều thời gian thực phục vụ chức năng trao đổi tin nhắn (Chat) và đẩy thông báo hệ thống (Notification).
Đối với phân hệ ứng dụng di động, nhóm tác giả nghiên cứu mô hình kiến trúc MVVM (Model - View - ViewModel) được khuyến nghị bởi Google Android Architecture Components, tận dụng cơ chế LiveData và Data Binding nhằm giải quyết bài toán về vòng đời ứng dụng và thay đổi cấu hình màn hình, tách biệt hoàn toàn mã điều khiển logic khỏi giao diện hiển thị.
Phương pháp nghiên cứu thực tế bao gồm:
- Phương pháp khảo sát hiện trạng: Khảo sát, phân tích cấu trúc tính năng và giao diện của hai nền tảng học trực tuyến tiêu biểu: F8 (Fullstack.edu.vn) tại thị trường Việt Nam (tập trung vào lộ trình học, trình phát video kèm hỏi đáp/ghi chú và hệ thống bài viết blog) và Udemy trên thị trường quốc tế (quy mô hơn 100.000 khóa học đa lĩnh vực, chính sách định giá linh hoạt, hỗ trợ đa thiết bị).
- Phương pháp mô hình hóa và thiết kế hệ thống: Sử dụng ngôn ngữ mô hình hóa UML để xây dựng sơ đồ ca sử dụng (Use Case Diagram), đặc tả chi tiết các ca sử dụng, thiết lập lược đồ tuần tự (Sequence Diagram), lược đồ quan hệ thực thể (ERD) và thiết kế giao diện đồ họa người dùng.
- Nguồn dữ liệu: Dữ liệu khảo sát từ các nền tảng thực tế kết hợp với các tài liệu kỹ thuật chuyên ngành về Spring Boot, ReactJS, RabbitMQ, MySQL và tài liệu kiến trúc phần mềm.
Thiết kế và triển khai
Hệ thống Easy Learning được tổ chức theo cấu trúc module hóa phân tán, phân chia các chức năng xử lý nặng độc lập với máy chủ web chính nhằm đảm bảo tính sẵn sàng cao và không gây nghẽn luồng xử lý.
| Thành phần hệ thống | Công nghệ / Nền tảng | Vai trò và chức năng kỹ thuật |
|---|---|---|
| Back-end Server | Java, Spring Boot, Spring Security, Spring OAuth | Cung cấp RESTful API, quản lý logic nghiệp vụ, xác thực JWT và phân quyền người dùng theo vai trò. |
| Front-end Web (CMS & Client) | JavaScript, ReactJS, Redux | Xây dựng giao diện trang quản trị CMS (booking-cms), cổng thông tin chuyên gia và trang học tập cho học viên. |
| Mobile Application | Kiến trúc MVVM, Android SDK | Cung cấp ứng dụng di động phục vụ học tập, theo dõi tiến độ, thanh toán và quản lý hồ sơ cá nhân. |
| Message Broker | RabbitMQ (Giao thức AMQP) | Tiếp nhận và điều phối hàng đợi tác vụ nền; định tuyến thông điệp qua các sàn giao dịch (Direct, Fanout, Topic, Headers Exchange). |
| Video Processing | process-video-service |
Dịch vụ xử lý, chuyển mã và nén video độc lập, nhận tác vụ xử lý thông qua hàng đợi RabbitMQ. |
| Database & Search | MySQL, Elasticsearch, Kibana | MySQL lưu trữ dữ liệu quan hệ có cấu trúc; Elasticsearch hỗ trợ lập chỉ mục và tìm kiếm nhanh; Kibana phục vụ quản trị và theo dõi. |
| Hạ tầng & CI/CD | Docker, Nginx Proxy Manager, GitLab CI/CD | Đóng gói ứng dụng thành các container, tự động hóa quy trình kiểm thử - triển khai và định tuyến proxy ngược. |
Cơ sở dữ liệu của Easy Learning được xây dựng trên hệ quản trị MySQL với tổng cộng 37 bảng quan hệ, bao quát toàn diện các nghiệp vụ từ quản trị người dùng, quản lý nội dung đa phiên bản đến tài chính:
- Nhóm quản lý người dùng và phân quyền:
account,group,permission,permission_group,nation,expert,student,expert_registration. - Nhóm danh mục và nội dung tin tức:
category,category_home,news. - Nhóm quản lý khóa học và bài học đa phiên bản:
course,version,course_versioning,course_review_history,course_combo_detail,course_combo_detail_version,lesson,lesson_versioning,review. Cơ chếversioningcho phép lưu trữ lịch sử thay đổi của từng bài học và khóa học trước khi được quản trị viên duyệt. - Nhóm bán hàng và giỏ hàng:
cart_item,course_retail,registration,completion,booking,promotion,promotion_code. - Nhóm tài chính, đối soát và hoa hồng:
course_transaction,revenue_share,seller_code_tracking,register_payout,register_period,wallet,wallet_transaction,monthly_period,monthly_period_detail. Cơ chế này cho phép theo dõi mã tiếp thị liên kết của chuyên gia, trích xuất tỷ lệ chia sẻ doanh thu và quản lý chu kỳ chi trả rút tiền hàng tháng.
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết
Chương 1 hệ thống hóa toàn bộ các nền tảng công nghệ, giao thức mạng và mô hình thiết kế được lựa chọn áp dụng trong đề tài:
- Kiến trúc hệ thống và giao thức: Phân tích mô hình Client - Server hai thành phần, cơ chế trao đổi dữ liệu thông qua giao thức HTTP (cho các API dữ liệu, nội dung đa phương tiện, xử lý video) và giao thức TCP (cho tương tác trực tiếp hai chiều như chat và thông báo).
- Nền tảng Back-end: Khái quát về Spring Boot, nêu bật các ưu điểm về tự động cấu hình (Auto-configuration), máy chủ nhúng tích hợp sẵn (Tomcat, Jetty, Undertow), quản lý gói phụ thuộc bằng Maven/Gradle và công cụ giám sát Spring Boot Actuator.
- Hệ quản trị cơ sở dữ liệu: Khảo sát đặc điểm của MySQL dạng server-based, cơ chế cấp quyền truy cập theo tài khoản người dùng và khả năng quản lý độc lập nhiều cơ sở dữ liệu.
- Nền tảng Front-end: Trình bày thư viện ReactJS, cơ chế hoạt động của DOM ảo (Virtual DOM), mô hình phát triển dựa trên thành phần (Component-Based), sự chuyển đổi từ Class Component sang Function Component kết hợp với React Hooks (
useState,useEffect,useReducer,useMemo,useCallback,useContext,useRef). Đồng thời, chương này làm rõ mô hình quản lý trạng thái tập trung Redux gồm ba thành phần chính: Actions (chứa dữ liệu tương tác trong payload), Reducers (hàm biến đổi nhận state hiện tại và action để sinh state mới) và Store duy nhất lưu trữ toàn bộ trạng thái ứng dụng. - Tiêu chuẩn thiết kế RESTful API: Phân tích các phương thức HTTP ứng với thao tác CRUD (GET - SELECT, POST - CREATE, PUT - UPDATE, DELETE - DELETE), định dạng dữ liệu trả về và bảng mã trạng thái HTTP tiêu chuẩn.
- Phần mềm quản lý hàng đợi RabbitMQ: Nêu rõ các khái niệm Producer, Consumer, Queue, Message, Connection, Channel, Exchange, Binding, Routing key, Vhost và phân tích 5 loại Exchange (Direct, Default, Fanout, Topic, Headers Exchange) nhằm đảm bảo hệ thống không bị tắc nghẽn khi nhận khối lượng lớn yêu cầu xử lý video đồng thời.
- Mô hình kiến trúc MVVM: Khái niệm Software Development Kit (SDK) và cấu trúc 3 tầng của MVVM (Model, View, ViewModel) trên ứng dụng di động, cơ chế đăng ký lắng nghe sự kiện giữa View và ViewModel nhằm tối ưu hóa vòng đời ứng dụng.
Chương 2: Khảo sát hiện trạng và mô hình hoá yêu cầu
Chương 2 tập trung phân tích thực trạng các hệ sinh thái học tập trực tuyến hiện hữu và mô hình hóa chi tiết các yêu cầu phần mềm của hệ thống Easy Learning:
- Khảo sát hệ thống tương tự: Đánh giá cấu trúc trang chủ, trang đăng nhập/đăng ký đa kênh qua mạng xã hội (Google, Facebook, GitHub), trang blog cộng đồng, giao diện xem chi tiết khóa học, trình phát video kèm mục ghi chú/hỏi đáp của F8; khảo sát kho tài nguyên hơn 100.000 khóa học đa lĩnh vực, cơ chế giảm giá khuyến mãi và tính năng học đa nền tảng của Udemy.
- Xác định yêu cầu hệ thống:
- Yêu cầu chức năng: Phân chia cụ thể cho ba nhóm đối tượng người dùng:
- Khách hàng / Học viên: Đăng ký, đăng nhập, đặt lại mật khẩu, xem và cập nhật thông tin cá nhân, mua hàng, xem chi tiết khóa học, xem nội dung bài học, theo dõi lịch sử khóa học.
- Quản trị viên (Admin): Quản lý khách hàng, quản lý học sinh, quản lý khóa học, quản lý chuyên gia, quản lý tin tức, quản lý cài đặt hệ thống, quản lý và phê duyệt các yêu cầu rút tiền.
- Chuyên gia (Giảng viên): Quản lý khóa học của bản thân, xem thống kê kinh doanh và số liệu học viên.
- Yêu cầu phi chức năng: Giao diện thân thiện trực quan, tốc độ xử lý thao tác nhanh chóng và chính xác, bảo mật an toàn thông tin, hệ thống có cấu trúc dễ bảo trì và mở rộng.
- Yêu cầu chức năng: Phân chia cụ thể cho ba nhóm đối tượng người dùng:
- Mô hình hóa yêu cầu (Use Case Specification): Thiết lập sơ đồ Use Case tổng quát và bảng đặc tả chi tiết từng ca sử dụng với đầy đủ thông tin: Mã Use Case, Tên, Mô tả, Tác nhân (Actor), Độ ưu tiên, Tiền điều kiện, Hậu điều kiện, Luồng cơ bản (Basic Flow), Luồng thay thế (Alternative Flow), Luồng ngoại lệ (Exception Flow) và Quy định nghiệp vụ:
- UC-1 (Đăng ký): Dành cho khách; bắt buộc không để trống dữ liệu, định dạng email chuẩn, số điện thoại hợp lệ, mật khẩu tối thiểu 6 ký tự.
- UC-2 (Đăng nhập): Dành cho Người dùng, Chuyên gia và Quản trị viên; xác thực bằng số điện thoại và mật khẩu có độ dài từ 6 ký tự trở lên.
- UC-3 (Đăng xuất): Hủy phiên làm việc và chuyển hướng về màn hình đăng nhập hoặc trang chủ.
- UC-4 (Tạo tài khoản): Dành riêng cho Quản trị viên khởi tạo tài khoản quản trị, giảng viên hoặc học viên.
- UC-4.1 (Phân quyền tài khoản): Quản trị viên gán các quyền hạn tương ứng vào nhóm tài khoản trên hệ thống.
- UC-5 (Chỉnh sửa thông tin cá nhân): Cho phép người dùng cập nhật hồ sơ cá nhân sau khi đã đăng nhập và được xác thực.
- Các Use Case khác trong mục lục: Đổi mật khẩu, xem danh sách tài khoản, xem danh sách khóa học, thêm/sửa/xóa khóa học, thêm/sửa bài học, duyệt bài học/khóa học, thanh toán.
Chương 3: Thiết kế phần mềm
Chương 3 trình bày các bản vẽ kỹ thuật chi tiết phục vụ việc hiện thực hóa phần mềm:
- Thiết kế hành vi (Lược đồ tuần tự): Xây dựng 8 lược đồ tuần tự mô tả chính xác tương tác giữa tác nhân, giao diện, bộ điều khiển và cơ sở dữ liệu cho các chức năng: Đăng nhập, Đăng ký, Xem thông tin người dùng, Thêm khóa học, Xóa khóa học, Duyệt khóa học, Thêm bài học, Xóa bài học.
- Thiết kế cấu trúc dữ liệu: Xây dựng lược đồ thực thể (ERD) và chi tiết hóa cấu trúc thuộc tính cho 37 bảng dữ liệu quan hệ trong MySQL. Thiết kế đặc biệt chú trọng các bảng quản lý lịch sử kiểm duyệt (
course_review_history), chia sẻ doanh thu (revenue_share), theo dõi mã tiếp thị (seller_code_tracking), ví điện tử (wallet,wallet_transaction) và chu kỳ thanh toán (register_period,monthly_period). - Thiết kế giao diện người dùng: Chi tiết hóa cấu trúc hiển thị thông qua các bảng mô tả và hình ảnh giao diện trải dài qua 4 phân hệ chính:
- Phân hệ Quản trị viên: Giao diện quản lý/thêm/sửa quản trị viên, quản lý chuyên gia nổi bật, duyệt yêu cầu đăng ký mới, quản lý học sinh, quản lý mã giới thiệu, danh sách khóa học chờ duyệt, quản lý rút tiền, chi tiết rút tiền, tổng kết tháng, danh mục khóa học và danh mục tin tức.
- Phân hệ Chuyên gia: Giao diện quản lý khóa học của tôi, thêm mới khóa học, chỉnh sửa nội dung, danh sách bài học và chi tiết khóa học.
- Phân hệ Ứng dụng Di động: 17 màn hình chức năng bao gồm màn hình chào đón (Welcome), đăng nhập, đăng ký, trang chủ, tìm kiếm, tiến trình học tập, thông báo, thông tin tài khoản, danh sách/chi tiết khóa học, đánh giá khóa học, giỏ hàng, thanh toán, chỉnh sửa thông tin và đổi mật khẩu.
- Phân hệ Web Người dùng: Giao diện trang chủ, thanh tìm kiếm, trang chi tiết khóa học, trang thông tin chuyên gia, giỏ hàng, thanh toán (xử lý trạng thái thành công/thất bại), khóa học của tôi, trình xem video bài học và đánh giá chất lượng.
Chương 4: Cài đặt ứng dụng và kiểm thử
Chương 4 mô tả quá trình thiết lập môi trường kỹ thuật, cấu hình các dịch vụ và triển khai hệ thống:
- Cấu hình môi trường dịch vụ: Hướng dẫn cấu hình kết nối giữa hệ thống với MySQL, Elasticsearch, Kibana và giao diện quản trị RabbitMQ Management (quản lý User, Virtual Host, Queue và Exchange).
- Cài đặt các thành phần mã nguồn:
- Hướng dẫn cấu hình và triển khai Back-end chính (Spring Boot).
- Cấu hình và khởi chạy dịch vụ xử lý video độc lập (
process-video-service). - Hướng dẫn cài đặt thư viện và chạy ứng dụng Front-end giao diện quản trị (
booking-cms).
- Triển khai hệ thống tự động hóa (CI/CD):
- Đóng gói toàn bộ các dịch vụ hệ thống thành các container chạy trên môi trường máy chủ thông qua Docker.
- Sử dụng Nginx Proxy Manager để thiết lập proxy ngược và quản lý danh sách các cổng dịch vụ.
- Xây dựng cấu hình quy trình GitLab CI/CD Pipeline để tự động hóa các bước kiểm tra, đóng gói và phát hành ứng dụng lên máy chủ vận hành.
Kết quả và đóng góp
Dựa trên các mục tiêu đã đề ra, khóa luận đã đạt được những kết quả kỹ thuật cụ thể:
- Hoàn thành thiết kế và phát triển toàn diện hệ thống bán khóa học trực tuyến Easy Learning trên cả hai nền tảng Web và Mobile, đáp ứng đầy đủ các quy trình nghiệp vụ cho ba nhóm tác nhân chính: Quản trị viên, Chuyên gia và Học viên.
- Xây dựng được mô hình cơ sở dữ liệu quan hệ quy mô 37 bảng với cơ chế phân phiên bản (
versioning) cho khóa học và bài học, hỗ trợ quy trình kiểm duyệt chất lượng nội dung trước khi xuất bản ra thị trường. - Hiện thực hóa thành công phân hệ quản lý tài chính giáo dục trực tuyến bao gồm hệ thống ví điện tử (
wallet), mã giới thiệu tiếp thị (seller_code_tracking), phân chia tỷ lệ doanh thu (revenue_share) và quản lý chu kỳ chi trả rút tiền hàng tháng (register_payout,monthly_period). - Triển khai thành công kiến trúc xử lý tách rời các tác vụ nặng: Tích hợp thành công RabbitMQ làm hàng đợi thông điệp để kết nối Back-end chính với dịch vụ xử lý video riêng biệt (
process-video-service), tránh nghẽn hệ thống. - Thiết lập quy trình vận hành và triển khai liên tục (CI/CD) thông qua GitLab Pipeline kết hợp Docker và Nginx Proxy Manager trên máy chủ thực tế.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận đã thẳng thắn chỉ ra các hạn chế hiện tại do giới hạn về mặt thời gian và phạm vi triển khai của đồ án sinh viên:
- Một số chức năng nâng cao vẫn còn ở dạng dang dở, chưa được hoàn thiện trọn vẹn trong phiên bản hiện tại.
- Các giải pháp vận hành thực tế và bài toán tối ưu hóa chi phí duy trì môi trường máy chủ vẫn cần tiếp tục được thử nghiệm và tinh chỉnh thêm để đạt hiệu quả kinh tế cao nhất khi đưa vào kinh doanh thực tế.
Các hướng phát triển tiếp theo được nhóm tác giả xác định gồm:
- Tiếp thu các đóng góp chuyên môn từ hội đồng giảng viên hướng dẫn và phản biện để hoàn thiện triệt để các tính năng nâng cao còn tồn đọng.
- Bổ sung và tích hợp các giải pháp trí tuệ nhân tạo (AI) vào nền tảng nhằm nâng cao trải nghiệm người dùng, hỗ trợ cá nhân hóa lộ trình học tập và tìm kiếm thông minh.
- Hoàn thiện các công đoạn kiểm thử toàn diện để tiến tới phát hành hệ thống Easy Learning vào môi trường ứng dụng thực tế trong đời sống.
Giá trị tham khảo
Báo cáo khóa luận tốt nghiệp của Lưu Tấn Phát và Nguyễn Công Phát là tài liệu tham khảo hữu ích cho sinh viên chuyên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và các nhà phát triển đang xây dựng các hệ sinh thái thương mại điện tử hoặc giáo dục trực tuyến (E-learning):
- Tham khảo thiết kế cơ sở dữ liệu E-learning chuyên sâu: Cung cấp mô hình 37 bảng chi tiết, đặc biệt là giải pháp thiết kế cho bài toán quản lý phiên bản nội dung học tập (
course_versioning,lesson_versioning) và bài toán chia sẻ doanh thu hoa hồng theo mã giới thiệu (revenue_share,seller_code_tracking). - Tham khảo kiến trúc phân tán với Message Broker: Cung cấp mô hình tham chiếu thực tế về việc sử dụng RabbitMQ để phân tách các tác vụ xử lý phương tiện truyền thông nặng (
process-video-service) ra khỏi máy chủ xử lý API nghiệp vụ thông thường. - Tham khảo quy trình triển khai DevOps: Cung cấp tài liệu cấu hình chi tiết cho quy trình tự động hóa GitLab CI/CD Pipeline kết hợp Docker và Nginx Proxy Manager trong môi trường triển khai thực tế.
Câu hỏi thường gặp
1. Hệ thống Easy Learning sử dụng các giao thức mạng nào để giao tiếp giữa máy khách (Client) và máy chủ (Server)?
Hệ thống sử dụng hai giao thức chính: Giao thức HTTP được dùng cho các yêu cầu qua chuẩn RESTful API, truyền tải dữ liệu truyền thông và giao tiếp với dịch vụ xử lý video (process-video-service); giao thức TCP được thiết lập riêng cho việc truyền tải thông tin hai chiều thời gian thực phục vụ chức năng nhắn tin (Chat) và thông báo (Notification).
2. Cơ sở dữ liệu của Easy Learning bao gồm bao nhiêu bảng và hỗ trợ những nghiệp vụ tài chính đặc thù nào?
Cơ sở dữ liệu của hệ thống gồm 37 bảng quan hệ trên MySQL. Hệ thống giải quyết các bài toán nghiệp vụ tài chính - đối soát phức tạp thông qua các bảng: course_transaction (ghi nhận giao dịch), revenue_share (chia sẻ doanh thu), seller_code_tracking (theo dõi mã tiếp thị liên kết), wallet và wallet_transaction (quản lý số dư ví), cùng register_payout, register_period, monthly_period và monthly_period_detail (quản lý yêu cầu rút tiền và chu kỳ tổng kết tháng).
3. Hàng đợi thông điệp RabbitMQ đóng vai trò gì trong kiến trúc kỹ thuật của hệ thống?
RabbitMQ đóng vai trò làm trung gian phân phối thông điệp (Message Broker) giữa máy chủ web chính và dịch vụ xử lý video (process-video-service). Khi lượng yêu cầu xử lý video từ người dùng tăng cao, RabbitMQ lưu trữ các thông điệp vào hàng đợi và chuyển tiếp tuần tự đến các worker xử lý nền, giúp hai tiến trình hoạt động độc lập và ngăn chặn tình trạng máy chủ chính bị khóa (locked) hoặc quá tải.
4. Khóa luận giải quyết bài toán kiểm soát chất lượng nội dung khóa học thông qua những cơ chế nào?
Để khắc phục tình trạng khóa học đăng tải tràn lan, hệ thống thiết kế cơ chế lưu trữ phiên bản nội dung (course_versioning, lesson_versioning) kết hợp với lịch sử kiểm duyệt (course_review_history). Khi chuyên gia tải lên hoặc chỉnh sửa bài học, nội dung phải trải qua ca sử dụng duyệt khóa học/bài học tại phân hệ Quản trị viên trước khi được công khai chính thức cho học viên đăng ký.
5. Quy trình CI/CD và triển khai thực tế của đề tài được cấu hình bằng những công cụ nào?
Hệ thống ứng dụng quy trình CI/CD tự động thông qua GitLab CI/CD Pipeline. Toàn bộ các dịch vụ thành phần (Back-end, dịch vụ video, Front-end, MySQL, RabbitMQ, Elasticsearch) được đóng gói và vận hành độc lập dưới dạng các container Docker trên máy chủ, đồng thời sử dụng Nginx Proxy Manager để quản lý proxy ngược và điều phối lưu lượng mạng đến từng cổng dịch vụ.
Kết luận
Khóa luận tốt nghiệp "Xây dựng hệ thống bán khóa học trực tuyến Easy Learning" của hai sinh viên Lưu Tấn Phát và Nguyễn Công Phát (Trường Đại học Sư phạm Kỹ thuật TP.HCM) đã giải quyết toàn diện bài toán xây dựng nền tảng học tập trực tuyến tích hợp cơ chế kiểm soát chất lượng nội dung và phân phối thương mại. Đề tài thể hiện khối lượng kỹ thuật lớn thông qua việc thiết kế cơ sở dữ liệu quan hệ 37 bảng, kết hợp hài hòa kiến trúc Client - Server đa nền tảng (Spring Boot, ReactJS, Android MVVM) với hệ thống hàng đợi RabbitMQ và quy trình triển khai tự động Docker/GitLab CI/CD. Dù còn một số tính năng nâng cao và yếu tố tối ưu chi phí cần tiếp tục hoàn thiện, công trình đã xây dựng thành công một mô hình kỹ thuật mẫu hoàn chỉnh, có giá trị học thuật và ứng dụng thực tiễn cao cho lĩnh vực công nghệ giáo dục.