Triển khai ứng dụng đa phương tiện trên hạ tầng IPv6

Deployment of Multimedia Application on IPv6 Infrastructure

Đồ án này là một mô hình triển khai ứng dụng hiện đại, sử dụng các công nghệ tiên tiến như Kubernetes, IPv6, CI/CD, và các công cụ giám sát để đảm bảo ứng dụng luôn hoạt động ổn định, hiệu quả và có khả năng mở rộng linh hoạt. Khi ứng dụng hoàn thiện, nhóm tin tưởng rằng sẽ đáp ứng được nhu cầu ngày càng cao của người dùng trong môi trường công nghệ hiện đại, đồng thời giúp nâng cao khả năng quản lý và triển khai ứng dụng trong các doanh nghiệp, tổ chức.

TÁC GIẢ

HỨA HỒ GIA HUY, QUÁCH MINH HUY

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

NGÀNH

Năm:

Tổng quan đồ án

Trong đồ án này, nhóm đã xây dựng một ứng dụng xem phim trực tuyến cho phép người dùng có thể truy cập và xem phim qua cả IPv6 và IPv4, giúp ứng dụng có khả năng phục vụ một lượng người dùng lớn mà không bị giới hạn bởi số lượng địa chỉ IP của IPv4.

Ứng dụng được triển khai trên các Kubernetes clusters với ba pods chạy độc lập cho các chức năng khác nhau của hệ thống. Một pod chịu trách nhiệm về front-end, nơi người dùng có thể tương tác với ứng dụng qua giao diện, tìm kiếm và xem phim. Pod thứ hai là back-end, thực hiện các chức năng xử lý logic, cung cấp các API cho ứng dụng, giúp kết nối với cơ sở dữ liệu và quản lý thông tin của người dùng cũng như các bộ phim.

Pod thứ ba là database server, chịu trách nhiệm lưu trữ các bộ phim, hình ảnh và dữ liệu người dùng. Mỗi phần của ứng dụng được triển khai trên các pod riêng biệt giúp nâng cao khả năng mở rộng, tính ổn định và hiệu suất của ứng dụng. Với việc sử dụng Kubernetes, hệ thống có thể tự động điều chỉnh các tài nguyên khi có sự thay đổi về lưu lượng, đảm bảo luôn duy trì hoạt động ổn định dù có lượng người dùng tăng hoặc giảm đột ngột.

Bên cạnh đó, việc triển khai CI/CD (Continuous Integration/Continuous Deployment) cũng là một phần quan trọng của đồ án này. Mọi thay đổi trong mã nguồn sẽ được tự động kiểm tra, xây dựng và triển khai lên môi trường sản xuất thông qua GitHub Actions. Quy trình CI/CD này không chỉ giúp tiết kiệm thời gian mà còn giảm thiểu lỗi và đảm bảo mã nguồn luôn được cập nhật và kiểm thử tự động trước khi triển khai, đảm bảo tính liên tục của ứng dụng trong quá trình phát triển. Các công cụ giám sát như SonarQube được sử dụng để kiểm tra chất lượng mã nguồn, Grafana và Prometheu sẽ theo dõi các chỉ số hoạt động của ứng dụng, bao gồm độ trễ, tải và các sự cố có thể xảy ra, từ đó giúp đội ngũ phát triển nhanh chóng phát hiện và xử lý sự cố.

Ứng dụng này được xây dựng với các công nghệ hiện đại như ReactJS và NodeJS. ReactJS được sử dụng để phát triển giao diện người dùng (front-end), giúp ứng dụng có thể render nhanh và tương tác mượt mà với người dùng. NodeJS, với khả năng xử lý đồng thời các yêu cầu lớn, được sử dụng cho phần back-end để xử lý logic và cung cấp các API phục vụ cho ứng dụng. Cả hai công nghệ này đều giúp tối ưu hóa hiệu suất của ứng dụng và đem lại trải nghiệm người dùng tốt nhất.

Để ứng dụng có thể hoạt động hiệu quả trên môi trường cloud, nhóm đã sử dụng Google Cloud Platform (GCP) để triển khai các tài nguyên cần thiết. Các dịch vụ như Compute Engine và Kubernetes Engine của GCP giúp triển khai và quản lý ứng dụng một cách hiệu quả, đồng thời đảm bảo tính khả dụng cao và tính linh hoạt trong việc mở rộng tài nguyên khi cần thiết. Bên cạnh đó, Terraform được sử dụng để tự động hóa việc cấu hình và quản lý hạ tầng, giúp giảm thiểu công sức và thời gian khi triển khai các dịch vụ.

