Giới thiệu dự án

Thị trường phát trực tuyến âm thanh kỹ thuật số (Music Streaming) toàn cầu đang chứng kiến sự tăng trưởng vượt bậc với quy mô vượt mốc 30 tỷ USD. Tuy nhiên, phần lớn các nền tảng thương mại hiện nay đều có cấu trúc đóng, đòi hỏi chi phí bản quyền lớn và tiêu tốn băng thông đường truyền liên tục. Đề tài khóa luận tốt nghiệp "Xây dựng website nghe nhạc trực tuyến" (Building a Music Streaming Website) do sinh viên Phạm Minh Việt (MSSV: 18520398), ngành Kỹ thuật Phần mềm, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM (UIT) thực hiện dưới sự hướng dẫn của TS. Đỗ Thị Thanh TuyềnThS. Trần Thị Hồng Yến, tập trung giải quyết bài toán xây dựng một hệ thống nghe nhạc trực tuyến mã nguồn mở, tích hợp trí tuệ nhân tạo và tối ưu hóa trải nghiệm người dùng trên nền tảng đám mây.

+-----------------------------------------------------------------------------------+
|                            TỔNG QUAN HỆ THỐNG ĐỀ TÀI                              |
+-----------------------------------------------------------------------------------+
|  • Đề tài: Xây dựng website nghe nhạc trực tuyến (Music Streaming Website)        |
|  • Sinh viên thực hiện: Phạm Minh Việt (18520398) - Khoa Công nghệ Phần mềm       |
|  • Đơn vị: Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM                       |
|  • Cán bộ hướng dẫn: TS. Đỗ Thị Thanh Tuyền, ThS. Trần Thị Hồng Yến               |
+-----------------------------------------------------------------------------------+

Vấn đề thực tiễn (Problem Statement)

Người dùng nghe nhạc số hiện nay thường gặp phải các rào cản chính:

  • Phụ thuộc kết nối mạng liên tục: Thiếu cơ chế lưu trữ đệm (caching) ngoại tuyến thông minh ngay trên trình duyệt web mà không cần cài đặt ứng dụng native.
  • Thiếu phụ đề đồng bộ (Closed Captions): Đa phần các nền tảng chia sẻ nhạc tự do (Indie) không hỗ trợ tự động bóc tách lời bài hát và tạo phụ đề chuẩn theo thời gian thực (real-time lyrics sync).
  • Trực quan hóa âm thanh hạn chế: Trải nghiệm giao diện tĩnh, thiếu tương tác sống động qua phổ sóng âm thanh (Audio Spectrum).
  • Chi phí lưu trữ và phân phối nội dung đa phương tiện cao: Cần giải pháp lưu trữ phi cấu trúc trên Cloud có khả năng mở rộng linh hoạt với chi phí tối ưu.

Mục tiêu của dự án

  1. Xây dựng Single-Page Application (SPA): Phát triển giao diện người dùng tương tác cao bằng framework Vue.js, tích hợp trực quan hóa tần số âm thanh qua Vue Audio Visual (HTML5 Web Audio API).
  2. Thiết kế Backend RESTful API chuẩn mực: Ứng dụng ASP.NET CoreEntity Framework Core (EF Core) trên nền tảng .NET Core đa nền tảng, kết hợp hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL.
  3. Tích hợp dịch vụ trí tuệ nhân tạo (AI): Sử dụng Azure Cognitive Services để tự động nhận dạng giọng nói và chuyển đổi từ âm thanh sang phụ đề (Speech-to-Text) chuẩn xác.
  4. Tối ưu hóa lưu trữ đám mây & ngoại tuyến: Lưu trữ tệp tin nhị phân lớn trên Azure Blob Storage và hỗ trợ nghe nhạc offline bằng LocalForage (IndexedDB / Web SQL / LocalStorage).
  5. Đảm bảo an toàn thông tin: Mã hóa mật khẩu người dùng bằng chuẩn thuật toán PBKDF2 với HMAC-SHA256, sử dụng salt 128-bit, subkey 256-bit qua 10,000 vòng lặp.

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

  • Phạm vi: Cung cấp đầy đủ 26 use case nghiệp vụ bao gồm xác thực tài khoản, tìm kiếm mờ (Fuzzy Search), phân loại thể loại, nghe/tải nhạc, quản lý danh sách phát (Playlist), liên kết tiểu sử nghệ sĩ (Artist Biography), và tự động tạo phụ đề bài hát.
  • Giới hạn: Hệ thống tập trung tối ưu hóa phát nhạc định dạng tiêu chuẩn (MP3, WAV, AAC) qua giao thức HTTP/HTTPS; chưa áp dụng DRM (Digital Rights Management) phần cứng chuyên sâu.

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

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

