CloudDoc là nền tảng hỗ trợ sinh viên HUTECH lưu trữ, tìm kiếm, chia sẻ và khai thác tài liệu học tập như giáo trình, slide, đề cương, bài tập và đề thi. Bài toán mà hệ thống hướng đến không chỉ là có nơi để tải file lên, mà là xây dựng một thư viện học liệu có cấu trúc, có kiểm duyệt và có khả năng mở rộng lâu dài.
Trong phạm vi thực tập, tôi tham gia chính ở mảng frontend, đồng thời hỗ trợ nhóm kết nối luồng giao diện với backend, metadata và hạ tầng AWS. Vì vậy, bản đề xuất này vừa phản ánh góc nhìn sản phẩm, vừa phản ánh tư duy kỹ thuật để đưa CloudDoc từ một đồ án học tập thành một hệ thống có thể triển khai trên cloud.
Điểm quan trọng của CloudDoc là hệ thống không được thiết kế như một website upload file đơn giản. Thay vào đó, kiến trúc được tách lớp rõ ràng giữa giao diện, logic nghiệp vụ, metadata tài liệu và object storage. Cách tiếp cận này giúp hệ thống dễ mở rộng hơn về hiệu năng, bảo mật và vận hành.
Trong môi trường học tập hiện nay, tài liệu thường bị phân tán trên Google Drive cá nhân, nhóm chat, link tạm thời hoặc thư mục nội bộ thiếu tổ chức. Điều này dẫn đến nhiều vấn đề:
Vấn đề hiện tại
Nếu xây dựng hệ thống theo mô hình đơn giản, nghĩa là toàn bộ upload và download đều đi qua application server, backend sẽ nhanh chóng trở thành nút nghẽn khi số lượng tài liệu và lưu lượng tăng. Ngoài ra, khi file và metadata không tách riêng, hệ thống khó mở rộng phần tìm kiếm, kiểm duyệt, preview và phân quyền.
Một vấn đề khác là nhiều hệ thống chỉ giải quyết phần lưu file, nhưng chưa giải quyết tốt phần khai thác tài liệu. Nếu không có metadata như trường, ngành, môn học, người đăng, trạng thái duyệt và lượt sử dụng, trải nghiệm tra cứu sẽ kém hiệu quả và dữ liệu sẽ dần trở nên lộn xộn.
Giải pháp đề xuất
CloudDoc được đề xuất theo cấu trúc sau:
Mấu chốt của giải pháp là cho frontend upload trực tiếp lên S3 bằng presigned URL, trong khi backend tập trung vào metadata và nghiệp vụ. Kiến trúc này phù hợp hơn cho một nền tảng tài liệu số có xu hướng tăng trưởng cả về dung lượng lẫn số lượng người dùng.
Kiến trúc dưới đây mô tả định hướng triển khai CloudDoc trên AWS với lớp phân phối nội dung, lớp ứng dụng, lớp dữ liệu và lớp giám sát vận hành:

Mô tả các thành phần chính
Ý nghĩa kiến trúc đối với CloudDoc
Kiến trúc này cho thấy CloudDoc không chỉ là bài tập giao diện, mà là một hệ thống có lớp phân phối nội dung, lớp xử lý ứng dụng, lớp dữ liệu giao dịch, lớp lưu trữ object và lớp giám sát. Đây là nền tảng cần thiết nếu dự án muốn phát triển tiếp sau kỳ thực tập.
Trong kỳ thực tập, nhóm tập trung vào những phần khả thi và bám sát codebase hiện có:
Điều này cũng có nghĩa là không phải mọi thành phần trong sơ đồ kiến trúc đều đã được triển khai đầy đủ 100%. Một số dịch vụ như SQS, CloudWatch, SNS hoặc Glacier hiện đóng vai trò định hướng mở rộng hợp lý hơn là phần đã hoàn thiện hoàn toàn. Việc trình bày rõ như vậy giúp báo cáo trung thực hơn với phạm vi thực tế.
Giai đoạn 1: Hoàn thiện sản phẩm lõi
Giai đoạn 2: Tích hợp cloud thực tế
Giai đoạn 3: Mở rộng hệ thống
Ảnh dưới đây là bản ước lượng chi phí tháng cho kiến trúc CloudDoc theo mô hình gần production, được tổng hợp từ AWS Pricing Calculator và xuất vào ngày 17/06/2026:

| Hạng mục | Chi phí ước tính / tháng (USD) | Ghi chú |
|---|---|---|
| RDS PostgreSQL Multi-AZ | 85.50 | Thành phần chiếm tỷ trọng lớn nhất vì ưu tiên tính sẵn sàng |
| EC2 Server (t4g.micro x2) | 19.51 | Hai máy ứng dụng ở hai AZ |
| Application Load Balancer | 18.98 | Phân phối tải và đảm bảo điểm vào thống nhất |
| NAT Instance (t4g.nano) | 4.64 | Hỗ trợ outbound traffic cho private subnet |
| CloudWatch | 4.01 | Metric, log và alarm cơ bản |
| Khác (SNS, CloudFront) | 0.89 | Chi phí nhỏ cho cảnh báo và phân phối nội dung |
| Tổng cộng | 133.53 | Mức chi phí tham chiếu cho kiến trúc định hướng |
Mức chi phí trên phù hợp hơn với một kiến trúc định hướng production hoặc demo hoàn chỉnh, không phải cấu hình tối thiểu cho môi trường học tập. Đối với giai đoạn thực tập hoặc thử nghiệm, nhóm có thể giảm chi phí bằng các cách sau:
| Rủi ro | Tác động | Cách giảm thiểu |
|---|---|---|
| Sai lệch giữa frontend, backend và luồng presigned URL | Upload lỗi, dữ liệu không đồng bộ | Chuẩn hóa API contract, test từng bước và test end-to-end trước khi demo |
| Metadata không nhất quán hoặc thiếu kiểm duyệt | Tìm kiếm kém hiệu quả, tài liệu lộn xộn | Định nghĩa metadata bắt buộc, thêm trạng thái duyệt và quy trình admin review |
| Cấu hình quyền truy cập AWS chưa chặt chẽ | Rò rỉ dữ liệu hoặc thao tác vượt quyền | Áp dụng IAM Role, Principle of Least Privilege và tránh hard-code key trong source code |
| Chi phí tăng cao nếu giữ kiến trúc lớn cho môi trường dev | Lãng phí ngân sách khi hệ thống chưa có tải thật | Phân tách môi trường dev/demo, giảm tài nguyên và theo dõi cost định kỳ |
| Thiếu quan sát vận hành khi hệ thống lỗi | Khó phát hiện và xử lý sự cố kịp thời | Thiết lập metric, log, CloudWatch Alarm và SNS notification cho các điểm quan trọng |
| Phạm vi thực tập không đủ để hoàn thiện toàn bộ kiến trúc | Báo cáo dễ bị hiểu là overclaim | Ghi rõ phần nào đã làm, phần nào là định hướng mở rộng và minh họa bằng roadmap |
CloudDoc mang lại giá trị ở cả ba góc độ:
Từ góc nhìn cá nhân, bản đề xuất này cũng phản ánh quá trình tôi chuyển từ suy nghĩ làm giao diện cho đẹp sang thiết kế trải nghiệm phải đi cùng luồng dữ liệu, bảo mật, chi phí và vận hành hệ thống. Đó là giá trị học tập lớn nhất mà CloudDoc mang lại cho tôi trong kỳ thực tập này.