From 05ebbc399c6d9531558013d127c5782d6f8862d4 Mon Sep 17 00:00:00 2001 From: Joel Coutinho Date: Fri, 29 Sep 2023 17:07:10 +0530 Subject: [PATCH] more progress --- .../how-we-cut-our-aws-costs-part-2/index.md | 32 +++++++++++++++--- ...supertokens-deployment-process-new.png.png | Bin 0 -> 28109 bytes .../supertokens-deployment-process.png | Bin 0 -> 33780 bytes .../supertokens-infrastructure.png | Bin 0 -> 27203 bytes content/how-we-cut-our-aws-costs/index.md | 2 +- 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 content/how-we-cut-our-aws-costs-part-2/supertokens-deployment-process-new.png.png create mode 100644 content/how-we-cut-our-aws-costs-part-2/supertokens-deployment-process.png create mode 100644 content/how-we-cut-our-aws-costs-part-2/supertokens-infrastructure.png diff --git a/content/how-we-cut-our-aws-costs-part-2/index.md b/content/how-we-cut-our-aws-costs-part-2/index.md index 528694c7..9ac033ef 100644 --- a/content/how-we-cut-our-aws-costs-part-2/index.md +++ b/content/how-we-cut-our-aws-costs-part-2/index.md @@ -1,18 +1,40 @@ --- -title: -date: "2023-09-28" +title: Using Multi-tenancy to cut our AWS costs by 50% +date: "2023-10-01" description: "This tutorial wil guide you on how to add SuperTokens to a React and Express app deployed on Vercel" cover: "todo.png" category: "programming" author: "Joel Coutinho" --- -This is part 2 in a two-part series where we go over how we cut down our AWS billing by 50% +This is part 2 in a two-part series where we go over how we cut down our AWS billing by 50%. In this part we will go over SuperTokens Multi-tenancy feature and how it evolved our deployment cycle to cut our AWS billing by 50%. -To recap what we discussed in our [last post](../how-we-cut-our-aws-costs/): -- SuperTokens refined improved the deplyment cycle times by +As a recap here's what we discussed in our [last post](../how-we-cut-our-aws-costs/): +- SuperTokens infrastructure and deployment cycle. +- Improvements made to the SuperTokens deployment cycle to speed up production deployment times by 30% +- How our infra costs were not sustainable and why it needed to change. + +## What is multi-tenancy? + +As mentioned in Part 1, "We saw multi-tenancy as an opportunity to optimize the utilization of our EC2 instances by consolidating our core instances. This would cut down our costs while also providing the expected performance"... But what does that mean? Lets break it down. Multi-tenancy is a feature, typically used by B2B SaaS companies to allow multiple organizations to sign up to their SaaS app, with the ability for each organization to have their own login methods or SSO configurations. Additionally, user pools can also be segmented. Heres how it helped us. + +## How we implemented SuperTokens Multi-tenancy + +With multi-tenancy we re-architected the way we host and manage our users. Initially whenever a signed up and created an app with SuperTokens, it would trigger the following flow: + +[SuperTokens Old Deployment Process](./supertokens-deployment-process.png) + +In this process each development and production SuperTokens core ran in their own separate EC2 instances. With Multi-tenancy we now treat all SuperTokens customers as tenants. This means that we could now host multiple users on a single SuperTokens instance. Our deployment process now looks like this: + +[SuperTokens New Deployment Process](./supertokens-deployment-process-new.png.png) + +As you can see in the new deployment strategy, when a new user signs up, we now create a new tenant in a SuperTokens instance. These instances run in `T3 large` instances. In our testing, for development mode, up to 100 tenants can be run seamlessly on a single instance and for production mode, up to 50 tenants can be created on single instance. + +![SuperTokens infrastructure](./supertokens-infrastructure.png) + + - 100 apps per container. One example compared to 10 instances. diff --git a/content/how-we-cut-our-aws-costs-part-2/supertokens-deployment-process-new.png.png b/content/how-we-cut-our-aws-costs-part-2/supertokens-deployment-process-new.png.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc1c8deda30b0ad68c692207c611cae83afb6c3 GIT binary patch literal 28109 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 literal 0 HcmV?d00001 diff --git a/content/how-we-cut-our-aws-costs-part-2/supertokens-deployment-process.png b/content/how-we-cut-our-aws-costs-part-2/supertokens-deployment-process.png new file mode 100644 index 0000000000000000000000000000000000000000..2fee657526962cc81c76e4f8518c71d5f690b886 GIT binary patch literal 33780 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 literal 0 HcmV?d00001 diff --git a/content/how-we-cut-our-aws-costs-part-2/supertokens-infrastructure.png b/content/how-we-cut-our-aws-costs-part-2/supertokens-infrastructure.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd7d0cc8dd1b103fd184f948620610e31b90967 GIT binary patch literal 27203 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 literal 0 HcmV?d00001 diff --git a/content/how-we-cut-our-aws-costs/index.md b/content/how-we-cut-our-aws-costs/index.md index 5748b21c..7fc1b578 100644 --- a/content/how-we-cut-our-aws-costs/index.md +++ b/content/how-we-cut-our-aws-costs/index.md @@ -46,7 +46,7 @@ So what prompted us to change our deployment process? ## Why we had to change our deployment process The past year has been quite a ride for SuperTokens. We released a host of new features and saw a big uptick in users. But, as our user numbers climbed, so did our infrastructure costs. With our AWS credits running out soon, we knew we had to do something to cut our expenses. -With the release of our new multi-tenancy feature we saw the opportunity to consolidate core instances to optimize the utilization of our EC2 instances to cut down our costs while also providing the expected performance. +With the release of our new multi-tenancy feature we saw it as an opportunity to optimize the utilization of our EC2 instances by consolidating our core instances. This would cut down our costs while also providing the expected performance. In part 2 we will go over the changes we made to achieve this.