Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/settorka/myflix

Microservice-based video streaming platform developed with Flask. Dockerized and deployed via Jenkins pipeline to GCP VM clusters. Postgresql for auth data, MongoDB for subscriptions and telemetry.
https://github.com/settorka/myflix

Last synced: 9 days ago
JSON representation

Microservice-based video streaming platform developed with Flask. Dockerized and deployed via Jenkins pipeline to GCP VM clusters. Postgresql for auth data, MongoDB for subscriptions and telemetry.

Awesome Lists containing this project

README

        

# myflix
Netflix Clone deployed on Google Cloud

Design
DevOps Pipeline
https://ibb.co/VwGnSKp

Microservice Architecture
https://ibb.co/4Jx6jY5

Implementation
Contains 3 Flask microservices for
- user authentication (https://github.com/settor21/myFlix_userAccess)
- subscriptions (https://github.com/settor21/myFlix_userSubscriptions)
- video streaming (https://github.com/settor21/myFlix_videoCatalogue)

Was deployed on Google Cloud VM instances running Ubuntu (20GB).
Jenkins was used to load the coad from Github and dockerize it in the remote server.

An VM instance running NGINX was setup to
- use the domain name myflix.world for https access and SSL certification.
- Perform load balancing across multiple instances of the production server running the 3 dockerized microservices or the 2 dockerized DB services
-
Another VM instance was created to setup databases for use in the applications (MongoDB and Postgresql).
(https://github.com/settor21/myFlix_authDB)
- For **polyglot persistence**
- Postgresql for user and session info (salted using bcrypt) - /postgresql branch
- MongoDB for Metadata (User clicks, user plays) - /mongoDB branch
* Dockerized versions were deployed to handle requests. A 100GB disk was mounted to ensure persistence of data irrespective of the container

The metadata was then processed by Neo4J, with additional hooks to Tensorflow and the results sent back to mongoDB
(https://github.com/settor21/myflix_recommendedVideos/ )

Stripe payment test page was used during signup to allow users to pay £5 monthly.

The movies were uploaded with metadata to GCP bucket using a movie upload microservice,
running locally to optimse processing of large movie files (4K, 1080p @ 1GB+)
(https://github.com/settor21/myFlix_movieUpload)

SonarQube and Trivy were implemented on all VMs for security and AppArmor on production for docker container security