Infrastructure on AWS
Decision
We host most of our infrastructure on AWS. We consider AWS native options when making infrastructure decisions, but are not bound to only use AWS.
Problems
We need to run our Compute, Network, and Storage infrastructure somewhere.
Context
Currently, we have most of our infrastructure on AWS, but we also have infrastructure on other providers:
- MongoDB, running on AWS but managed via MongoDB Atlas
- Integrations with Google Sheet on Google Cloud Platform
- A secret key on IONOS
- Hosting the client-dashboard-2 and the updated admin-dashboard on Netlify
- LaunchDarkly for Feature Flags
There are discussions with a customer who might require us to switch away from AWS at some point. The discussions haven't concluded yet.
Options
Reasoning
AWS offers most advanced serverless offerings which will allow us to handle infrastructure from inside each team. Google Cloud Platform is a strong alternative in case we can't use AWS in the future, but is overall used less and therefore has a smaller market to hire experienced developers from and less helpful community projects. Also, AWS has innovations like AWS CDK (for writing infrastructure in TypeScript) which Google does not offer comparable alternatives to.
IONOS and StackIt offer the benefit of Germany-native hosting which is a benefit from a GDPR perspective, but at this point offer almost no serverless infrastructure, are tested significantly less in production, and do not have a huge group of freelancers and other devs with preexisting experience compared to AWS or GCP.
We are running into a bit of a risk that one of our future customers pays us to revise this decision, but moving forward full-steam now will help us to clean up our architecture more and sooner, so any additional coupling we create for AWS will be more than compensated for by overall simpler system architecture if we eventually do need to abandon AWS.
At the same time, AWS isn't the perfect solution for everything, and for some things (e.g. connecting to a Google Sheet) it isn't an option at all. Therefore, we will continue using other tools alongside AWS.
Consequences
We don't need to change much about existing hosting infrastructure. We will need to cautiously monitor ongoing discussions with the customer who might require us to switch away from AWS to ensure we know if we need a new ADR with a different decision. Up until that point, we need to take bold decisions and not be blocked by the possibility of having to change again at some point in the future.