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 mạnh mẽ, mạng xã hội đã trở thành công cụ thiết yếu phục vụ nhu cầu liên lạc, cập nhật tin tức, giải trí và duy trì các mối quan hệ xã hội. Nhận thấy sự phổ biến của các nền tảng quốc tế và nội địa, nhóm tác giả Trịnh Xuân Phương và Phan Nguyễn Chu Kiệt (Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh) đã thực hiện đề tài khóa luận tốt nghiệp nhằm nghiên cứu, xây dựng một website mạng xã hội hướng tới sự thân thiện và tiện ích cho người dùng Việt Nam.

Mục tiêu nghiên cứu của đề tài được xác định cụ thể gồm 4 nhiệm vụ:

  1. Tạo lập một website mạng xã hội có giao diện trực quan, hấp dẫn và thân thiện với người dùng.
  2. Xây dựng và hoàn thiện các chức năng tương tác cốt lõi bao gồm: đăng bài viết, hình ảnh, bình luận, bày tỏ cảm xúc, kết bạn và nhắn tin.
  3. Đáp ứng đầy đủ các yêu cầu nghiệp vụ của một mạng xã hội hiện đại như tìm kiếm người dùng/bài viết, tạo và quản lý bài đăng, nhắn tin cá nhân và nhắn tin nhóm theo thời gian thực.
  4. Đảm bảo khả năng chịu tải và khả năng mở rộng của hệ thống khi quy mô người dùng tăng trưởng trong tương lai.

Đối tượng và phạm vi nghiên cứu của đồ án bao gồm:

  • Đối tượng nghiên cứu: Các quy trình nghiệp vụ cơ bản của mạng xã hội (xác thực, quản lý bạn bè, trao đổi tin nhắn, bảng tin, thông báo); hệ quản trị cơ sở dữ liệu NoSQL (MongoDB); nền tảng Node.js, framework Express.js cho hệ thống API; framework Next.js cho giao diện web; thư viện Socket.io xử lý giao tiếp thời gian thực; và Redis phục vụ tối ưu hóa bộ nhớ đệm (cache).
  • Phạm vi chức năng: Tập trung vào 3 phân hệ chính gồm tương tác người dùng (kết bạn, nhắn tin, quản lý bảng tin), quản lý tài khoản người dùng (đăng ký, đăng nhập, đổi/quên mật khẩu, phân quyền) và quản lý nội dung (bài viết, bình luận, album bộ sưu tập, báo cáo vi phạm).
  • Phạm vi thời gian: Đề tài được triển khai thực hiện từ ngày 14/02/2024 đến ngày 10/07/2024.

Cơ sở lý thuyết và phương pháp

Đồ án áp dụng phương pháp thiết kế và phát triển phần mềm theo mô hình hướng đối tượng kết hợp kiến trúc dịch vụ phân tách giữa Client và Server.

Phương pháp nghiên cứu thực tế bao gồm:

  1. Khảo sát và phân tích hiện trạng: Khảo sát các nền tảng mạng xã hội đang hoạt động tại Việt Nam để phân tích ưu điểm, nhược điểm, từ đó xác định yêu cầu bài toán.
  2. 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ơ đồ phân rã chức năng, sơ đồ Use-Case (tổng quan và chi tiết cho từng tác nhân), sơ đồ tuần tự (Sequence Diagram), sơ đồ lớp (Class Diagram) và sơ đồ cơ sở dữ liệu (Database Diagram).
  3. Thực nghiệm và kiểm thử phần mềm: Cài đặt triển khai trên máy chủ đám mây, thực hiện kiểm thử chức năng theo các kịch bản định trước.
