This project demonstrates a file sharing application built with microservices architecture, Docker containers, and AWS cloud integration. It showcases the following:
- Golang API: Handles file uploads and pushes them to a Redis task queue.
- Python Service: Consumes tasks from the Redis queue, processes files, and updates user data in a PostgreSQL database.
Each microservice is packaged as a Docker container for easy deployment and scalability.
The application is deployed on AWS
Used for asynchronous communication between microservices and improved scalability.
- The golang API is the entry point for the application, clients can be developed to interact with it, or use postman.
- The client application will upload textfiles, which the Golang API will receive.
- The Golang API will push the uploaded file including details like username of the file owner to the Redis task queue.
- The Python service will continuously consume tasks from the queue.
- For each task, the Python service:
- Retrieves the username.
- Connects to the PostgreSQL database.
- Checks if the user's text file already exists.
- If yes, appends the uploaded file content to the existing text file.
- If no, stores the uploaded file content as a new text file for the user.