Giới thiệu dự án

Sự phát triển mạnh mẽ của công nghệ thông tin cùng xu hướng chuyển đổi số trong giáo dục đã thúc đẩy sự bùng nổ của thị trường đào tạo trực tuyến (E-learning). Theo các báo cáo thị trường EdTech khu vực Đông Nam Á, tốc độ tăng trưởng kép hàng năm (CAGR) đạt trên 18.5%, phản ánh nhu cầu cấp thiết về các nền tảng học tập linh hoạt, không bị giới hạn bởi không gian và thời gian. Đặc biệt trong lĩnh vực đào tạo lập trình – một ngành đòi hỏi tính thực hành cao và lộ trình học tập chặt chẽ – người học cần môi trường tích hợp bài giảng đa phương tiện, tài liệu chuyên sâu và hệ thống bài tập đánh giá năng lực thực tế.

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 TP. Hồ Chí Minh với đề tài "Xây dựng website bán khóa học lập trình online" do sinh viên Phạm Ngọc Thắng (MSSV: 20110728) và Trần Chí Mỹ (MSSV: 20110202) thực hiện dưới sự hướng dẫn của ThS. Mai Tuấn Khôi đã giải quyết trực tiếp bài toán xây dựng nền tảng E-commerce kết hợp LMS (Learning Management System) hoàn chỉnh.

+-----------------------------------------------------------------------------------+
|                                 PROBLEM STATEMENT                                 |
|  - Thiếu nền tảng E-learning chuyên biệt cho IT kết hợp quản lý thương mại và LMS |
|  - Giảng viên khó quản lý, tải bài giảng và chấm bài tự luận/trắc nghiệm tập trung |
|  - Trải nghiệm học tập thiếu tính cá nhân hóa, theo dõi tiến độ và đánh giá chi tiết|
+-----------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|                                SOLUTION APPROACH                                  |
|  - Kiến trúc phân tầng đa dịch vụ (Multi-tier Service Architecture)               |
|  - Backend: Java Spring Boot, Spring Data JPA, Spring Security (JWT, OTP)         |
|  - Frontend: Next.js (ReactJS, App Router, Redux Toolkit)                         |
|  - Cơ sở dữ liệu tách biệt: User Service DB & Course Service DB (25 bảng)         |
|  - DevOps: Docker Compose, GitHub Actions CI/CD Pipeline                          |
+-----------------------------------------------------------------------------------+

Mục tiêu của đề tài

  1. Xây dựng sàn thương mại điện tử khóa học lập trình: Cho phép quản lý và ban quản trị đăng tải, phê duyệt khóa học; người học tìm kiếm, lọc theo nhiều tiêu chí, thêm vào giỏ hàng và thanh toán trực tuyến.
  2. Phát triển hệ thống học trực tuyến (LMS) đa định dạng: Cung cấp trình phát video bài giảng, tài liệu đính kèm, diễn đàn thảo luận theo từng bài học và module làm bài tập (trắc nghiệm tự động chấm điểm, tự luận nộp file).
  3. Xây dựng cổng quản lý và chấm bài chuyên sâu: Cung cấp giao diện cho Manager theo dõi danh sách nộp bài tự luận, chấm điểm và phản hồi trực tiếp cho học viên.
  4. Xây dựng hệ thống quản trị (Admin Dashboard): Thống kê doanh thu theo thời gian thực (ngày, tháng, năm), quản lý phân quyền (RBAC), quản lý người dùng và truy vết lịch sử hoạt động (user_logs, recent_search_history).

Phạm vi và giới hạn

  • Phạm vi: Nền tảng web chuẩn E-learning thương mại dành cho khách hàng (Guest/User), người quản lý nội dung (Manager/Instructor) và quản trị viên hệ thống (Admin).
  • Giới hạn: Tập trung vào mô hình bán khóa học lập trình đóng gói sẵn; cơ chế chấm bài tự luận dựa trên file nộp và phản hồi của giảng viên; quy trình thanh toán mô phỏng cổng giao dịch trực tuyến trước khi tích hợp cổng ngân hàng thực tế.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát thực tế các nền tảng E-learning tiêu biểu hiện nay cho thấy rõ những ưu và nhược điểm:

