There are so many ways you can architect an application for deployment on AWS and it seems to me that the options only increase when you have an existing application. One of our original thoughts was that we would create a multi-tenant version of our application. We then considered an application deployment per tenant. Neither of those had strong appeal so we’re investigating a native AWS solution.
Once we decided to use the services that AWS provides, we’ve come across more decisions to make. We need to manage data flow, so do we use Simple Queue Service (SQS) or Simple Workflow Service (SWF). No wait, new applications should you Step Functions not SWF. Elastic Beanstalk or Lambda or both? Java, Python, or Node.js? Angular, React, or Vue.js? The decisions come up and down the stack.
Some team members want to know which to choose so we don’t go down deads. I’ve come to the opinion that you make a decision and run with it but make sure you are open to and leave the option for change. It’s all so fast moving and changing that best practices and technologies will shift throughout the life of your application and you have to account for that. I think this was always the case, but in days previous to the cloud we could bury our heads and move on from a project before it came to bite us.