meetakbari / SoundSync

Song streaming platform developed with focus on cloud computing aspects!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SoundSync

Project Overview

What if you can upload your recorded song on a platform from where you can listen it anytime across the globe at your fingertips? This might not look novel to you, but the journey of tinkering with this idea and developing it with the concepts of cloud computing was interesting and worth learning for our team at Ahmedabad University.

  • In this project of cloud computing, our main focus was to work with virtualization technology to learn how virtual machines work and deploy the developed services across number of VMs to ensure the high reliability while songs are streaming.

Project Functionality

  • User can upload song file (.mp3 or .wav) & listen it after uploading.
  • Store uploaded file in HDFS through HDFS-Write-API
  • Read song file(to listen for client) from HDFS through HDFS-Read-API
  • Store/Read song metadata to/from MongoDB instances of all/single shard(s).
  • Minimal GUI to upload a song, search the song and listen the song using play/pause button.
  • Deployed server on XCP-ng's VM coordinates between client and HDFS and Metadata DB.

Project Setup

Complete project was setup on 4 different desktops(having different IP addresses) which were connected through LAN as follows:

  • Desktop 1: SoundSync Client
  • Desktop 2: Hadoop Distributed File System
  • Desktop 3: Song-Metadata Database (3 LXC containers with each having replicated MongoDB instance)
  • Desktop 4: SoundSync Server (hosted on XCP-ng VM)

System Architecture

Architecture Diagram

Tech-Stack

  • Java 11
  • React.js
  • MongoDB
  • HDFS
  • LXC (Linux Containers)
  • XCP-ng (Bare-metal Hypervisor)

Implemented Services' Pseudocodes

  • Pseudocodes of essential services of this project are available inside the SoundSync/Pseudocode-of-Services directory.

Demo of the Project

Click here to watch the video

Future Work

  • Improvise streaming service
  • Use more than one storage server (HDFS nodes)
  • Expand the distributed database infrastructure
  • Add more user centric services
  • Add Auto Scaling and Load Balancing mechanism

How To Run This Project

  • To run this project, you will require 4 different desktops and few things to setup before running this project such as installing a XCP-ng hypervisor on single pc, installing hadoop with HDFS on another pc and creating LXC containers(shards) with mongodb instance replicated across all the shards.

Contributors

About

Song streaming platform developed with focus on cloud computing aspects!

License:MIT License


Languages

Language:Java 61.8%Language:JavaScript 30.6%Language:CSS 3.6%Language:HTML 2.5%Language:TypeScript 1.6%