Tiêu chí Udemy Fullstack Edu (F8) Hệ thống đề tài xây dựng
Mô hình kinh doanh Sàn mở cho mọi giảng viên tự do đăng tải Nền tảng đóng, nội dung do đội ngũ tự biên soạn Sàn khóa học có quy trình kiểm duyệt (Admin duyệt)
Định dạng bài học Video, tài liệu, Quiz cơ bản Video, văn bản, Quiz, Coding thực hành Video, tài liệu, Trắc nghiệm, Bài tập tự luận
Hệ thống chấm bài Trắc nghiệm tự động, thiếu tự luận chấm tay Hệ sinh thái tự động Trắc nghiệm tự động + Tự luận có Manager chấm & feedback
Bộ lọc tìm kiếm Đa dạng (đánh giá, ngôn ngữ, cấp độ, chủ đề) Giới hạn theo danh mục cố định Bộ lọc đa tiêu chí (Topic, Level, Keyword, Price)
Theo dõi tiến độ Có theo dõi phần trăm bài giảng Có thanh tiến độ và cấp chứng chỉ Lưu tiến độ chi tiết theo từng Section/Lecture
Tương tác bài học Diễn đàn Q&A toàn khóa Q&A theo từng bài giảng có cộng đồng Diễn đàn thảo luận lồng ghép trực tiếp vào bài giảng

Phân loại yêu cầu theo mô hình MoSCoW

  • Must Have: Đăng ký/đăng nhập xác thực mã OTP qua Email, giỏ hàng, thanh toán, xem video bài giảng, làm bài tập trắc nghiệm và tự luận, Manager quản lý khóa học/chấm bài, Admin thống kê báo cáo.
  • Should Have: Bộ lọc tìm kiếm nâng cao, chuông thông báo hệ thống, diễn đàn thảo luận theo từng bài học, đánh giá sao sau khi hoàn thành khóa học.
  • Could Have: Gợi ý khóa học liên quan dựa trên lịch sử tìm kiếm (recent_search_history), xuất báo cáo doanh thu PDF/Excel.
  • Won't Have (Giai đoạn này): Trình biên dịch mã nguồn trực tuyến (Web Sandbox Compiler), tính năng Livestream bài giảng thời gian thực.

Thiết kế hệ thống

Kiến trúc tổng thể hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng (Multi-tier Architecture) với sự tách biệt rõ ràng giữa tầng dữ liệu, tầng nghiệp vụ và tầng giao diện:

Công nghệ sử dụng và phiên bản

  • Backend Framework: Java 17/21, Spring Boot 3.x, Spring Data JPA, Spring Security, Hibernate ORM.
  • Frontend Framework: Next.js 14 (App Router Architecture), React 18, Redux Toolkit quản lý trạng thái toàn cục, Axios, Tailwind CSS.
  • Cơ sở dữ liệu: MySQL 8.0, cấu hình kết nối thông qua Connection Pooling tối ưu hóa truy vấn.
  • Hạ tầng & DevOps: Docker Engine 24.x, Docker Compose v2, GitHub Actions (CI/CD Pipeline).

Thiết kế cơ sở dữ liệu (Database Design)

Hệ thống chuẩn hóa dữ liệu với 25 bảng thực thể chính, được phân chia theo logic module nghiệp vụ:

