This simple application takes a file and an email address/phone number. It then scans the file and sends a summary of the meta data of the file and whether it is safe or not via email/phone to the user.
- Each microservice will be a Spring boot or Flask app
- There will be a Serice Discovery server. Each microservice registers itself to this service discovery. Any request from the client will be router through this service discovery
- A dedicated Redis server has been deployed and placed between the FileScanApp and StorageManager
Microservices
- FileScanApp: User facing main app that accepts email or phone and a file to scan
- StorageManager: Accepts owner info and file. Uploads it to cloud and return public URL
- MessagePublisher: Accpets owner info and file URL. Publishes it to the queue
- AntiVirusScanner: Accpets owner info and file URL. Scans for virues. If virus is found, it directly forwards the result to the Notifier. In case the file is clean, it forwards the email, file URL and the result to the MetaDataExtractor service
- MetaDataExtractor: Accpets owner info and file URL. Extracts data from file and publish result to queue
- Notifier: Accepts owner info and the result and pass it on to the EmailMessager or PhoneMessager
- EmailMessager: Accepts owner info and the result and sends out email to user
- PhoneMessager: Accepts owner info and the result and sends out text message to user
- Docker
- Message Queue
- Service Discovery
- Caching
- Spring Boot (StorageManager, MessagePublisher, MetaDataExtractor, AntiVirusScanner, Notifier)
- Flask (FileScanApp, EmailMessager, PhoneMessager)
- RabbitMQ (MessageQueue)
- Bucket4JS (Rate Limiter)
- Redis (Caching)
- Docker (Deploying Redis Server)
- Netflix Eureka Service Discovery (Service Discovery)
- AWS S3 (File Storage)
- Unit Test for each microservice
- Dockerize each microservice
1.Adding authentication - OAuth - SSO (3rd party login) 2.Adding multiple cloud providers - Google Cloud Storage - Azure Blob Storage - Google Drive - Dropbox 3.Deploy the app to GCP App Engine