Ứng dụng khảo sát Ưu điểm theo ghi nhận trong đồ án Nhược điểm theo ghi nhận trong đồ án
Zalo Phổ biến tại Việt Nam, dễ sử dụng cho nhiều độ tuổi; hỗ trợ tìm kiếm bạn bè qua số điện thoại/QR; tính riêng tư cao (chỉ bạn bè mới xem được bài đăng). Tập trung nhiều vào tính năng nghe gọi nhắn tin hơn là mạng xã hội kết nối rộng rãi; sao lưu thủ công dễ mất dữ liệu khi đổi thiết bị; một số tính năng bắt đầu thu phí.
Zing Me (Quy mô 12 triệu người dùng của VNG) Tích hợp nhiều nội dung giải trí (âm nhạc, video, trò chơi trực tuyến); kết nối tốt cộng đồng game thủ; liên kết hệ sinh thái VNG (Zing MP3, Zing TV). Giao diện tương đối phức tạp đối với người dùng mới; tồn tại lo ngại về bảo mật thông tin cá nhân.
Tinhte.vn Nền tảng chuyên sâu về công nghệ và đánh giá sản phẩm; cộng đồng chia sẻ kiến thức chuyên môn chất lượng cao; cập nhật xu hướng công nghệ liên tục. Phạm vi nội dung hẹp, ít thu hút người không quan tâm công nghệ; giao diện còn khó sử dụng và chưa thật sự thân thiện.

Thiết kế và triển khai

Hệ thống được xây dựng theo mô hình Client-Server độc lập, giao tiếp thông qua giao thức HTTP (RESTful API) và WebSocket (giao tiếp hai chiều thời gian thực).

1. Kiến trúc công nghệ (Tech Stack)

  • Frontend (Giao diện người dùng): Sử dụng Next.js để xây dựng giao diện tương tác, tối ưu hóa cấu trúc thành phần (component reusability) như UserAvatar, danh sách bạn bè, hỗ trợ cấu trúc điều hướng theo từng trang và tab chức năng.
  • Backend (Máy chủ ứng dụng): Sử dụng Node.js kết hợp Express.js để xây dựng RESTful APIs, lắng nghe trên cổng 8000. Hệ thống sử dụng cơ chế định tuyến phân tầng và tích hợp Middleware kiểm tra, xác thực mã khóa JWT (JSON Web Token) cho các yêu cầu cần phân quyền.
  • Realtime (Giao tiếp thời gian thực): Sử dụng Socket.io thiết lập kết nối giữa Client và Server nhằm phát các sự kiện: gửi/nhận tin nhắn tức thì, thông báo bài viết có bình luận mới, thông báo thả cảm xúc bình luận và thông báo chấp nhận lời mời kết bạn.
  • Cơ sở dữ liệu & Bộ nhớ đệm: Hệ quản trị cơ sở dữ liệu MongoDB (sử dụng MongoDB Compass để quản lý) kết hợp bộ nhớ đệm Redis nhằm tối ưu hiệu năng truy xuất dữ liệu.

2. Thiết kế cơ sở dữ liệu

Hệ thống thiết kế 12 bảng/bộ sưu tập (collections) chính để lưu trữ dữ liệu:

  • User: Lưu trữ thông tin tài khoản, thông tin cá nhân, ảnh đại diện, trạng thái tài khoản.
  • Posts: Lưu nội dung bài đăng, danh sách hình ảnh đính kèm, quyền riêng tư và thời gian tạo.
  • Roles: Lưu thông tin các vai trò và quyền hạn trong hệ thống (User, Admin).
  • Notification: Lưu trữ thông tin thông báo, người nhận, loại thông báo và trạng thái đã đọc.
  • Files: Quản lý siêu dữ liệu (metadata) của các tập tin, hình ảnh được tải lên.
  • Messages: Lưu trữ nội dung tin nhắn, người gửi, người nhận/kênh trò chuyện và trạng thái tin nhắn.
  • Token: Quản lý các mã xác thực JWT, token phục vụ đổi/đặt lại mật khẩu.
  • Comment / Comments: Lưu trữ dữ liệu bình luận, liên kết giữa bài viết và người dùng.
  • Albums: Quản lý bộ sưu tập hình ảnh cá nhân của từng tài khoản người dùng.
  • Denounces: Lưu trữ các báo cáo vi phạm bài viết hoặc người dùng gửi về cho Admin.
  • Reacts: Quản lý lượt bày tỏ cảm xúc đối với bài viết và bình luận.

3. Môi trường triển khai

