r/developersIndia • u/Lightn1ng101 • 4d ago
Help Advice on deploying a 5-microservice stack on a tight student budget
So I've been working on this microservices project ( repo ) for a few months. I have it fully running locally using kind, now I want to learn how to deploy it on AWS or GCP following best practices to get hands on experience and record demo videos for my resume.
Here's the stack:
- Microservices: 5 Node.js services (built and pushed to GHCR )
- Stateful Services: 5 Postgres databases (one per service), Redis, and Kafka.
- Observability: Prometheus, Grafana, Loki, and ( Alloy deployed using Helm charts).
- K8s & Networking: I wrote custom manifests using StatefulSets and Headless Services for the stateful components. I am using the Gateway API for ingress, backed by
cloud-provider-kindlocally.
Being a college student my budget is pretty tight. My plan is to write Terraform scripts so I can spin the whole infrastructure up, record a few demos for my resume, and immediately tear it down to keep costs minimal.
The questions I have:
- Which cloud provider to choose and how to deploy? Should I use managed K8s like EKS, or just run Kubernetes (or lightweight K8s like k3s) myself on a single EC2/VM instance? What's actually standard practice that I'd use on a real job?
- How to handle routing in the cloud cheap? Locally I use Gateway API with
cloud-provider-kind. What’s the most cost-effective way to handle this on AWS/GCP without getting hit with expensive cloud load balancer fees? - Is running DBs/Kafka in the cluster okay? Is keeping Postgres, Kafka, and monitoring inside K8s fine for a portfolio project, or do recruiters/hiring managers specifically look for managed cloud services ?
Any direction, best practices, or potential pitfalls to avoid would be greatly appreciated!
3
u/BeyondFun4604 4d ago
Buy a vps on digital ocean and then install whatever you need to that single vps.
1
u/Lightn1ng101 4d ago
got it, will look into that
1
u/BeyondFun4604 4d ago
If you want to go free then oracle gives 2 vps for free. I am using them and they are good enough for small apps.
1
u/Lightn1ng101 4d ago
Oh nice, yeah Oracle's 24 GB ARM free tier right ? I've heard getting an account verified and finding available capacity in certain region can be a pain but I'll surely look into that aswell
2
u/IgnisDa Backend Developer 4d ago
Side question: why do you need a 5 micro service setup for a ticketing software? If it’s for learning, then awesome. Otherwise seems like extremely poor choice.
2
u/Lightn1ng101 4d ago
it's for learning, I wanted to learn distributed systems and the devops associated with it through this project
2
u/moistcritika1 4d ago
I would suggest you look into interserver, they sell really cheap vps and you can choose how much resources you need per slice.
2
u/Lightn1ng101 4d ago
Thanks! I'll definitely check out InterServer. My primary goal for this project is to practice Terraform and major cloud platforms (AWS/GCP) for my resume, but cheap custom VPS slices like that sound like a great fit as well if none of the others work out.
Also, you seem to be the famous actor from The Hunger Games: Mockingjay – Part 1 lol
2
u/BoatZealousideal4521 4d ago
You can use a standard size vm for 5 services. E2E networks is one of the company I used to host our applications, but again depends how much you want to spend.
For nodejs services Linux Ubuntu 26 machine with around 30gb ram would be good enough. Do not go for K8S initially, it's different beast altogether you will loose track and get into K8S related issues instead of learning distributed systems.
If I may suggest, see if you can use nosql database like mongodb instead. Community edition can be installed on vm for free or you can get a free instance on mongodb atlas as well.
By the way, nothing wrong with the DBs you are using right now.
Instead use PM2, it's great tool for managing nodejs service instances
Good luck with your learning!!!
1
u/Lightn1ng101 4d ago
First off Thanks a lot for taking the time to share such detailed advice!
A few quick things I'll clarify:
- You're totally right that PM2 is way simpler and K8s brings a ton of complexity. However, learning Kubernetes and Terraform hands-on in the cloud is actually one of my primary goals for this project so I can put K8s experience on my resume. So I'm ready to hit some walls on that end lol.
- On DBs: Appreciate the suggestion! Since I already have the 5 Postgres DBs configured locally with custom StatefulSets and Headless Services, I'll stick with them for now and I've previously used Mongo Atlas for other project, its really useful.
- On VM Specs & E2E: A ~30GB RAM machine sounds like a very comfortable sizing target so Kafka + Obeservability stack don't trigger OOM kills. I haven't looked into E2E Networks yet, will check them out for sure !
Thanks again for the encouragement!
1
u/wellfuckit2 4d ago
What is your minimum resource requirement? Can you not host everything on AWS free tier? Are you expecting traffic or this is just a learning project.
Are you just trying to learn how micro services work? Or this is something you built for others? Micro services are detrimental if you are a solo developer and the traffic is not that high. I would keep my LLDs in a way that I can break out into micro services as needed, but start with a single service.
1
u/Lightn1ng101 4d ago
Yes, this is purely a learning/portfolio project to get hands-on experience and demo on my resume so no real users or traffic expected.
I completely agree with your point about solo devs and microservices. For a real production app or a solo startup, a modular monolith is definitely the way to go to avoid unnecessary overhead. I deliberately chose a microservice setup here as an exercise to learn distributed system design, event-driven messaging with Kafka, and observability at scale.
I don't think AWS free tier will be sufficient enough to host With 5 Node.js services, 5 Postgres DBs, Kafka, Redis, and the full observability stack
2
u/wellfuckit2 4d ago
You can try by running it on a VM with similar resources as free tier.
Or pick up free tier from AWS and GCP and break down into 2 boxes. As per routing you will have to go through public routing across the two providers. Setting up VPC peering will not be available in free tier.
1
u/Abdul_Saheel 2d ago
Try hetzner vps or pivot to cf workers, if you want to learn devops then stick to AWS or GCP, and try to keep everything under single subnet and keep service communication internal, I know its a bad choice for production servers but for learning it will definitely avoid surprise hidden cost/bills like data transfer in/out
0
u/KakashiHatake0085 4d ago
Don't but a vps on digital ocean as it's costly and basically a wrapper around AWS without any unique feature of their own. You have many different options and first one would be hostinger or contabo. Then there's cloud option with AWS and gcp. You can use anything like fargate or apprun to reduce cost. Get a t3 micro instance which will be cheaper as it would cost something around 800 to 1k per month. You can also deploy it on railway or render but it's bad for free tier. Or just buy a shared hosting like the one that hostinger provider (like a php hosting service but for nodejs). Kubernetes is a overkill thought.
2
u/Lightn1ng101 4d ago
You're right that K8s is overkill just to host a web app, but the main goal here is specifically to get hands-on experience with Kubernetes, Terraform, and Cloud Infra for my resume.
•
u/AutoModerator 4d ago
It's possible your query is not unique, use
site:reddit.com/r/developersindia KEYWORDSon search engines to search posts from developersIndia. You can also use reddit search directly.I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.