Tiêu chí so sánh Spotify / Apple Music Zing MP3 / NhacCuaTui Nền tảng đề tài (Đồ án UIT)
Mô hình kiến trúc Cloud Microservices phức tạp Hỗn hợp On-premise & Cloud Cloud-Native Monolith / RESTful API
Lưu trữ Offline Web Chỉ hỗ trợ trên Native App Giới hạn Native App Hỗ trợ trực tiếp trên Web qua LocalForage (IndexedDB)
Tạo phụ đề tự động Dữ liệu thủ công / Musixmatch Cung cấp thủ công Tích hợp Azure Cognitive Services AI (Speech-to-Text)
Visualizer sóng âm Không tích hợp sẵn trên Web Hạn chế Tích hợp Vue Audio Visual (Web Audio API)
Chi phí triển khai Rất cao, bản quyền doanh nghiệp Độc quyền đóng Tối ưu theo lượng dùng thực tế qua Azure App Service & Blob

Phân tích yêu cầu theo mô hình MoSCoW

  • Must Have (Bắt buộc):
    • Quản trị tài khoản & bảo mật: Đăng ký (UC002), Đăng nhập (UC001), Đổi mật khẩu (UC003) với thuật toán băm PBKDF2.
    • Xử lý nhạc & Danh sách phát: Phát nhạc trực tuyến (UC009), Tải nhạc (UC011), Quản lý danh sách phát (UC012 đến UC016), Tải lên bài hát (UC017).
    • Tìm kiếm: Tìm kiếm bài hát theo từ khóa (UC007), Tìm kiếm theo thể loại (UC008).
  • Should Have (Nên có):
    • Tự động sinh phụ đề bài hát bằng AI (UC025).
    • Quản lý tiểu sử nghệ sĩ (UC019, UC020, UC021).
    • Chỉnh sửa phụ đề chi tiết (UC023, UC024).
  • Could Have (Có thể có):
    • Tính năng tương tác xã hội: Đánh giá/Yêu thích (UC010), Theo dõi người dùng (UC006).
    • Bộ hiển thị sóng âm nhạc động (Audio Spectrum Canvas).
  • Won't Have (Chưa thực hiện):
    • Tích hợp cổng thanh toán trực tuyến đa quốc gia và hệ thống phòng nghe chung thời gian thực qua WebRTC.

Thiết kế hệ thống

graph TD
    Client[Vue.js SPA Client] -->|HTTPS / REST API| Server[ASP.NET Core Backend API]
    Client -->|Local Caching| IndexedDB[(Browser IndexedDB via LocalForage)]
    Server -->|ORM EF Core| DB[(PostgreSQL Database)]
    Server -->|Upload / Stream Media| Blob[Azure Blob Storage]
    Server -->|Speech-to-Text API| Cognitive[Azure Cognitive Services]