Hệ thống được đưa vào vận hành thực tế thông qua các bước:

  • Khởi tạo máy ảo (Virtual Machine) trên hạ tầng Google Cloud VM, kết nối quản trị qua giao thức SSH.
  • Cấu hình mở các cổng mạng cho phép lưu lượng truy cập từ bên ngoài.
  • Thiết lập các dịch vụ hệ thống (services) chạy ngầm độc lập cho 3 thành phần: service chạy Backend API, service chạy ứng dụng Client và service chạy giao diện Admin.
  • Cài đặt và cấu hình máy chủ Nginx đóng vai trò làm Reverse Proxy để điều phối các yêu cầu từ internet vào các dịch vụ nội bộ tương ứng.

Nội dung chính theo từng chương

CHƯƠNG 1. Giới thiệu về đề tài

Trình bày tổng quan về tầm quan trọng của mạng xã hội trong đời sống số. Tác giả nêu bật lý do nghiên cứu, xác định 4 mục tiêu cụ thể, 3 nhóm đối tượng nghiên cứu (nghiệp vụ mạng xã hội, công nghệ web hiện đại, giải pháp cơ sở dữ liệu và realtime), phạm vi thực hiện chức năng và phân tích ý nghĩa khoa học - thực tiễn của đề tài trong việc làm tài liệu học tập, nghiên cứu công nghệ phần mềm.

CHƯƠNG 2. KHẢO SÁT HIỆN TRẠNG

Phân tích hiện trạng thị trường thông qua việc đánh giá ưu điểm và hạn chế của 3 nền tảng: Zalo, Zing Me (12 triệu người dùng) và Tinhte.vn. Từ kết quả khảo sát, tác giả rút ra yêu cầu cốt lõi của bài toán là tập trung vào trải nghiệm trực quan, dễ sử dụng, tích hợp đầy đủ tương tác xã hội (chia sẻ nội dung, trò chuyện nhóm) đồng thời chú trọng bảo mật thông tin và tùy chỉnh quyền riêng tư cá nhân.

CHƯƠNG 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Trình bày chi tiết các yêu cầu chức năng (quản lý tài khoản, bạn bè, kênh trò chuyện, bài viết, hoạt động, thông báo) và phi chức năng (giao diện, tốc độ xử lý, an toàn dữ liệu). Xác định 3 nhóm tác nhân (Actor): Admin, User, Guest cùng danh mục 36 Use-Case chính. Chương này cung cấp hệ thống sơ đồ phân rã chức năng, các sơ đồ Use-Case tổng quan/chi tiết, sơ đồ tuần tự (Sequence Diagram) cho các luồng nghiệp vụ (đăng ký, đăng nhập, đăng xuất, quên mật khẩu, quản lý bạn bè, tìm kiếm, nhắn tin, quản lý tài khoản) và thiết kế chi tiết 12 bảng cơ sở dữ liệu.

CHƯƠNG 4. KIẾN TRÚC HỆ THỐNG VÀ CÁC CÔNG NGHỆ SỬ DỤNG

Trình bày kiến trúc tổng thể của hệ thống và cách thức triển khai từng công nghệ: cách xây dựng và tái sử dụng component giao diện trên Next.js (như component UserAvatar); cấu trúc thư mục mã nguồn; cài đặt RESTful API trên Express.js chạy tại cổng 8000; cơ chế Middleware xác thực JWT; kết nối cơ sở dữ liệu MongoDB; thiết lập các sự kiện gửi thông báo/tin nhắn qua Socket.io; quy trình thiết lập máy ảo Google Cloud VM và cấu hình Reverse Proxy Nginx để đưa website lên internet.

CHƯƠNG 5. THIẾT KẾ GIAO DIỆN

Mô tả chi tiết cấu trúc giao diện người dùng và giao diện quản trị:

  • Phân hệ người dùng (User): Gồm trang đăng nhập, luồng đăng ký tài khoản 3 bước, quên mật khẩu, đặt lại mật khẩu, trang chủ (bảng tin); trang bạn bè chia làm 4 tab (Tab bạn bè, Tab lời mời kết bạn, Tab gợi ý kết bạn, Tab tất cả); trang nhắn tin; trang cá nhân bao gồm 6 tab (Tab bài viết, Tab bạn bè, Tab thông tin, Tab bộ sưu tập, Tab hoạt động, Tab bảo mật).
  • Phân hệ quản trị (Admin): Gồm trang đăng nhập admin, trang chủ dashboard thống kê, trang danh sách người dùng (kèm tab thông tin và tab lịch sử hoạt động), trang danh sách quản trị viên, trang danh sách báo cáo vi phạm và trang chi tiết xử lý báo cáo.