Tóm lại, đồ án này là một mô hình triển khai ứng dụng hiện đại, sử dụng các công nghệ tiên tiến như Kubernetes, IPv6, CI/CD, và các công cụ giám sát để đảm bảo ứng dụng luôn hoạt động ổn định, hiệu quả và có khả năng mở rộng linh hoạt. Khi ứng dụng hoàn thiện, nhóm tin tưởng rằng sẽ đáp ứng được nhu cầu ngày càng cao của người dùng trong môi trường công nghệ hiện đại, đồng thời giúp nâng cao khả năng quản lý và triển khai ứng dụng trong các doanh nghiệp, tổ chức.

Mục tiêu đề tài

Nghiên cứu lý thuyết: Tìm hiểu về đặc điểm kỹ thuật của giao thức IPv6, những lợi ích của nó trong việc ứng dụng và triển khai. Đặc biệt là trong các ứng dụng đa phương tiện.

Xây dựng ứng dụng : Thiết kế và triển khai một ứng dụng đa phương tiện sử dụng giao thức IPv6, đảm bảo hoạt động ổn định.

Triển khai thực nghiệm: Đưa ứng dụng lên môi trường Kubernetes, sử dụng kết nối IPv6 để kiểm tra tính khả dụng và hiệu suất của ứng dụng.

Đánh giá và tối ưu hóa: Phân tích các kết quả triển khai, đánh giá hiệu năng của ứng dụng, khắc phục hạn chế và đề xuất các phương pháp cải tiến.

Kết quả mong muốn

Hiểu được đặc điểm, cơ chế, kỹ thuật của IPv6, nắm được lợi và hại của nó trong thực tế.

Ứng dụng mẫu hoạt động ổn định trên nền tảng IPv6, ở đây là ứng dụng đa phương tiện được triển khai thành công và có thể truy cập thông qua hạ tầng IPv6.

Triển khai môi trường thực tế đảm bảo được khả năng tương thích và hiệu suất ổn định.

Cung cấp được một số tài liệu mô tả chi tiết quy trình triển khai, các thách thức khó khăn gặp phải và cách khắc phục chúng. Làm cơ sở cho nghiên cứu và ứng dụng thực tiễn trong tương lai.

Góp phần thúc đẩy sự phát triển của IPv6, hỗ trợ cộng đồng để nghiên cứu và phát triển trong việc chuyền đổi từ IPv4 sang IPv6 nhanh hơn, đặc biệt là trong lĩnh vực đa phương tiện.

Cơ sở lý thuyết

Kubernetes

image 128

Kubernetes (thường được gọi là “K8s”) là một hệ thống mạnh mẽ giúp quản lý các ứng dụng container hóa trong môi trường phân tán. Với Kubernetes, bạn có thể dễ dàng tự động hóa việc triển khai, quản lý, giám sát và mở rộng các ứng dụng, giúp giảm thiểu việc quản lý thủ công và tăng cường khả năng tự động hóa. Kubernetes cung cấp các công cụ và cơ chế giúp phát triển ứng dụng dễ dàng hơn, bao gồm việc tự động khôi phục sự cố, cân bằng tải và tối ưu hóa tài nguyên.

CI/CD

image 129

CI/CD Pipeline (Continuous Integration/Continuous Delivery Pipeline) là một chuỗi các bước tự động hóa giúp phát triển phần mềm liên tục, từ việc kiểm tra mã nguồn, xây dựng, triển khai và kiểm thử ứng dụng, cho đến việc triển khai phần mềm lên môi trường sản xuất. Đây là một phần quan trọng trong phương pháp phát triển phần mềm hiện đại, giúp nâng cao hiệu quả công việc, giảm thiểu lỗi và thời gian triển khai, đồng thời đảm bảo chất lượng phần mềm.

CI/CD mang lại nhiều lợi ích lớn cho các nhóm phát triển phần mềm, bao gồm:

o Tăng cường hiệu quả phát triển: CI/CD tự động hóa hầu hết các tác vụ thủ công trong quá trình phát triển, kiểm thử và triển khai, giúp giảm thiểu thời gian và công sức cho các lập trình viên. Việc tự động hóa này giúp nhóm phát triển nhanh chóng kiểm tra các thay đổi và ứng dụng các tính năng mới, đồng thời giảm thiểu số lượng lỗi.

o Phát hiện lỗi sớm và cải thiện chất lượng mã nguồn: CI giúp phát hiện lỗi trong mã nguồn sớm, ngay khi chúng được tích hợp vào hệ thống. Các bài kiểm tra tự động được thực hiện liên tục giúp đảm bảo chất lượng mã nguồn cao hơn, giúp tránh được việc phát hiện lỗi muộn trong giai đoạn triển khai.

o Triển khai nhanh chóng và liên tục: Mục đích chính của CD là cung cấp khả năng triển khai phần mềm thường xuyên, thậm chí là mỗi khi có thay đổi trong mã nguồn. Điều này giúp đảm bảo rằng các tính năng mới được triển khai nhanh chóng và sẵn sàng cho người dùng mà không gặp phải sự cố.

