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.
- Outside traffic is routed to kubernetes services thrhough the ingress.
- Frontend pod serves reactJS build files through nginx.
- 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.
- The stream pod uses nginx-streaming for serving hls format files stored in the nfs file system.
- 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.
- Nfs pods are allocated persistent disk space via pvc. Pvc is bound to pv created with GKE persistent volume disk.
- 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
- Designed and developed backend of the music streaming service.
- Deployed application on a kubernetes cluster on GKE.
- Build CI/CD pipeline using travisCI and kubernetes.
Tech Stack
- Infrastructure: Kubernetes, GCP
- Language: go, javascript
- Frameworks: gin, reactJS
- ETC: ffmpeg, nginx-streaming
Results
- The music streaming service was provided through the web UI.
- It’s no longer provided due to server costs.