DEV Community

Cover image for The Tech Stack Map: From Vibe-Coding to Real Understanding
Sergei Shikov
Sergei Shikov

Posted on

The Tech Stack Map: From Vibe-Coding to Real Understanding

If you missed it, check out my previous post on choosing databases...

Whether you’ve fallen in love with vibe-coding and push out projects entirely on intuition, or you decided to figure everything out from scratch like I did, every developer eventually hits a wall. Writing code in Python, JS, or PHP isn't enough anymore. You need somewhere to host the project, somewhere to store images, a way to automate deployments, and a secure server setup.

💡 Quick note: If people are interested, in future posts I’ll talk about why the public sector in government tech loves PHP so much, and why you should actually consider learning it—because it pays really well.

So let’s break down the infrastructure step by step. Whether you're building a simple website or a complex platform with a tangled architecture, designing a piece of software, or even a mobile app—first of all, you need to decide what you actually want or what is expected of you. That’s where the real question arises: what tools do you actually need?

📦 Block 1: Containerization & Scale (Docker & Kubernetes)
Everyone keeps talking about containers and some kind of web of tech. What even is this, and why do we need it? Honestly, it’s not always strictly necessary, and you can totally survive without it, but it's a huge lifesaver when used right.

Docker:

You don't always need it—you can easily get by without it. But it saves lives.

Real-world example: I built a PNG-to-WEBP converter. (By the way, WEBP is great if you're building a website—it adapts to screen sizes and weighs a fraction of the original. For instance, I had a 1784 KB PNG image turn into a 200 KB WEBP file with zero loss in quality).

I didn't want to deploy this converter online, but I needed to run and shut it down locally sometimes. Enter Docker. I shove the project in a container and spin it up whenever needed. It runs almost like it's on a real server.

Why else? Docker isn't just for running things locally; it’s for handing your project to someone else so they can run it, or grabbing someone else’s project and running it without a ritual dance. Basically, containerization is like stuffing things into a container somewhere in China and shipping it straight to your doorstep (kidding, obviously—we're just shipping digital data with a bunch of pre-installed packages).

The Catch: Memory. If you misconfigure Docker, it will devour your RAM. Pro tip for the future: don't forget to clean up your cache and prune old data when constantly rebuilding the same project over and over.

Kubernetes (K8s):

Remember this buzzword? It’s essentially renting a whole bunch of servers and orchestrating traffic between them to balance the load (or just to spend your free time debugging configs). If you have one project—or even three—Kubernetes is almost certainly overkill. Just understand roughly what it does, and you can spin it up later when you're actually forced to.

🖥️ Block 2: The Foundation — Where Does It All Live? (VPS, PM2, NGINX, CRON)
Next up: where do you actually deploy everything?

VPS (Virtual Private Server):

Basically a raw Linux box where you’ll be typing commands into a terminal all day. You could install a GUI control panel to avoid typing, but then you lose all the fun and learning experience.

Golden Security Rule: Never skip updates. Set up SSH keys so nobody else can get in, disable root login over password, and close unused ports. Configure a firewall and turn it on. Just make sure you do it right—otherwise, you'll lock yourself out and have to write a sad support ticket to your hosting provider.

PM2 (Process Manager):

You definitely want to add PM2 and NGINX to your server. Of course, there are alternatives, but just like programming languages, there are tools that are simply easier and better suited. With PM2, we manage our apps, track status and logs, and set up auto-restarts so that if an app crashes, it brings itself right back up.

Warning: Don't misconfigure it, or when you actually want to stop a project manually, PM2 will stubbornly keep restarting it and drive you nuts. Also, if your app throws errors and spams logs, they will eat up your disk space. But PM2 can handle automatic log resetting and rotation—provided you configure it, of course!

NGINX (Web Server):

Created by our very own Russian programmer Igor Sysoev, NGINX now powers half the internet. And you can too, if you read to the end! It’s a web server and configurator that routes traffic to your apps. You literally write in the config which port to listen to (e.g., 4040) and bind your domain to it. Crucial tool. It also handles load balancing: if your app suddenly blows up in popularity and everyone rushes in, NGINX will nicely distribute the load across servers. And, of course, it's a great way to block public access to your sensitive files (like .env).

CRON (Task Scheduler):

You’ve launched everything, but you aren't going to manually check every day if it's still alive, right? Set up CRON, and it will send reports straight to your email or Telegram like a subordinate reporting to a boss. Maybe not every 5 minutes (kidding!), but 4 times a day is more than enough.

☁️ Block 3: File Storage & Security (S3, CyberDuck, rclone)
There's a ton more out there, but let's not take it all in at once. Alright, let's talk about the cloud.

S3 Buckets:

Specialized object storage where you upload and retrieve all your media files: pictures, videos, you name it. To keep it brief, you can spin one up right where you rent your VPS. The beauty of S3 is that serving files to users from an object store is exponentially faster, and uploading them is much simpler. It is far more efficient and secure than cramming thousands of images directly into your VPS project folder.

CyberDuck:

By the way, for easy manual file uploads and browsing in S3, there's a cool app called CyberDuck (the one with the little duck logo) — it gives you a clean visual view of everything stored in your bucket.

Security & Unwanted "Guests":

Security is everything. If you leave ports open (especially 22), don't disable root login, or skip setting up SSH keys—boom, you'll be forced to "take a detour" (kidding). Some bad actor will connect, use your server resources for free (like crypto-mining or spamming), and your own project will just crash. And good luck kicking that hacker out with a broom afterwards. (By the way, later I’ll talk about ClamAV, which also helps with file security, but definitely not today).

rclone:

Since we're talking about S3, here's another handy utility: rclone. It’s used to copy and back up your cloud media. What if something goes wrong or you accidentally delete a bucket? With rclone, you'll sleep much better at night.

Access Control (Crucial!):

And finally, the most important part: you must figure out S3 access permissions. Clearly separate which files can be viewed by anyone on the internet (like profile avatars or product images) and which must remain strictly hidden from prying eyes. Don't forget this!

And with that, this block is officially wrapped up.

Top comments (0)