o Tăng cường tính linh hoạt và tính sẵn sàng của ứng dụng: Nhờ có CI/CD, các ứng dụng có thể được triển khai nhanh chóng và an toàn
hơn, giúp tăng khả năng sẵn sàng và giảm thiểu sự gián đoạn khi có sự cố phát sinh.

o Cải thiện trải nghiệm người dùng: Khi ứng dụng được triển khai nhanh chóng và không gặp phải sự cố, người dùng sẽ có trải nghiệm tốt hơn. CI/CD giúp đảm bảo rằng các tính năng mới được phát hành đều được kiểm thử kỹ càng và đảm bảo chất lượng trước khi đưa vào sử dụng.

o Giảm rủi ro và tăng cường bảo mật: CI/CD giúp giảm thiểu rủi ro khi triển khai mã, vì các bài kiểm tra tự động giúp phát hiện lỗi và các vấn đề bảo mật trước khi chúng trở thành mối nguy hại trong môi trường sản xuất. Mỗi lần triển khai đều được kiểm tra kỹ càng, đảm bảo sự ổn định của hệ thống.

o Quản lý dự án dễ dàng hơn: CI/CD cung cấp khả năng theo dõi và báo cáo các quy trình triển khai, giúp các nhà quản lý và nhóm phát triển theo dõi tiến độ dự án một cách dễ dàng. Các thay đổi được kiểm tra liên tục giúp đảm bảo rằng tiến độ phát triển luôn diễn ra theo đúng kế hoạch.

image 130

Github Actions

GitHub Actions là một công cụ CI/CD tích hợp trực tiếp vào GitHub, giúp tự động hóa quy trình kiểm thử, xây dựng và triển khai mã nguồn. Với GitHub Actions, bạn có thể cấu hình các workflow (quy trình công việc) trong tệp .yml để tự động thực hiện các tác vụ khi có sự thay đổi trong kho mã nguồn, như push code, pull request, hoặc release.

Jenkins

Jenkins là một công cụ mã nguồn mở rất phổ biến trong CI/CD. Jenkins cung cấp một hệ thống tự động hóa mạnh mẽ cho việc xây dựng, kiểm thử và triển khai phần mềm. Jenkins có một cộng đồng rộng lớn và hỗ trợ rất nhiều plugin giúp tích hợp với nhiều công cụ và dịch vụ khác nhau.

Docker

Docker là một nền tảng container hóa phổ biến, giúp đóng gói ứng dụng và các thư viện phụ thuộc thành một đơn vị độc lập, gọi là container. Điều này đảm bảo ứng dụng có thể chạy nhất quán trên các môi trường khác nhau, từ máy tính cá nhân đến các máy chủ sản xuất. Docker giúp giảm thiểu vấn đề “khác biệt môi trường” giữa các giai đoạn phát triển, kiểm thử và triển khai. Các container được thiết kế nhẹ, khởi động nhanh chóng và dễ dàng quản lý. Với Docker, việc mở rộng ứng dụng cũng trở nên đơn giản thông qua các container được triển khai linh hoạt trên các cụm hạ tầng.

Containerization

Containerization là công nghệ ảo hóa ở cấp độ hệ điều hành, cho phép đóng gói ứng dụng và tất cả các phụ thuộc của nó (thư viện, file cấu hình, môi trường) vào một đơn vị độc lập gọi là “container”.

  • Một container chạy trên nhân hệ điều hành (OS kernel) của máy chủ vật lý hoặc ảo, sử dụng tài nguyên hệ thống hiệu quả hơn so với máy ảo truyền thống.

Công nghệ và công cụ giám sát ứng dụng

image 131

Triển khai thực nghiệm

image 132
image 133
image 134
image 135
image 136

Đánh giá kết quả

image 137
image 138
image 139

Kết luận

Đề tài tập trung vào việc triển khai ứng dụng đa phương tiện trên nền tảng IPv6, giúp nâng cao hiệu suất và khả năng mở rộng của hệ thống. Nhóm nhận thấy rằng việc sử dụng giao thức HTTP/HTTPS cho truyền tải video không phải là giải pháp tối ưu, đặc biệt với các ứng dụng yêu cầu độ trễ thấp và truyền tải dữ liệu liên tục. Để cải thiện, nhóm đã đề xuất sử dụng các giao thức chuyên biệt như RTSP cho việc phát video trực tuyến.

Bên cạnh đó, việc lưu trữ video trên một máy ảo gặp phải một số hạn chế về hiệu suất và độ trễ, do đó nhóm khuyến nghị chuyển sang các giải pháp lưu trữ đám mây hoặc phân tán để tối ưu hóa băng thông và tăng cường khả năng mở rộng.

Trong tương lai, nhóm sẽ tiếp tục nghiên cứu và tối ưu hóa các giao thức truyền tải và phương án lưu trữ để đạt được hiệu quả cao hơn cho ứng dụng.

image 140