Warning : I'm new in application architecture and officially speaking - this is the first time I'm designing something this big. This is also my own application so I got full authority to change things.
I'm building a serverless application which consists of an on-demand application streaming platform.
Customers who seek to try a specific application (usually large and expensive ones like Photoshop or Solidworks for example) could have the possibility to directly try one from their computers, on their browser, while the application is running on a similar to their computer type of infrastructure.
I'd use the CI/CD pipelines and IaC technology to build EC2 infrastructure that will host these applications and use those same technologies to destroy that infrastructure, since it's volatile.
So to create/destroy that EC2 infrastructure I use the GitLab API.
I've thus decided to go with AWS Lambda & GitLab for now.
Now the architecture questions :
- Is it better to have one serverless function that handles everything or several functions ?
- I'm planning to destroy the EC2 infrastructure after a certain amount of time (10-15 minutes). How should I schedule HTTP communication? Should I use a queue like SQS? Should I use some database and check every minute?
Again, thanks a lot for your wisdom!
Edit : Clarification on some stuff.