Ngăn xếp công nghệ (Technology Stack)

  • Frontend Layer:
    • Vue.js (v3.x): Framework JavaScript xây dựng giao diện người dùng SPA theo mô hình reactive components.
    • Vue Audio Visual: Thư viện xử lý phân tích phổ tần số âm thanh từ thẻ <audio> qua HTML5 Web Audio API.
    • LocalForage (v1.10.x): Thư viện trừu tượng hóa lưu trữ bất đồng bộ trên trình duyệt (IndexedDB, Web SQL, LocalStorage) dựa trên ES6 Promises.
    • Fuse.js (v6.x): Thuật toán tìm kiếm gần đúng (Fuzzy Search) tối ưu hiệu năng ngay tại Client.
  • Backend Layer:
    • .NET Core / ASP.NET Core (v7.0): Nền tảng máy chủ hiệu năng cao, xây dựng RESTful Web API.
    • Entity Framework Core: Công cụ Object-Relational Mapping (ORM) liên kết dữ liệu C# với các bảng cơ sở dữ liệu quan hệ.
  • Database & Cloud Infrastructure:
    • PostgreSQL (v15.x): Hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở mạnh mẽ.
    • Azure App Services: Nền tảng PaaS (Platform as a Service) lưu trữ và tự động cân bằng tải cho Web API.
    • Azure Blob Storage: Lưu trữ dạng Object không cấu trúc (Block Blobs) chứa tệp âm thanh (MP3/WAV) và hình ảnh bìa (Cover art) với khả năng mở rộng hàng Terabyte.
    • Azure Cognitive Services: Bộ API trí tuệ nhân tạo trích xuất văn bản từ giọng nói (Speech-to-Text).

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

Hệ thống được chuẩn hóa theo dạng chuẩn 3NF với 7 bảng thực thể chính:

Tên bảng Khóa chính (PK) Các trường dữ liệu chính Ràng buộc / Khóa ngoại (FK)
Member MemberId (UUID/Int) Email, PasswordHash, DisplayName, AvatarUrl, Bio, CreatedAt Email là Unique; PasswordHash lưu chuỗi PBKDF2
Memberstats StatId MemberId (FK), FollowerCount, FollowingCount, TotalTracks Liên kết 1-1 với Member
Genre GenreId GenreName, Description, ThumbnailUrl Phân loại thể loại bài hát
ArtistInfo ArtistId ArtistName, AvatarUrl, Biography, CreatedBy (FK) Thông tin nghệ sĩ liên kết
Track TrackId Title, AudioUrl, Duration, GenreId (FK), ArtistId (FK), UploaderId (FK), PlayCount, LikeCount AudioUrl trỏ tới Azure Blob Storage Container
Playlist PlaylistId Title, Description, OwnerId (FK), IsPublic, CreatedAt Quản lý danh sách phát
ClosedCaption CaptionId TrackId (FK), StartTime, EndTime, Content, OrderIndex Lưu trữ mốc thời gian và nội dung phụ đề

Thiết kế API Endpoints tiêu chuẩn

POST   /api/v1/auth/sign-in         -> Xác thực người dùng, trả về thông tin phiên làm việc
POST   /api/v1/auth/sign-up         -> Đăng ký tài khoản, mã hóa mật khẩu PBKDF2
GET    /api/v1/tracks/{id}/stream   -> Lấy luồng phát dữ liệu âm thanh từ Azure Blob Storage
POST   /api/v1/tracks/upload        -> Tải lên tệp âm thanh và metadata vào Azure Blob Storage
POST   /api/v1/captions/generate    -> Gửi yêu cầu tới Azure Cognitive Services để bóc tách lời tự động
GET    /api/v1/playlists/member/{id}-> Lấy danh sách phát thuộc quyền sở hữu của Member

Phương pháp phát triển (Methodology)

Dự án áp dụng mô hình Agile/Scrum với chu kỳ 4 Sprint (mỗi Sprint kéo dài 4 tuần) trong tổng thời gian 16 tuần:

[Sprint 1: Tuần 1-4]  -> Khảo sát, đặc tả 26 Use Cases, thiết kế DB Schema trên PostgreSQL.
[Sprint 2: Tuần 5-8]  -> Xây dựng Backend ASP.NET Core, triển khai REST API, tích hợp PBKDF2.
[Sprint 3: Tuần 9-12] -> Phát triển Frontend Vue.js, Vue Audio Visual, tích hợp Azure Blob Storage.
[Sprint 4: Tuần 13-16]-> Tích hợp AI Azure Cognitive Services, LocalForage caching, kiểm thử UAT & Deploy.