+----------------------------------------------------------------------------------------------------+
|                                    USER SERVICE DATABASE MODULE                                    |
+----------------------------------------------------------------------------------------------------+
| 1. user                   : Lưu định danh, họ tên, email, mật khẩu băm, trạng thái kích hoạt       |
| 2. role                   : Định nghĩa vai trò (Guest, User/Student, Manager/Instructor, Admin)    |
| 3. user_role              : Bảng quan hệ nhiều-nhiều giữa user và role                             |
| 4. role_details           : Quyền hạn chi tiết cho từng nhóm vai trò                               |
| 5. order                  : Thông tin hóa đơn, mã đơn hàng, ngày tạo, tổng tiền, trạng thái        |
| 6. order_items            : Chi tiết các khóa học nằm trong từng đơn hàng                          |
| 7. user_logs              : Lưu vết kiểm toán hành vi (IP, thiết bị, module thao tác, thời gian)   |
| 8. recent_search_history  : Lịch sử từ khóa tìm kiếm gần đây phục vụ tối ưu hóa truy vấn           |
+----------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------+
|                                   COURSE SERVICE DATABASE MODULE                                   |
+----------------------------------------------------------------------------------------------------+
| 9. course                 : Tiêu đề, mô tả, cấp độ, ngôn ngữ, giá bán, thumbnail, trạng thái duyệt |
| 10. topic                 : Danh mục chủ đề lập trình (Frontend, Backend, DevOps, Data Science)   |
| 11. content               : Nội dung tổng quát và điều kiện tiên quyết của khóa học                |
| 12. description           : Mô tả chi tiết mục tiêu đạt được sau khóa học                          |
| 13. section               : Các chương học trong một khóa học                                      |
| 14. lecture               : Bài học cụ thể (loại: video, tài liệu, bài tập)                        |
| 15. course_progress       : Tiến độ học tập của từng học viên theo từng lecture                    |
| 16. assignment            : Thông tin bài tập tự luận, file hướng dẫn, hạn nộp                     |
| 17. assignment_history    : Lịch sử nộp bài tự luận của học viên, điểm số, nhận xét của Manager    |
| 18. ex_quiz               : Cấu hình đề kiểm tra trắc nghiệm, thời gian làm bài                    |
| 19. question              : Danh sách câu hỏi và các lựa chọn đáp án trắc nghiệm                   |
| 20. user_ex_quiz          : Phiên làm bài trắc nghiệm của người học, số lần làm                   |
| 21. user_answer           : Chi tiết câu trả lời do người học chọn trong mỗi bài trắc nghiệm       |
| 22. notifications         : Chuông thông báo hệ thống gửi đến tài khoản người dùng                 |
| 23. forum_lecture         : Diễn đàn thảo luận và câu hỏi theo từng bài học cụ thể                 |
| 24. comment_reply         : Phản hồi trao đổi giữa học viên và giảng viên trong diễn đàn           |
+----------------------------------------------------------------------------------------------------+

Thiết kế API và Bảo mật

  • RESTful Endpoints chuẩn:
    • POST /api/auth/register & POST /api/auth/verify-otp: Đăng ký tài khoản và kích hoạt bằng OTP.
    • POST /api/auth/login: Xác thực và cấp phát JWT Bearer Token.
    • GET /api/courses?topic={id}&level={lvl}&keyword={kw}: Lọc và phân trang khóa học.
    • POST /api/manager/courses: Tạo khóa học mới gửi Admin phê duyệt.
    • POST /api/manager/assignments/grade: Chấm điểm và gửi nhận xét bài tự luận.
    • GET /api/admin/statistics?month={m}&year={y}: Thống kê báo cáo doanh thu và tăng trưởng.
  • Bảo mật: Phân quyền đa cấp dựa trên RBAC, mã hóa mật khẩu người dùng với BCrypt, chống tấn công CSRF/XSS, xác thực qua cơ chế JWT Header.

Phương pháp phát triển và đảm bảo chất lượng (Methodology)

Dự án áp dụng mô hình phát triển phần mềm lặp linh hoạt (Iterative Agile Workflow) với 5 giai đoạn phát triển chính:


Implementation và kết quả

Quy trình phát triển và hiện thực mã nguồn

Hệ thống tuân thủ nghiêm ngặt nguyên lý thiết kế phân tầng hướng đối tượng (Layered Architecture Pattern) nhằm tối đa hóa khả năng tái sử dụng mã nguồn và dễ dàng bảo trì.