CHƯƠNG 6. KIỂM THỬ PHẦN MỀM

Đặc tả môi trường cài đặt phần mềm, yêu cầu hệ thống và kế hoạch kiểm thử chức năng (Bảng 6-1). Chương này tổng hợp kết quả kiểm thử thực tế (Bảng 6-2) trên hệ thống đã được triển khai công khai, xác nhận các luồng nghiệp vụ từ đăng ký, đăng nhập, kết bạn, nhắn tin, đăng bài đến phân quyền quản trị đều đáp ứng các tiêu chuẩn hoạt động dự kiến.

CHƯƠNG 7. KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN

Tổng kết các kết quả đạt được về mặt sản phẩm phần mềm, chỉ ra các điểm còn tồn tại của hệ thống và đề xuất 4 định hướng mở rộng chức năng trong tương lai.


Kết quả và đóng góp

1. Kết quả chính đạt được

  • Xây dựng hoàn chỉnh website mạng xã hội hoạt động trên môi trường web với đầy đủ 2 phân hệ: Người dùng (User/Guest) và Quản trị viên (Admin).
  • Thiết lập hệ thống Backend với đầy đủ các API phục vụ quản lý người dùng, quản lý bài viết, tương tác bình luận, cảm xúc (Reacts) và xử lý thông báo.
  • Hiện thực hóa thành công kênh trò chuyện trực tiếp và thông báo thời gian thực thông qua giải pháp Socket.io.
  • Triển khai thành công toàn bộ hệ thống lên hạ tầng đám mây Google Cloud VM thông qua máy chủ Nginx, đảm bảo khả năng truy cập trực tuyến.

2. Giải pháp và đề xuất kỹ thuật

  • Tách biệt hoàn toàn tầng giao diện (Next.js) và tầng xử lý nghiệp vụ (Node.js/Express.js) giúp tăng tính mô-đun hóa và thuận tiện cho bảo trì.
  • Kết hợp JWT với Express Middleware nhằm kiểm soát truy cập và bảo vệ các điểm cuối API nhạy cảm.
  • Ứng dụng mô hình sự kiện thời gian thực để nâng cao trải nghiệm giao tiếp tức thì giữa các người dùng trong mạng xã hội.

3. Đóng góp của đề tài

  • Đóng góp một giải pháp xây dựng mạng xã hội hoàn chỉnh sử dụng hệ sinh thái JavaScript/TypeScript hiện đại (Next.js, Node.js, Express, MongoDB, Socket.io).
  • Cung cấp tài liệu phân tích thiết kế hệ thống chi tiết (UML, Database Schema, Sequence Diagrams) làm tài liệu tham khảo cho sinh viên chuyên ngành Công nghệ phần mềm.

Hạn chế và hướng nghiên cứu tiếp

1. Hạn chế

Theo trình bày trong văn bản khóa luận, hệ thống vẫn còn một số điểm cần tiếp tục hoàn thiện về mặt tối ưu hóa hiệu năng tải trang cũng như mở rộng khả năng hiển thị tương thích mượt mà trên tất cả các loại thiết bị di động.

2. Hướng nghiên cứu và phát triển tiếp