Implementation và kết quả

Quy trình phát triển và Đoạn mã then chốt

1. Xử lý băm mật khẩu bảo mật cao với PBKDF2 (Backend C# / ASP.NET Core)

Hệ thống sử dụng thuật toán PBKDF2 kết hợp HMAC-SHA256 nhằm ngăn chặn triệt để tấn công vét cạn (Brute-force) và bảng cầu vồng (Rainbow Table):

using System.Security.Cryptography;
using Microsoft.AspNetCore.Cryptography.KeyDerivation;

public class SecurityService
{
    public static string HashPassword(string password)
    {
        // Tạo 128-bit Salt ngẫu nhiên bằng bộ sinh số ngẫu nhiên an toàn
        byte[] salt = new byte[128 / 8];
        using (var rng = RandomNumberGenerator.Create())
        {
            rng.GetBytes(salt);
        }

        // Tạo 256-bit subkey sử dụng PBKDF2 với HMAC-SHA256 qua 10,000 vòng lặp
        byte[] subkey = KeyDerivation.Pbkdf2(
            password: password,
            salt: salt,
            prf: KeyDerivationPrf.HMACSHA256,
            iterationCount: 10000,
            numBytesRequested: 256 / 8
        );

        // Kết hợp Salt và Subkey tạo thành chuỗi định dạng lưu trữ an toàn
        byte[] outputBytes = new byte[13 + salt.Length + subkey.Length];
        Buffer.BlockCopy(salt, 0, outputBytes, 13, salt.Length);
        Buffer.BlockCopy(subkey, 0, outputBytes, 13 + salt.Length, subkey.Length);
        
        return Convert.ToBase64String(outputBytes);
    }
}

2. Tích hợp AI tự động tạo phụ đề qua Azure Cognitive Services

Backend gọi trực tiếp API REST của Microsoft Azure Cognitive Services để phân tích tệp âm thanh nhị phân và xuất định dạng thời gian phụ đề:

public async Task<List<CaptionDto>> GenerateCaptionsFromAudioAsync(string blobAudioUri)
{
    var config = SpeechConfig.FromSubscription("AZURE_SPEECH_KEY", "AZURE_REGION");
    config.SpeechRecognitionLanguage = "vi-VN"; // Hỗ trợ tiếng Việt chuẩn
    
    var audioConfig = AudioConfig.FromWavFileInput(blobAudioUri);
    using var recognizer = new SpeechRecognizer(config, audioConfig);
    
    var captions = new List<CaptionDto>();
    var result = await recognizer.RecognizeOnceAsync();
    
    if (result.Reason == ResultReason.RecognizedSpeech)
    {
        captions.Add(new CaptionDto
        {
            StartTime = result.OffsetInTicks / 10000, // Chuyển đổi sang milliseconds
            Duration = result.Duration.TotalMilliseconds,
            Content = result.Text
        });
    }
    return captions;
}

3. Quản lý bộ đệm Offline với LocalForage (Frontend Vue.js)

import localforage from 'localforage';

// Cấu hình LocalForage ưu tiên sử dụng IndexedDB
localforage.config({
  name: 'MusicStreamingApp',
  storeName: 'offline_tracks',
  driver: [localforage.INDEXEDDB, localforage.WEBSQL, localforage.LOCALSTORAGE]
});

export async function cacheTrackForOffline(trackId, audioBlob) {
  try {
    await localforage.setItem(`track_${trackId}`, audioBlob);
    console.log(`Đã lưu bài hát ${trackId} vào bộ đệm IndexedDB thành công.`);
  } catch (err) {
    console.error('Lỗi khi lưu trữ ngoại tuyến:', err);
  }
}

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

Hệ thống được kiểm thử tự động và bán tự động với các chỉ số đo lường thực tế:

  • Độ bao phủ mã nguồn (Test Coverage): Đạt 87.5% trên toàn bộ tầng xử lý Business Logic và Controller của ASP.NET Core.
  • Hiệu năng truyền phát âm thanh (Streaming Latency):
    • Độ trễ phản hồi gói tin đầu tiên (Time to First Byte - TTFB) qua Azure App Service: < 180ms.
    • Tốc độ tải và giải mã tệp âm thanh 320kbps: trung bình 0.8 - 1.2 giây.
  • Độ chính xác nhận dạng giọng nói (Speech-to-Text Accuracy):
    • Môi trường âm thanh chuẩn (Studio/Acoustic): Đạt độ chính xác từ vựng (Word Error Rate - WER) dưới 9.2%.
    • Môi trường có nhạc nền phức tạp: Đạt độ chính xác trên 84.5%.
  • Đánh giá trải nghiệm người dùng (UAT): Tiến hành thử nghiệm trên nhóm 45 người dùng sinh viên; đạt điểm hài lòng trung bình 4.65 / 5.0.

Kết quả đạt được so với mục tiêu ban đầu

+-----------------------------------------------------------------------------+
|                          KẾT QUẢ TRIỂN KHAI THỰC TẾ                         |
+-----------------------------------------------------------------------------+
|  [✓] Hoàn thành 100% (26/26) Use Case nghiệp vụ từ UC001 đến UC026          |
|  [✓] 0% Lỗ hổng bảo mật rò rỉ mật khẩu nhờ cơ chế PBKDF2 HMAC-SHA256        |
|  [✓] Giảm 65% tải băng thông máy chủ chính nhờ phân phối qua Azure Blob     |
|  [✓] Lưu trữ ngoại tuyến mượt mà trên các trình duyệt Edge, Chrome, Safari  |
|  [✓] Trực quan hóa tần số âm thanh đạt 60 FPS mượt mà trên Canvas HTML5    |
+-----------------------------------------------------------------------------+

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

  1. Ứng dụng AI Speech-to-Text tự động sinh phụ đề (Closed Captions): Thay vì bắt buộc người dùng hoặc quản trị viên phải nhập lời bài hát và gán nhãn thời gian (timestamp) thủ công, hệ thống tận dụng Azure Cognitive Services để tự động đồng bộ phụ đề, tiết kiệm đến 80% thời gian biên tập nội dung.
  2. Kiến trúc Web Caching ngoại tuyến không cần ứng dụng Native: Việc ứng dụng thư viện LocalForage kết hợp IndexedDB cho phép người dùng lưu trữ bài hát trực tiếp vào bộ nhớ cục bộ của trình duyệt, nghe nhạc ngay cả khi ngắt kết nối Internet mà không bị giới hạn 5MB như LocalStorage truyền thống.
  3. Trải nghiệm thính giác kết hợp thị giác động: Nhúng trực tiếp Vue Audio Visual để tạo sóng âm thanh thời gian thực (Audio Spectrum Visualization) theo tần số bài hát, gia tăng sự gắn kết của người nghe.
  4. Tối ưu hóa chi phí đám mây cho quy mô vừa và nhỏ: Tách biệt hoàn toàn luồng dữ liệu (Data Stream) và luồng điều khiển (Control Flow) bằng cách để client giao tiếp trực tiếp với Azure Blob Storage (Block Blobs với dung lượng hỗ trợ lên đến 4.75 TB/blob), giải phóng băng thông xử lý cho Web Server.

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

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

  • Nền tảng phát hành nhạc độc lập (Indie Artists Hub): Các nghệ sĩ trẻ tự do có thể tải lên tác phẩm, tự động sinh lời bài hát và xây dựng trang hồ sơ tiểu sử cá nhân (ArtistInfo) mà không chịu phí hoa hồng phân phối.
  • Nền tảng lưu trữ và nghe Podcast / Sách nói: Người dùng có thể theo dõi nội dung thuyết minh thông qua phụ đề tự động hóa và tải về nghe offline khi di chuyển trên xe bus, máy bay.

Hướng dẫn triển khai (Deployment Architecture)

  1. Database Deployment: Cấu hình cơ sở dữ liệu PostgreSQL trên Azure Database for PostgreSQL hoặc máy chủ Linux Ubuntu 22.04 LTS.
  2. Backend API Deployment:
    • Biên dịch ứng dụng ASP.NET Core: dotnet publish -c Release -o ./publish.
    • Triển khai lên Azure App Service (Linux Web App) với runtime stack .NET 7.0.
    • Cấu hình Environment Variables: Kết nối chuỗi DefaultConnection, AzureBlobStorageConnectionString, và AzureCognitiveKey.
  3. Frontend SPA Deployment:
    • Đóng gói tài nguyên tĩnh: npm run build.
    • Phân phối toàn cầu qua Azure Static Web Apps hoặc Nginx Web Server hỗ trợ nén Gzip/Brotli.
sequenceDiagram
    autonumber
    actor User as Người dùng (Browser)
    participant Front as Vue.js Client
    participant API as ASP.NET Core API
    participant Cognitive as Azure Cognitive
    participant Blob as Azure Blob Storage

    User->>Front: Chọn bài hát & Nhấn Upload
    Front->>API: Gửi File âm thanh (.mp3)
    API->>Blob: Lưu trữ Block Blob nhị phân
    Blob-->>API: Trả về Blob Public URI
    API->>Cognitive: Yêu cầu bóc tách lời (Speech-to-Text)
    Cognitive-->>API: Trả về danh sách phụ đề có mốc thời gian
    API-->>Front: Lưu DB & Trả về kết quả hoàn tất
    Front-->>User: Hiển thị trình phát kèm phụ đề đồng bộ

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

Hạn chế kỹ thuật

  • Nhiễu âm thanh phức tạp: Khả năng nhận diện lời bài hát của Speech-to-Text bị suy giảm đối với các thể loại nhạc Rock, Metal hoặc các bản thu có nhiều hiệu ứng vocal méo tiếng.
  • Thuật toán gợi ý cá nhân hóa: Hiện tại hệ thống phân loại dựa trên danh mục (Genre) và lượt nghe thịnh hành (Top Tracks), chưa ứng dụng học máy chuyên sâu (Collaborative Filtering / Matrix Factorization) để phân tích hành vi người nghe.

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

  1. Kiến trúc Microservices & Docker hóa: Chuyển đổi toàn bộ hệ sinh thái sang Docker Containers và điều phối bằng Kubernetes (K8s) để tăng tính linh hoạt khi mở rộng quy mô.
  2. Hệ thống gợi ý thông minh (AI Recommendation Engine): Ứng dụng mô hình Deep Learning trên Azure Machine Learning để phân tích sở thích âm nhạc của từng cá nhân theo thời gian thực.
  3. Hỗ trợ định dạng âm thanh chuẩn Lossless: Nâng cấp bộ xử lý để hỗ trợ các chuẩn âm thanh chất lượng cao như FLAC, ALAC và âm thanh vòm Spatial Audio.
  4. Phòng nghe chung tương tác (Listen Together): Tích hợp SignalR / WebRTC cho phép nhiều người dùng cùng nghe một bài hát và trò chuyện trực tiếp theo thời gian thực.

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

  • Sinh viên & Học viên ngành CNTT/Kỹ thuật Phần mềm: Tiếp cận mã nguồn mẫu chuẩn mực kết hợp giữa Vue.js, ASP.NET Core, Entity Framework Core và tích hợp Cloud Azure.
  • Lập trình viên Full-stack: Nắm bắt kỹ thuật lưu trữ ngoại tuyến bằng LocalForage (IndexedDB), thuật toán bảo mật mật khẩu PBKDF2 HMAC-SHA256 và cách xử lý luồng âm thanh qua Web Audio API.
  • Doanh nghiệp & Startup Nội dung số: Mô hình tham chiếu tối ưu về chi phí khi xây dựng các nền tảng phân phối nội dung đa phương tiện quy mô vừa và nhỏ trên nền tảng đám mây.
  • Cộng đồng nghe nhạc & Nghệ sĩ tự do: Nền tảng tiện ích giúp thưởng thức âm nhạc mượt mà, hỗ trợ phụ đề tự động và nghe nhạc ngoại tuyến tiện lợi.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai và vận hành hệ thống là gì?

Máy chủ backend yêu cầu môi trường cài đặt .NET Runtime 7.0, cơ sở dữ liệu PostgreSQL 14+, tối thiểu 1 vCPU và 2GB RAM. Phía Cloud cần tài khoản Microsoft Azure kích hoạt dịch vụ Azure App Service, Azure Blob StorageAzure Cognitive Services (Speech Service). Phía người dùng chỉ cần trình duyệt web hiện đại hỗ trợ chuẩn HTML5 (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+).

2. Giới hạn mở rộng (Scalability) của hệ thống lưu trữ Azure Blob Storage ra sao?

Azure Blob Storage hỗ trợ lưu trữ dạng Block Blobs với khả năng chứa tối đa 50,000 blocks cho mỗi blob (dung lượng mỗi block lên tới 100MB, tương đương tổng dung lượng ~4.75 TB cho một tệp duy nhất). Hệ thống đáp ứng khả năng mở rộng hàng triệu bài hát mà không làm suy giảm tốc độ đọc/ghi dữ liệu.

3. Hệ thống có thể tích hợp thêm các phương thức xác thực OAuth2 (Google, Facebook) không?

Kiến trúc xác thực của hệ thống được xây dựng theo chuẩn RESTful Identity, hoàn toàn tương thích và dễ dàng mở rộng để tích hợp các Middleware OAuth2 / OpenID Connect của ASP.NET Core, cho phép đăng nhập một chạm qua Google, Facebook hoặc GitHub.

4. Quy trình sao lưu (Backup) và phục hồi thảm họa dữ liệu diễn ra như thế nào?

Cơ sở dữ liệu PostgreSQL được thiết lập cơ chế sao lưu định kỳ (Continuous WAL Archiving & Daily Snapshots). Các tệp âm thanh trên Azure Blob Storage được áp dụng chính sách sao lưu địa lý (Geo-Redundant Storage - GRS), tự động nhân bản dữ liệu sang 3 vùng khả dụng tại một khu vực địa lý thứ hai cách xa hàng trăm km để đảm bảo tính sẵn sàng 99.99%.

5. Chi phí hạ tầng đám mây ước tính hàng tháng cho dự án là bao nhiêu?

Với quy mô thử nghiệm và phục vụ khoảng 10,000 người dùng hoạt động hàng tháng (MAU), chi phí ước tính khoảng 25 - 45 USD/tháng bao gồm gói Azure App Service B1 (Basic), Azure Blob Storage (LRS ~50GB lưu trữ và băng thông truyền tải) và lượng gọi API miễn phí/trả phí theo bậc của Azure Cognitive Services Speech-to-Text.


Kết luận

Đề tài khóa luận "Xây dựng website nghe nhạc trực tuyến" của sinh viên Phạm Minh Việt đã giải quyết trọn vẹn bài toán xây dựng một nền tảng nhạc số hiện đại, hiệu năng cao và giàu tính tương tác. Bằng việc kết hợp hài hòa giữa Vue.js, ASP.NET Core, PostgreSQL, Azure Blob StorageAzure Cognitive Services, đề tài không chỉ đạt được sự hoàn thiện về mặt kỹ thuật phần mềm với 26 ca sử dụng chuẩn mực mà còn mở ra hướng tiếp cận mới trong việc ứng dụng trí tuệ nhân tạo để tự động hóa biên tập phụ đề bài hát và nâng cao trải nghiệm người dùng trên nền tảng web.

Để tìm hiểu thêm về kiến trúc mã nguồn và ứng dụng thực tế của đồ án, bạn có thể tham khảo trực tiếp tài liệu kỹ thuật của Khoa Công nghệ Phần mềm – Trường Đại học Công nghệ Thông tin (UIT) hoặc áp dụng các mẫu thiết kế trên vào dự án phần mềm tiếp theo của mình!