Why I Chose Not To Go With AWS For My SaaS Product

Why I Chose Not To Go With AWS For My SaaS Product

My personal experience with AWS and other IAAS

Photo by [Mahdi Bafande](https://cdn.hashnode.com/res/hashnode/image/upload/v1630753683829/hxXVfrGxA.html) on [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)Photo by Mahdi Bafande on Unsplash

Developers from almost every field, be it web development or machine learning, have heard and possibly even used Amazon Web Services(AWS) at least once.

AWS provides on-demand cloud computing and various APIs and even offers a pay-as-you-go billing method. From authentication to object storage to hosting to domain routing, AWS has got you covered.

AWS is the most famous of IAAS(Infrastructure as a service) and in my opinion, it deserves fame.

Below is the time taken to cold start functions in serverless functions by AWS, Azure, and GCP(Google Cloud Platform).

As you can see, AWS is by far the best choice among AWS, GCP, and Azure.

[Source](https://cdn.hashnode.com/res/hashnode/image/upload/v1630753685316/06qwauuCt.html).Source.

A cold start is when the function is called for the first time. It takes a while to set up the system and download the required files the first time.

Another advantage of going with AWS is the diverse offering. You can use the same platform for authentication(via Cognito), database, cloud computing, and much more.

But as I dived into the AWS universe to see how it would exactly fit my upcoming SaaS product needs, I ended up discovering the dark side of AWS.

Steep learning curve.

I’ve used various PaaS(Platform as a Service) like Heroku, Netlify, etc, and I already had an understanding of CDN, routing, caching mechanisms as well as some experience with Google Cloud Platform even before I started with AWS.

Despite this, I struggled with AWS.

There were some actions in AWS that can only be performed via SDKs like downloading full logs of RDS.

The Console, on the other hand, felt like a restricted, unfinished app that utilizes some features of the AWS API.

The learning curve of AWS is so steep that there are literally certificate courses surrounding the AWS ecosystem.

There are over 200 services(yes, 200). And each of these services, see new features and functions added every year.

One of my friends has been using AWS since 2018 and he has to update and keep up with AWS developments every other month.

There are often different offerings that essentially do the same thing but they are different. For instance, Aurora and RDS both offer PostgreSQL databases.

AWS in Plain English has helped me a lot in understanding AWS but the more I learned, the more I understood that managing AWS is a full-time job.

Complex pricing.

AWS offers a free tier but it has its downsides too.

In my opinion, it is the most generous free-tier I have ever come across, primarily because it lasts a full year compared to a few months offered by the competition.

It offers 5GB of free S3 storage(object storage), 750 hours of EC2 instance hours, and much more.

At first glance, it may seem that the pricing and free-tier are perfect for bootstrapped businesses and small companies.

However, the pricing, in general, has a lot of gotchas.

Your ignorance will literally cost you.

For example, whenever you spin up an instance of EC2, you also have to stop them otherwise they will keep running in the background, eating the free compute hours offered by Amazon and before you know it, you have got a hefty bill in your hands.

This is actually an extremely common mistake, so much so that in some cases, Amazon actually forgives the first bill.

You can find countless YouTube videos and blogs on this(here is one).

The bill itself can be complicated to read and understand who is new to AWS.

Even for S3 storage, uploading too many files, regardless of size, can cost you more.

I know that there have to be some limits on the free tier, but these limits need to be more explicit and available.

Moreover, I believe that capping the AWS bills to a particular amount, say $50, for free tiers is something that Amazon should consider. The users can lift the bill cap if they wish to do so.

Not a viable choice for small companies.

The only reason I dived deep into AWS was to understand if it was a viable choice for my upcoming SaaS site.

I am a solo founder and I am bootstrapping the product and as a solo founder, you have to handle the technical as well the non-technical(marketing, SEO, promotions, etc) side of things.

Therefore, managing and spending time learning & optimizing AWS is something that most founders won’t have time for.

Of course, if you have experience in AWS and aren’t starting from scratch like me, then it’s a good choice technically as well as economically.

As I started to develop my product, I came across other issues like choosing the right database, caching strategies, data validation, and keeping the user data secured.

All of this is possible with AWS however, as I stated before, you need to know what you are doing.

And in small teams, that time could be spent doing something more productive rather than sitting all day reading docs and understanding AWS concepts.

My choice: Managed Solutions

After over a month of careful research and asking around, I came to the conclusion that managed platforms like Heroku(which actually runs on AWS), DigitalOcean, Vercel, and others are more apt.

My final two choices were Vercel and DigitalOcean.

Vercel offers everything out of the box, such as a simple yet fast CDN, user-friendly console UI along with simple pricing.

Since I am using Next.js(created by Vercel), it just made sense to go with Vercel however the problem that I came across on Vercel was their serverless architecture.

This means running an instance of Redis locally wasn’t possible on their server. Moreover, I couldn’t find a way to purge the CDN cache dynamically via API calls.

Purging CDN cache can come in handy when a user publishes a blog and then finds a typo and after fixing it, publishes again. In this case, I wanted the old blog with the error to be removed and replaced by the new blog in the CDN.

Although there are a few hacks around this, neither of them felt completely neat and right.

DigitalOcean offered me a mix of AWS and Vercel. It has simple pricing, excellent docs, and community support, and I can also run Redis locally as well as purge cache via the DigitalOcean APIs and much more.

Although I haven’t yet used DigitalOcean, they claim to be cheaper than AWS and it will be interesting to find out if the claim actually stands true in my use case.

Heroku is another option I considered however I found DigitalOcean could be a more economical choice.

Conclusion

I am not saying AWS is horrible in any way.

It is a market leader however I strongly believe that solo founders or small companies shouldn’t spend time on learning and managing AWS and invest time in more productive matters.

If over time, you feel that switching to AWS makes sense, you can always hire an AWS expert.

Despite reading tons of guides, I am still not very confident going with AWS as bootstrapped businesses have limited cash to spend and I don’t see it beneficial to allocating a huge chunk of development phase learning and using AWS.

Things like checking the market fit, finding your target audience, improving the product, etc come above managing servers and databases. In such cases, going for Heroku or DigitalOcean is the best choice.

If you have opinions on this topic or have better solutions, I would love to hear your thoughts & suggestions.

If you enjoyed reading this blog, you should out 5 reasons why I started to use Next.js.

Hope you enjoyed this article!

More content at **plainenglish.io**

Did you find this article valuable?

Support Anurag Kanoria by becoming a sponsor. Any amount is appreciated!