Phát Triển Hệ Thống Phân Tán Microservices Cho Ứng Dụng Chia Sẻ Video

Development of a microservices distributed system for video sharing application

Đề tài “Phát triển hệ thống phân tán Microservices cho ứng dụng chia sẻ video” xây dựng một ứng chia sẻ video thông qua nghiên cứu, áp dụng các nguyên lý của kiến trúc microservice và các kỹ thuật DevOps trong việc phát triển và triển khai. Bên cạnh đó, ứng dụng sẽ được tích hợp trí tuệ nhân tạo qua việc xây dựng xây dựng các mô hình học sâu nhằm tăng thêm tính thực tiễn của ứng dụng và tăng trải nghiệm người dùng.

Xem toàn văn báo cáo tại:

TÁC GIẢ

Tạ Đức Bảo, Trịnh Tấn Đạt

GIẢNG VIÊN HƯỚNG DẪN

NGÀNH

Năm:

Tổng quan

Trong kỷ nguyên số hóa và xu hướng cá nhân hóa các dịch vụ trên Internet, nhu cầu chia sẻ video cá nhân dần đã trở nên phổ biến. Tuy nhiên, để đáp ứng được khối lượng người dùng đông đãng và yêu cầu cao về hiệu suất, hệ thống cần được thiết kế và phát triển dựa trên kiến trúc Microservices.

Kiến trúc Microservices không chỉ đem lại tính linh hoạt trong quá trình phát triển và triển khai, mà còn giúp tối ưu hóa hiệu suất và khả năng mở rộng. Song song đó, sự kết hợp với các kỹ thuật DevOps, AI, Java Springboot và công cụ như CI/CD sẽ giúp tự động hóa quy trình phát triển, đối mới nhanh chóng và giảm thiểu nguy cơ khi thay đổi.

Đề tài “Phát triển hệ thống phân tán Microservices cho ứng dụng chia sẻ video” được thực hiện nhằm tạo ra một nền tảng chia sẻ video độc lập, linh hoạt và mang lại giá trị thực tiễn cho người sử dụng.

Mục tiêu và phạm vi nghiên cứu

Đề tài “Phát triển hệ thống phân tán Microservices cho ứng dụng chia sẻ video” xây dựng một ứng chia sẻ video thông qua nghiên cứu, áp dụng các nguyên lý của kiến trúc microservice và các kỹ thuật DevOps trong việc phát triển và triển khai. Bên cạnh đó, ứng dụng sẽ được tích hợp trí tuệ nhân tạo qua việc xây dựng xây dựng các mô hình học sâu nhằm tăng thêm tính thực tiễn của ứng dụng và tăng trải nghiệm người dùng.

Đề tài không chỉ giúp nâng cao kỹ thuật mà còn phát triển các kỹ năng trong môi trường thực tế như làm việc nhóm và quản lý dự án, hướng tới mục tiêu hoàn thiện một sản phẩm ứng dụng trong môi trường thực tiễn.

Cuối cùng, ứng dụng chia sẻ video được xây dựng để hướng tới một sản phẩm miễn phí, dễ dàng sử dụng đối với những doanh nghiệp nhỏ, các lớp học cần chia sẻ và đăng tải những video phù hợp với nhu cầu.

Phạm vi nghiên cứu sẽ đánh giá sự hiệu quả của hệ thống phân tán lên ứng dụng qua các tính năng như chia sẻ video, người dùng, bình luận, khả năng tối ưu hóa trong thời gian thực và khả năng đưa ứng dụng vào môi trường thực tế.

Nội dung đề tài

image 44
Hình 3.1: Kiến trúc ứng dụng

Thiết kế kiến trúc microservice gồm các dịch vụ Video Service, Comment Service, User Service, Streaming Service, và các AI service (gợi ý video, phát hiện bình luận tiêu cực).

Thiết kế cơ sở dữ liệu và phân quyền, xác định cách các dịch vụ sẽ tương tác với nhau, bao gồm việc sử dụng Redis để lưu trữ bộ nhớ đệm và Kafka để xử lý thông điệp giữa các dịch vụ.

Xác định mô hình AI cho từng dịch vụ: gợi ý video dựa trên hành vi người dùng và phát hiện bình luận tiêu cực bằng phân tích ngữ nghĩa

ELK là nơi lưu trữ các log hoạt động của Microservices và log của server hoạt động Kubernetes