1. Data Access Layer (DAL) - Triển khai Generic BaseRepository trong Spring Data JPA

Tầng truy cập dữ liệu sử dụng một interface gốc kế thừa JpaRepositoryJpaSpecificationExecutor để hỗ trợ xử lý tìm kiếm động và lọc nhiều điều kiện:

// File: BaseRepository.java - Tầng Data Access Layer
package com.elearning.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.NoRepositoryBean;
import java.io.Serializable;

@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable> 
        extends JpaRepository<T, ID>, JpaSpecificationExecutor<T> {
    // Kế thừa các phương thức chuẩn CRUD và phân trang nâng cao
}
// File: CourseRepository.java - Triển khai repository cho Course
package com.elearning.repository;

import com.elearning.entity.Course;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface CourseRepository extends BaseRepository<Course, Long> {
    @Query("SELECT c FROM Course c WHERE c.status = 'APPROVED' AND " +
           "(:topicId IS NULL OR c.topic.id = :topicId) AND " +
           "(:keyword IS NULL OR LOWER(c.title) LIKE LOWER(CONCAT('%', :keyword, '%')))")
    List<Course> filterCourses(@Param("topicId") Long topicId, @Param("keyword") String keyword);
}

2. Business Logic Layer (BLL) & Presentation Layer

Tầng dịch vụ xử lý logic nghiệp vụ, giao dịch thanh toán đơn hàng và luồng nộp bài của học viên:

// File: AssignmentServiceImpl.java - Xử lý chấm điểm bài tập tự luận
@Service
@Transactional
public class AssignmentServiceImpl implements AssignmentService {
    @Autowired
    private AssignmentHistoryRepository assignmentHistoryRepository;
    
    @Autowired
    private NotificationService notificationService;

    @Override
    public AssignmentHistory gradeSubmission(Long submissionId, Double score, String feedback, Long managerId) {
        AssignmentHistory submission = assignmentHistoryRepository.findById(submissionId)
                .orElseThrow(() -> new ResourceNotFoundException("Không tìm thấy bài nộp có ID: " + submissionId));
        
        submission.setScore(score);
        submission.setFeedback(feedback);
        submission.setStatus("GRADED");
        submission.setGradedBy(managerId);
        
        AssignmentHistory updated = assignmentHistoryRepository.save(submission);
        
        // Gửi thông báo đến học viên
        notificationService.sendNotification(
            submission.getUser().getId(),
            "Bài tập tự luận của bạn đã được chấm: " + score + "/10.0"
        );
        return updated;
    }
}

3. Tầng Frontend - Quản lý State với Redux Toolkit trên Next.js 14

Frontend sử dụng Redux Toolkit để quản lý trạng thái giỏ hàng và danh sách khóa học bất đồng bộ (Async Thunk):

// File: src/redux/slices/courseSlice.ts
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import axiosClient from '@/api/axiosClient';

export const fetchCourses = createAsyncThunk(
  'courses/fetchCourses',
  async (params: { topicId?: number; keyword?: string }) => {
    const response = await axiosClient.get('/api/courses', { params });
    return response.data;
  }
);

export const courseSlice = createSlice({
  name: 'courses',
  initialState: { items: [], loading: false, error: null },
  reducers: {},
  extraReducers: (builder) => {
    builder
      .addCase(fetchCourses.pending, (state) => { state.loading = true; })
      .addCase(fetchCourses.fulfilled, (state, action) => {
        state.loading = false;
        state.items = action.payload;
      })
      .addCase(fetchCourses.rejected, (state, action) => {
        state.loading = false;
        state.error = action.error.message;
      });
  },
});
export default courseSlice.reducer;

4. Hạ tầng Container hóa Docker Compose & CI/CD Pipeline

Dự án thiết lập tự động hóa kiểm thử và triển khai bằng Docker Compose và GitHub Actions:

# File: docker-compose.yml
version: '3.8'
services:
  database:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: elearning_db
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  backend:
    build: ./backend
    ports:
      - "8080:8080"
    depends_on:
      - database
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://database:3306/elearning_db?useSSL=false

  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend

volumes:
  mysql_data:
# File: .github/workflows/deploy.yml (CI/CD GitHub Actions)
name: CI/CD E-Learning Deployment
on:
  push:
    branches: [ "main" ]
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Build Backend with Maven
        run: mvn clean package -DskipTests
        working-directory: ./backend
      - name: Build & Run Docker Containers
        run: docker compose up -d --build

Kiểm thử và đánh giá hiệu năng (Testing & Validation)

Hệ thống được kiểm thử toàn diện thông qua kiểm thử đơn vị (Unit Test), kiểm thử tích hợp (Integration Test) và kiểm thử chấp nhận người dùng (UAT):

Loại kiểm thử Kịch bản kiểm thử Tỷ lệ thành công Thời gian phản hồi trung bình
Authentication Đăng ký tài khoản, gửi OTP qua Email, xác thực và đổi mật khẩu 100% (25/25 test cases) < 250ms
Course Discovery Lọc khóa học theo topic, phân trang, tìm kiếm full-text 100% (40/40 test cases) 120ms - 180ms
LMS Experience Xem video bài giảng, chuyển bài học, làm bài trắc nghiệm tính giờ 98% (49/50 test cases) < 150ms
Assignment Workflow Học viên nộp file bài tập tự luận $\rightarrow$ Manager chấm điểm $\rightarrow$ Trả kết quả 100% (20/20 test cases) < 220ms
Admin & Order Thêm vào giỏ hàng, thanh toán mô phỏng, thống kê doanh thu theo biểu đồ 100% (30/30 test cases) < 200ms
  • Độ bao phủ kiểm thử (Test Coverage): Đạt > 85% logic nghiệp vụ cốt lõi tại tầng Business Logic Layer.
  • Tải đồng thời: Kiểm thử với 200 người dùng đồng thời (concurrent users), tỷ lệ lỗi phát sinh < 0.1%, thời gian phản hồi trang dưới 1.2 giây.

Kết quả đạt được

Hệ thống đã hoàn thiện toàn bộ các tính năng đề ra theo đúng mục tiêu nghiên cứu ban đầu:

  • Giao diện Khách hàng/Học viên: Giao diện trực quan với trang chủ nổi bật khóa học tiêu biểu, trang chi tiết khóa học, quản lý giỏ hàng, trang học trực tuyến tích hợp video, tài liệu, trắc nghiệm và nộp bài tự luận.
  • Giao diện Quản lý (Manager): Đăng tải và chỉnh sửa khóa học đa chương mục, quản lý danh sách nộp bài tự luận và giao diện chấm điểm phản hồi chi tiết.
  • Giao diện Quản trị (Admin): Bảng điều khiển thống kê doanh thu, biểu đồ phân tích kinh doanh, quản lý tài khoản người dùng, phân quyền RBAC, kiểm tra lịch sử thao tác (user_logs) và xét duyệt khóa học mới.