Đồ án vạch ra 4 hướng mở rộng cụ thể cho hệ thống:

  1. Tính năng bán hàng trực tuyến (E-commerce): Bổ sung chức năng cho phép người dùng mở cửa hàng cá nhân, đăng bán sản phẩm, quản lý đơn hàng và tích hợp cổng thanh toán trực tuyến.
  2. Tính năng Livestream: Phát triển khả năng phát video trực tiếp từ camera thiết bị, hỗ trợ người xem tương tác, bình luận, gửi quà tặng và tham gia các sự kiện trực tuyến.
  3. Tính năng Reels Video và Story: Xây dựng công cụ tạo và chia sẻ nhanh các video ngắn, hình ảnh khoảnh khắc kèm các tiện ích chỉnh sửa nội dung.
  4. Tối ưu hóa giao diện đa nền tảng (Responsive): Hoàn thiện thiết kế giao diện tương thích hoàn toàn trên các độ phân giải màn hình khác nhau của điện thoại di động và máy tính bảng.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo phù hợp cho:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Tham khảo quy trình phân tích thiết kế hệ thống thông tin từ bước khảo sát hiện trạng, xây dựng Use-Case, vẽ lược đồ tuần tự đến thiết kế cơ sở dữ liệu MongoDB.
  • Lập trình viên phát triển ứng dụng Web Full-Stack: Tham khảo mô hình kết hợp giữa Next.js và Express.js, phương thức tích hợp xác thực JWT qua Middleware, cách tổ chức sự kiện Socket.io cho bài toán Chat/Thông báo và kỹ thuật triển khai ứng dụng thực tế trên Google Cloud VM với Nginx.

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

1. Hệ thống mạng xã hội trong đồ án sử dụng kiến trúc và công nghệ nền tảng nào?

Hệ thống được xây dựng theo kiến trúc Client-Server phân tách. Giao diện người dùng sử dụng Next.js, máy chủ API phát triển trên nền Node.js và Express.js (lắng nghe cổng 8000), cơ sở dữ liệu chính là MongoDB kết hợp bộ nhớ đệm Redis, và xử lý thời gian thực qua Socket.io.

2. Cơ chế thời gian thực (Realtime) được áp dụng cho các chức năng nào trong hệ thống?

Thư viện Socket.io được nhóm tác giả tích hợp để phục vụ 4 nghiệp vụ thời gian thực chính: gửi và nhận tin nhắn tức thì trong kênh trò chuyện, gửi thông báo khi có người bình luận bài viết, thông báo khi có lượt thích bình luận và thông báo khi lời mời kết bạn được chấp nhận.

3. Phân hệ quản trị (Admin) trong đồ án có những quyền hạn và chức năng gì?

Giao diện Admin gồm các chức năng: đăng nhập quản trị, theo dõi bảng điều khiển tổng quan (dashboard), xem danh sách và chi tiết người dùng (kèm lịch sử hoạt động), quản lý danh sách quản trị viên, và quản lý/xử lý danh sách báo cáo vi phạm nội dung (Denounces).

4. Hệ thống cơ sở dữ liệu được tổ chức thành những bảng dữ liệu chính nào?

Cơ sở dữ liệu MongoDB của hệ thống được thiết kế gồm 12 bảng/collections chính: User, Posts, Roles, Notification, Files, Messages, Token, Comment, Albums, Denounces, Comments và Reacts.

5. Quá trình triển khai hệ thống lên internet được thực hiện như thế nào?

Nhóm tác giả khởi tạo máy ảo Google Cloud VM, kết nối cấu hình qua SSH, mở các cổng mạng cho phép truy cập, tạo 3 service độc lập chạy Backend, Client và Admin, sau đó cấu hình máy chủ Nginx làm Reverse Proxy để điều hướng lưu lượng từ internet vào các cổng dịch vụ nội bộ.


Kết luận

Khóa luận tốt nghiệp của sinh viên Trịnh Xuân Phương và Phan Nguyễn Chu Kiệt đã hoàn thành trọn vẹn mục tiêu xây dựng một website mạng xã hội hoàn chỉnh với đầy đủ các phân hệ chức năng từ tương tác người dùng, truyền thông điệp thời gian thực đến quản trị hệ thống. Đồ án thể hiện quy trình phân tích thiết kế phần mềm bài bản, ứng dụng thành công các công nghệ web hiện đại như Next.js, Node.js, Express, MongoDB, Socket.io và triển khai vận hành thực tế trên đám mây Google Cloud. Đây là công trình thực hành có giá trị ứng dụng rõ ràng và là tài liệu tham khảo hữu ích cho sinh viên chuyên ngành Công nghệ phần mềm.