I have identified a problem and want to build a web SaaS to solve it.
For now I am using Spring Boot (because I am Java developer) for backend and Angular 9 for front-end. Also I am using MySQL for database. For now I have implemented login with JWT authentication and a scheduled job which retrieves (via web-service) like 13 000 products (total size of 600 MB because of pictures). And I have implemented product listing with pagination in Angular.
But recently I have come across some scenarios which has given me some doubts over the technologies I have chosen. So maybe I can get some recommendation or advice on the following scenarios:
Scenario 1: Two times a day I have to retrieve 13 000 products from a certain storage and it's size is 600 MB for one time. And since I run it twice it will make 1.2 GB of storage. Doesnt it fill up server storage space very fast? I would like to add that it will run every day. So every day storage is filled with 1.2 GB of data. And also, I am speaking of only storage where I get info from. There will be at least 5 storages where I will retrieve products and this will eat the space even more. I mention again that the enormous size comes because I have to download the pictures and not use picture URL (It is a requirement). Any ideas how to solve such problem? Should I use some cloud based storage?
Scenario 2: We also need to keep up to date information about the products. By that I mean if user adds product to cart, then it immidiately applies to all other users as well. This requirement must be real-time. Is it wise to implement this with MySQL and Spring Webworkers for example? Or maybe there is a better solution for this.
Scenario 3: Certainly one of our needs is real time notifications (for example notification that user has e-mail).
Scenario 4: Payments/Subscriptions are part of our application
Scenario 5: Ability to generate PDF files
Scenario 6: Authentication (in addition to my own implementation of JWT) there should be social authentication (Google for example)
Scenario 7: Like in any other normal application, we need to keep backups of user information. For example each user has it's own products.
Scenario 8: We also need to implement role system which is connected to subscription. Based on subscription type, user gets a certain role and is able to access certain features. I think Spring Security has good API for that. But maybe there is something better out there?
I would like to mention that the system we are building is an e-commerce application. Inventory management system to be exact.
I have heard that there are technologies like Firebase which is cloud base. And it has some nice out of the box features, but I am not certain if it may fit to our situation. Also, I am pretty sure that as the application scales, so will the pricing. And as far as I am concerned, the pricing in cloud is pretty expensive. We have a team of 2 people.
Certainly there are more scenarios (like filtering data and displaying the cheapest products before the expensive one), but I think I have named one of the main scenarios.
Anyway, maybe I can get some advice on this matter.
Live ordinary life in an extraordinary way. Details embedded in this tiny ad:
Two software engineers solve most of the world's problems in one K&R sized book