Groove

Personal Project, 2020. 5. ~ 2020. 9.

Project Summary

Groove is a music streaming service. I did it as a personal project to improve my proficiency in cloud native technologies. I designed the service architecture based on kubernetes like below.

groove-architecture

  1. Outside traffic is routed to kubernetes services thrhough the ingress.
  2. Frontend pod serves reactJS build files through nginx.
  3. The fileupload pod receives a request from a user to upload an mp3 file and converts it into hls format and saves it in the nfs file system.
  4. The stream pod uses nginx-streaming for serving hls format files stored in the nfs file system.
  5. The fileupload and stream pods require a shared file system. After loading an nfs pod and attaching a pvc to it, I mounted it as an nfs volume for both pods.
  6. Nfs pods are allocated persistent disk space via pvc. Pvc is bound to pv created with GKE persistent volume disk.
  7. Api pod is a Restful API server based on the go gin framework. It communicates with the CloudSQL db outside the cluster to provide data.

Role

Tech Stack

Results

groove-main