Skip to content

CineDeepMatch/Backend-server

Repository files navigation

CineDeepMatch Architecture

Introduction:

CineDeepMatch is a state-of-the-art system designed to efficiently match and retrieve movie-related data using deep learning models. The architecture is meticulously crafted to incorporate GoLang for compilation and concurrency, gRPC for efficient data transmission, Redis for request handling, Paseto for secure authentication, PostgreSQL for user activity tracking and data storage, MongoDB for handling unstructured data, and Docker for containerizing the backend server, simplifying deployment.

1. Programming Language: GoLang

GoLang is chosen as the primary programming language for CineDeepMatch due to its compilation speed, concurrency capabilities, simplicity, and performance. These features are critical for processing high volumes of requests efficiently, aligning perfectly with the demands of CineDeepMatch.

2. gRPC Integration:

CineDeepMatch utilizes gRPC for communication between various components of the system. The system generates two servers: Gateway Server (Port 8080): This server acts as the interface for client interactions, forwarding requests to the appropriate components. gRPC Server (Port 9090): This server handles the high-performance transmission of data to and from the deep learning model.

3. Redis Server:

To handle the influx of requests and prevent server overload, CineDeepMatch incorporates a Redis Server on port 6379. Redis is employed to queue and prioritize tasks, ensuring orderly and efficient request processing, contributing to load balancing and enhanced system responsiveness.

4. Middleware for Authentication:

CineDeepMatch implements a middleware system using Paseto for authenticating both client and model requests. Paseto, a secure alternative to JWT, employs symmetric key decoding to encrypt data and grant access, bolstering the overall security of CineDeepMatch.

5. Database Integration:

PostgreSQL: Utilized for data tracking from user activity and storing user-related information. This relational database ensures robust record-keeping of structured data. MongoDB: Employed for unstructured data, such as movie features and casts. This NoSQL database offers flexibility in managing diverse and evolving movie-related information.

6. Containerization with Docker:

CineDeepMatch embraces Docker for containerizing the backend server. Containerization facilitates deployment by encapsulating the application, its dependencies, and runtime environments in isolated containers. Docker simplifies deployment, ensures consistency across different environments, and enhances scalability.