Prometheus, Grafana được sử dụng để kiểm soát cluster về tài nguyên phần cứng hoạt động

Người dùng sẽ truy cập ứng dụng thông qua tên miền frontend và API sẽ làm nhiệm vụ gọi và đưa yêu cầu tới các Service để xử lý các tác vụ từ người dùng.

image 46
Hình 3.5: Giai đoạn Dev

Giai đoạn Phát triển (Dev) trong quy trình CI/CD bao gồm các bước chính từ việc phát triển mã nguồn, kiểm thử tự động, xây dựng và đẩy image Docker lên Docker Hub, và gửi thông báo đến Slack. Quy trình chi tiết như sau:

  • Phát triển mã nguồn: Developer sẽ thực hiện công việc phát triển tính năng mới hoặc sửa lỗi trong mã nguồn của ứng dụng trên môi trường làm việc cá nhân.
  • Commit mã nguồn: Khi hoàn thành việc phát triển developer sẽ commit mã nguồn mới lên kho lưu trữ mã nguồn trên GitHub. Đây là bước đầu tiên để bắt đầu quy trình tích hợp liên tục (CI).
  • GitHub Actions: Sau khi mã nguồn được commit, GitHub Actions sẽ tự động được kích hoạt. GitHub Actions là một dịch vụ CI/CD của GitHub cho phép tự động hóa quy trình xây dựng, kiểm thử và triển khai ứng dụng.
  • GitHub Actions sẽ chạy các pipeline được định nghĩa trong tệp cấu hình (workflow file). Trong pipeline này, các bước thực hiện bao gồm việc kiểm thử và xây dựng image Docker.
  • Kiểm thử tự động: Trong pipeline, bước đầu tiên là thực hiện các test case. Các test case được viết sẵn sẽ kiểm tra mã nguồn để đảm bảo rằng không có lỗi phát sinh và các tính năng mới hoạt động đúng như mong đợi.
  • Nếu bất kỳ test case nào không thành công, pipeline sẽ dừng lại và thông báo lỗi sẽ được gửi đến nhà phát triển.
  • Xây dựng và đẩy image Docker: Nếu tất cả các test case đều thành công, bước tiếp theo là xây dựng image Docker của ứng dụng.
  • Image Docker sau đó sẽ được đẩy lên Docker Hub. Docker Hub là một kho lưu trữ công cộng cho phép lưu trữ và phân phối các image Docker.
  • Gửi thông báo đến Slack: Sau khi hoàn thành quá trình xây dựng và đẩy image Docker, một thông báo sẽ được gửi đến workspace trên Slack để thông báo cho nhóm phát triển về trạng thái của pipeline.
  • Thông báo này bao gồm thông tin về việc kiểm thử và xây dựng image Docker có thành công hay không, giúp nhóm phát triển theo dõi quá trình CI/CD một cách dễ dàng.

Kết luận

Trong quá trình phát triển ứng dụng chia sẻ video dựa trên kiến trúc microservice, đã áp dụng các công nghệ mới để xây dựng một hệ thống mạnh mẽ, hiệu quả và dễ dàng mở rộng. Những điểm nổi bật của dự án bao gồm:

Ứng dụng CI/CD: Việc triển quy trình CI/CD đã giúp tối ưu hóa quy trình phát triển và triển khai ứng dụng. Bằng cách sử dụng công cụ GitHub Actions để tự động hóa quy trình làm việc và triển khai. Điều này giúp giảm thiểu lỗi, tăng tốc độ phát triển và đảm bảo tính ổn định của hệ thống.

Tích hợp AI: Hệ thống tích hợp các mô hình AI để cung cấp các tính năng thông minh, bao gồm:

Dự đoán bình luận độc hại: Huấn luyện một mô hình giúp nhận biết các bình luận có mục đích tiêu cực.

Gợi ý video: Huấn luyện một mô hình AI đề xuất video giúp tăng trải nghiệm giữa người dùng và ứng dụng.

Khả năng mở rộng và quản lý hạ tầng: Hệ thống được thiết kế để đáp ứng các nhu cầu về hiệu năng và khả năng mở rộng bằng cách triển khai trên Kubernetes. Redis được sử dụng để cải thiện tốc độ truy cập dữ liệu thông qua caching và sử dụng Kafka để xử lý luồng dữ liệu lớn giữa các dịch vụ.