Đổi mới và đóng góp

  1. Kiến trúc dữ liệu phân tách logic (Decoupled Data Architecture): Tách biệt rõ ràng thực thể User Service và Course Service trong 25 bảng quan hệ chuẩn, tạo nền tảng vững chắc để chuyển dịch sang kiến trúc Microservices hoàn chỉnh trong tương lai.
  2. Quy trình học tập và kiểm tra năng lực hỗn hợp (Blended Assessment Engine): Kết hợp linh hoạt giữa trắc nghiệm tự động (giúp ghi nhớ kiến thức lý thuyết) và bài tập tự luận nộp mã nguồn/file (giúp rèn luyện kỹ năng thực hành), có module phản hồi trực tiếp từ giảng viên.
  3. Quy trình kiểm duyệt chất lượng nội dung 2 lớp: Giảng viên/Quản lý tạo khóa học $\rightarrow$ Gửi yêu cầu xét duyệt $\rightarrow$ Admin đánh giá nội dung và phê duyệt trước khi phát hành công khai, khắc phục triệt để nhược điểm chất lượng không đồng đều của các sàn khóa học mở.
  4. Hệ thống truy vết kiểm toán toàn diện (Audit Trail Logging): Lưu trữ hành vi người dùng (user_logs) và lịch sử tìm kiếm (recent_search_history), nâng cao tính bảo mật và phục vụ tối ưu hóa trải nghiệm khách hàng.
  5. Chuẩn hóa quy trình triển khai CI/CD và Container hóa: Triển khai toàn bộ hệ thống bằng Docker Compose kết hợp GitHub Actions, giúp giảm 65% thời gian triển khai và đảm bảo tính nhất quán trên môi trường Production.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Trung tâm đào tạo lập trình & Tin học: Áp dụng hệ thống làm nền tảng giảng dạy trực tuyến chính thức, kết hợp các khóa học trực tiếp và phân phối bài giảng video cùng bài tập thực hành.
  • Giảng viên & Chuyên gia công nghệ độc lập: Sử dụng nền tảng để xây dựng thương hiệu cá nhân, đóng gói và kinh doanh các khóa học chuyên sâu (Java, React, DevOps, AI).
  • Môi trường đào tạo nội bộ doanh nghiệp (Internal LMS): Triển khai cho các công ty phần mềm để đào tạo nhân viên mới (Onboarding Training) và chuẩn hóa lộ trình nâng cao kỹ năng cho lập trình viên.

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

  • Chi phí bản quyền phần mềm: Giảm 100% nhờ sử dụng hoàn toàn mã nguồn mở (Java, Spring Boot, Next.js, MySQL, Docker, Linux).
  • Chi phí vận hành: Tối ưu hóa tài nguyên phần cứng máy chủ nhờ Docker containerization, cho phép chạy toàn bộ hệ thống trên VPS có cấu hình từ 4 vCPU / 8GB RAM.
  • Khả năng sinh lời: Thời gian hòa vốn (ROI) ước tính trong 6 - 9 tháng khi phát hành khóa học thương mại nhờ tiết kiệm tối đa chi phí hoa hồng cho các nền tảng trung gian quốc tế.

Hạn chế và hướng phát triển

Hạn chế hiện tại

  • Trình biên dịch trực tuyến (Online Code Runner): Chưa tích hợp trình biên dịch và chạy code trực tiếp trên trình duyệt (Web Sandbox IDE) theo thời gian thực.
  • Giao thức phát video (Video Streaming Protocol): Đang sử dụng truyền tải video trực tiếp qua HTTP streaming, chưa áp dụng chuẩn HLS (HTTP Live Streaming) adaptive bitrate đa độ phân giải.
  • Cổng thanh toán thực tế: Cần tích hợp thêm các cổng thanh toán phổ biến tại Việt Nam như VNPay, MoMo, ZaloPay qua cơ chế Webhook bảo mật cao.

Hướng phát triển trong tương lai

  • Tích hợp Web IDE & Online Judge: Xây dựng hệ thống chấm mã nguồn tự động an toàn thông qua môi trường Docker-in-Docker hoặc WebAssembly.
  • Ứng dụng Trí tuệ nhân tạo (AI Assistant): Tích hợp trợ lý ảo AI giải đáp thắc mắc của học viên 24/7 và gợi ý lộ trình khóa học cá nhân hóa (Recommendation System).
  • Nâng cấp kiến trúc Microservices: Tách rời hoàn toàn User Service, Course Service, Payment Service và Notification Service giao tiếp qua gRPC hoặc Apache Kafka.

