[RFC] afterclass.io v2 migration strategy #112
davidlhw
started this conversation in
Request for Comments (RFC)
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Need
Afterclass is currently deployed on AWS, utilizing key resources like EKS to run it's services. While this was a good feat to keep things scaling with the prevalence of spiked demand to Afterclass during bidding season, this has largely incurred unnecessary costs that are now becoming more unaffordable with AWS credits running out in Sep 2023.
Approach
Migrate from using AWS resources to Vercel + Supabase as the core infrastructure for Afterclass.
This migration will take place over the course of 2 months using the Blue-Green Deployment approach of having 2 servers running, with one being the primary and the other being secondary.
Blue-Green Deployments
For context, refer to this brief wiki article on Blue-Green Deployment.
Change strategy
old.afterclass.io
A
recordnew.afterclass.io
pointing to the ip/domain of the new deploymentA
recordold.afterclass.io
pointing to the same ip of the old deploymentafterclass.io
record to point tonew.afterclass.io
Benefits
Main benefit of this approach is that users will still have access to the old version of afterclass (for some X period, until decommissioned) while also being able to experience the new version of afterclass. If there are any major bugs or issues on new, we can easily fallback and switch the DNS setup to use the old version as primary.
Another important benefit is that this allows us to gather usage insights by asking questions like:
Competition (or Alternatives)
Big Bang
One approach we can take as an alternative is to just decommission afterclass.io as it is and point the domain directly to our new deployment without considering for the old version.
The main reason to avoid this approach is the lack of flexibility in the event of unforseen failures. While not perfect, the current afterclass.io deployment is working well and does its job. Keeping it alive while we test our new deployment will be a safe option in case we need to fall back on an alternate version.
Weighted Routes (AWS Route53)
Another approach to take is the weighted routing appraoch using AWS Route53 as the DNS provider.
What this does is essentially allow for part of our users to reach the old version and another fraction of our users to reach the new version. This approach has some benefits of being able to compare usability metrics across the 2 versions to see which feature / user journey experienced real improvements and which is still lacking in the new version.
However, the main reason to avoid this approach is the complexity in getting it set up.
A few things needs to be done for this to be effective, just to list a few:
Beta Was this translation helpful? Give feedback.
All reactions