29 Comments
User's avatar
Fran Soto's avatar

Nice article!

I'm curious on the decision from our two engineers to handle the database on their own for many of the initial phases instead of offloading to a fully managed database service in AWS (DDB or RDS depending on needs).

What could be the reasons they decided to host them in EC2 instances? Costs? A particular DB technology not offered as a service in AWS?

Neo Kim's avatar

RDS should be enough in this context. I forgot to mention it.

Thanks, Fran.

Jakub Nurski's avatar

To be fair, RDS is more expensive than self-hosting DB in EC2.

Ram's avatar

How much will be the difference u think @jakub

Jakub Nurski's avatar

The cost difference can be significant, with self-hosting on EC2 potentially saving 40-60% compared to RDS, depending on the instance type and workload. However, it requires more management effort:

https://www.simform.com/blog/rds-vs-ec2/

https://medium.com/amazon-web-services/by-using-postgresql-on-ec2-save-40-to-60-cost-over-aws-rds-postgresql-e96afdd2210b

Anton Zaides's avatar

Loved the story format! It keeps the article engaging :)

A question though - won't the pre-launch stack be enough for steps 1-3? I'm doing a small project myself, and we indeed chose Amplify, Lambda and RDS. What's the advantages of an EC2 instance versus Lambdas? Cost savings?

Neo Kim's avatar

Lambdas are billed based on the execution time. So if you have infrequent and short execution time, lambdas are a good fit.

But if you have long running and CPU intensive execution, EC2 might be cheaper. Again, it depends on the use case.

It would be interesting to know more about your side project. It's pretty cool that you've something.

Anton Zaides's avatar

Thanks!

It’s the first time I’m playing with serverless, so there are interesting lessons. Up until now I only used k8s (on GCP), with microservices.

Hopefully I’ll reach the milestones you wrote about and I will gladly share my experience :)

Neo Kim's avatar

fingers crossed :)

Varun Aws's avatar

excellent article and well explained

Ayan's avatar

Great , brilliant way of explaining.

Neo Kim's avatar

thanks for the feedback

Kelvin Anigboro's avatar

This was absolutely brilliant ❤️👏🏾

Neo Kim's avatar

thanks for the feedback, Kelvin

Konstantin Borimechkov's avatar

Amazing article! Inspires me to build something and scale it out haha!

Shamir's avatar

Well written. Thanks for penning it down.

Nazeef's avatar

This is awesome! So comprehensive and engaging.

I’m struggling a bit on Step 6 though specifically the Load balancer part and diagram. Any resources I can explore to understand that in detail?

Olufikayo Olowoyo's avatar

Nice presentation and explanation. I would have loved to see the full layout of the architecture at the final stage. That would help put perspective to the final solution. Nonetheless, thanks for sharing.👏🏽👏🏽👏🏽

Nick Poulos's avatar

A bit late to this one, very good article!

But you lost me at the NoSQL throwaway line at the end. Since the NoSql hype rocket has come back to earth there are many ways to store and query JSON data orher than something like Mongo DB.

Add some JSON columns to MySql/Postgres, or stick it on S3.

Indrajeet Harale's avatar

Very insightful. Just highlighting one typo .Thereis extra word 'million' in the statement :"They used an SQL database because it was enough to handle the first 10 million users".

It should have been "They used an SQL database because it was enough to handle the first 10 users"

Harsh's avatar

I am thinking of a scenario if our application is getting used globally and we our using dynamodb, how can we manage our dynamodb ? because writes can happen at any location and it should be quick and should be available at different location. can you please help me in this

Vishakha J's avatar

Nice Article! Loved the story format!

I have a question about S3 and CloudFront mentioned in step 5. What could be the usecase to use both? Won't S3 be enough to host images, css and javascript?

Rahul's avatar

S3 would be good enough to host content, however to reduce latency especially for cross-geographical users CDN(Content delivery network) is mostly used. CloudFront is managed CDN offering from AWS.

In many use-cases, S3 and cloudFront are used together.

Tarun Verma's avatar

Well put. Interesting to see what problems were faced at different levels, and decision taken to overcome them. Thanks, really great article!

Sathish Selvam's avatar

Great post, excellent story.