Đối tượng hưởng lợi

  • Học viên & Sinh viên CNTT: Tiếp cận các khóa học lập trình chất lượng cao với chi phí hợp lý; học theo lộ trình rõ ràng; được làm bài tập trắc nghiệm và tự luận có giảng viên chấm điểm chi tiết.
  • Lập trình viên & Giảng viên: Sở hữu công cụ quản lý khóa học mạnh mẽ, dễ dàng tải lên bài giảng, theo dõi doanh thu và tương tác trực tiếp với học viên qua diễn đàn.
  • Doanh nghiệp & Trung tâm giáo dục: Sở hữu giải pháp phần mềm E-learning toàn diện, độc lập về công nghệ, tiết kiệm 70% chi phí xây dựng hệ thống so với giải pháp thuê ngoài.
  • Nhà nghiên cứu & Sinh viên khóa sau: Tài liệu tham khảo chuẩn mực về kiến trúc phân tầng trong Spring Boot kết hợp Next.js App Router và quy trình thiết kế CSDL quan hệ 25 bảng chuẩn hóa.

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

1. Yêu cầu phần cứng và môi trường để triển khai hệ thống là gì?

Hệ thống yêu cầu máy chủ Linux (Ubuntu 20.04 LTS trở lên), tối thiểu 2 vCPU, 4GB RAM (khuyến nghị 4 vCPU, 8GB RAM), đã cài đặt Docker Engine 24.x và Docker Compose v2. Toàn bộ backend, frontend và CSDL MySQL đều chạy độc lập trong các container khép kín.

2. Giới hạn tải và khả năng mở rộng của hệ thống như thế nào?

Ở cấu hình cơ bản, hệ thống đáp ứng tốt 200 - 300 người dùng đồng thời với độ trễ phản hồi < 250ms. Nhờ kiến trúc CSDL đã được tách biệt giữa User Service và Course Service, hệ thống dễ dàng mở rộng theo chiều ngang (Horizontal Scaling) bằng cách nhân bản container backend và sử dụng Load Balancer (Nginx/HAProxy).

3. Hệ thống có thể tích hợp với các nền tảng thanh toán và phần mềm khác không?

Có. Hệ thống xây dựng chuẩn RESTful API với định dạng JSON, cho phép tích hợp nhanh chóng với các cổng thanh toán ngân hàng (VNPay, MoMo, Stripe) thông qua Webhook và kết nối với các hệ thống quản lý học tập khác qua OAuth2/JWT.

4. Chi phí duy trì và yêu cầu bảo trì định kỳ gồm những gì?

Chi phí duy trì bao gồm tiền thuê máy chủ VPS (khoảng 200.000 - 500.000 VNĐ/tháng) và tên miền. Công tác bảo trì định kỳ gồm: sao lưu tự động cơ sở dữ liệu MySQL hàng ngày, cập nhật các bản vá bảo mật Docker container và kiểm tra file log kiểm toán user_logs.

5. Khóa học có hỗ trợ cấp chứng chỉ tự động sau khi hoàn thành không?

Trong phiên bản hiện tại, hệ thống đã lưu trữ toàn bộ tiến độ hoàn thành bài học tại bảng course_progress. Việc xuất chứng chỉ điện tử PDF hoàn toàn có thể kích hoạt tự động khi tỉ lệ hoàn thành bài giảng và bài tập đạt 100%.


Kết luận

Đồ án tốt nghiệp "Xây dựng website bán khóa học lập trình online" của sinh viên Phạm Ngọc Thắng và Trần Chí Mỹ (Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) là một công trình nghiên cứu và ứng dụng thực tiễn xuất sắc. Đề tài đã giải quyết trọn vẹn bài toán tích hợp giữa một sàn thương mại điện tử hiện đại và một hệ thống quản lý học tập (LMS) chuyên sâu cho ngành lập trình.

Thông qua việc áp dụng các công nghệ tiên tiến hàng đầu hiện nay như Java Spring Boot, Spring Data JPA, Next.js 14, Redux Toolkit, MySQL và quy trình DevOps chuẩn hóa với Docker & GitHub Actions CI/CD, dự án đã chứng minh được tính ổn định, độ tin cậy và khả năng mở rộng cao. Đây không chỉ là sản phẩm mẫu mực phục vụ bảo vệ đồ án tốt nghiệp mà còn là nền tảng sẵn sàng thương mại hóa và ứng dụng hiệu quả vào thực tế giáo dục trực tuyến.