<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sergei Shikov</title>
    <description>The latest articles on DEV Community by Sergei Shikov (@sergei_shikov).</description>
    <link>https://dev.to/sergei_shikov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4171989%2F1c71311f-825f-43f1-a3ac-68ff6d13e309.jpg</url>
      <title>DEV Community: Sergei Shikov</title>
      <link>https://dev.to/sergei_shikov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sergei_shikov"/>
    <language>en</language>
    <item>
      <title>The Tech Stack Map: From Vibe-Coding to Real Understanding</title>
      <dc:creator>Sergei Shikov</dc:creator>
      <pubDate>Thu, 08 Oct 2026 20:08:04 +0000</pubDate>
      <link>https://dev.to/sergei_shikov/the-tech-stack-map-from-vibe-coding-to-real-understanding-1kki</link>
      <guid>https://dev.to/sergei_shikov/the-tech-stack-map-from-vibe-coding-to-real-understanding-1kki</guid>
      <description>&lt;p&gt;If you missed it, check out my previous post on choosing &lt;a href="https://dev.to/sergei_shikov/choosing-the-right-database-from-sqlite-to-vector-magic-2115"&gt;databases&lt;/a&gt;...&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 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.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;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?&lt;/p&gt;

&lt;p&gt;📦 Block 1: Containerization &amp;amp; Scale (Docker &amp;amp; Kubernetes)&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;Docker:&lt;/p&gt;

&lt;p&gt;You don't always need it—you can easily get by without it. But it saves lives.&lt;/p&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Kubernetes (K8s):&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;p&gt;VPS (Virtual Private Server):&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;PM2 (Process Manager):&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;NGINX (Web Server):&lt;/p&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;CRON (Task Scheduler):&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;p&gt;S3 Buckets:&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;CyberDuck:&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Security &amp;amp; Unwanted "Guests":&lt;/p&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;rclone:&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Access Control (Crucial!):&lt;/p&gt;

&lt;p&gt;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!&lt;/p&gt;

&lt;p&gt;And with that, this block is officially wrapped up.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Choosing the Right Database: From SQLite to Vector Magic 🛠️</title>
      <dc:creator>Sergei Shikov</dc:creator>
      <pubDate>Thu, 08 Oct 2026 19:47:42 +0000</pubDate>
      <link>https://dev.to/sergei_shikov/choosing-the-right-database-from-sqlite-to-vector-magic-2115</link>
      <guid>https://dev.to/sergei_shikov/choosing-the-right-database-from-sqlite-to-vector-magic-2115</guid>
      <description>&lt;p&gt;&lt;strong&gt;For anyone just starting out with databases, a flood of questions is practically guaranteed: Why do we even need them? Why are there so many? Why hasn't someone just built one universal database to rule them all so we can finally move on?&lt;/strong&gt;&lt;br&gt;
Well, it’s exactly the same as with programming languages—every DB serves its own specific purpose. There is no single "best" database; there is only the right tool for the job. Today, I’m going to break down 4 main database groups for you, moving from the simplest to the most advanced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. SQLite: The Compact Speed Demon&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s start with SQLite. To put it simply, this database is just a single file with a .db extension. Reading, writing, and modifying data happens by opening that file directly.&lt;br&gt;
Here is the catch: when modifying data, a user locks the entire file. Sure, the delay might seem negligible at first, but if you have high concurrent traffic, it’s a recipe for disaster. You will inevitably run into the dreaded SQLITE_BUSY error—the base is locked.&lt;br&gt;
But SQLite has a massive superpower. Imagine a setup where you embed the database directly inside a mobile app. The data retrieval becomes practically instantaneous. On top of that, it’s written in pure C. And here lies its ultimate speed secret: the developers use a technique called amalgamation. They bundle the entire source code of the database into just one massive C file (sqlite3.c). While other "grown-up" databases are also written in C, because SQLite's entire codebase is squeezed into a single file, the compiler can perform mind-blowing Inter-procedural optimization (IPO) during assembly. For mobile development, it’s an absolute match made in heaven.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. MySQL &amp;amp; MariaDB: The Workhorses of the Web&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next up is MySQL (and its fork, MariaDB). Fun fact: they were named after the founder's daughters, My and Maria. Borrowing a classic trope from programming books, let me make a quick detour here to dedicate this paragraph to my wife, who patiently put up with me while I was deep in my creative flow writing this!&lt;br&gt;
So, what kind of beast is MySQL? It’s a rock-solid DB. It used to catch a lot of flak for being slow, but nowadays, the InnoDB engine handles heavy loads beautifully by locking individual rows instead of entire tables. Still, it faces some lingering dislike in the community for its historical lack of strict SQL standard compliance and weaker performance with complex analytical queries. That’s because it was built rapidly in a commercial environment, without academic rigidity. On the bright side, it’s incredibly easy to configure and maintain.&lt;br&gt;
By the way, MariaDB is an updated version of MySQL that addressed old flaws, particularly around security. To sum it up: MySQL is brilliant for the Web. Your favorite WordPress sites and even a giant like YouTube run on it. It gets the job done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. PostgreSQL: The Academic Heavyweight&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sharing the "top tier" are two distinct groups, and the first is PostgreSQL. Why is it considered the gold standard? Because it was built with extreme discipline and rigor within a university environment. As a result, it is complex, powerful, and robust. Built-in security, capability to handle massive workloads, and a whole ecosystem of its own.&lt;br&gt;
Postgres is an object-relational database, and its extensibility is wild. Unlike MySQL, you can write custom functions here using Python or JavaScript, and install incredibly powerful plugins. Long story short: the entire fintech industry and serious enterprise backends run on Postgres.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. AI &amp;amp; Next-Gen Databases: Vectors and Graphs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Right alongside Postgres in the top tier—but utilizing a completely different logic—is a group of databases that is gaining massive momentum right now.&lt;br&gt;
• Vector Databases (e.g., Pinecone): These are tailor-made for AI and Large Language Models (LLMs). Forget about traditional tables; they store data as vector embeddings like [0.12, -0.14, 0.35 … 0.25]. Because of this, semantic search is lightning fast. Backed by the K-Nearest Neighbors (KNN) algorithm, it can scan through billions of data points and find what you need in milliseconds.&lt;br&gt;
• Graph Databases (e.g., Neo4j): This is the exact magic behind why you can talk to a friend about wanting to visit Thailand, and an hour later, a hotel recommendation pops up on your phone. Instead of tables, they store the relationships between entities.&lt;br&gt;
• Bonus - In-Memory DBs (e.g., Redis): To put it simply, this is like ultra-fast memory. You dump a key-value pair, retrieve it instantly, and wipe it. Perfect for caching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Closing Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Writing this article actually fulfilled two main goals for me.&lt;br&gt;
First, there’s a golden rule: if you truly want to understand and remember something, explain it to someone else. That’s exactly what I’m doing right here.&lt;br&gt;
Second, this is me closing a personal open loop (a gestalt) from my university days. When I was a student, our professors just brushed it off, saying: "Pff, SQLite isn't even a real option." But nobody bothered to explain why it wasn't an option or what that even meant.&lt;br&gt;
The truth is, it was just designed for completely different use cases! You shouldn't try to hook up a high-traffic website to it. Sure, technically you can. But then again, I could also jump on a stage and start singing right now despite being completely tone-deaf—it would look ridiculous, to say the least.&lt;br&gt;
Every tool has its purpose. Wishing you all the best and happy coding on your awesome projects! ❤️&lt;br&gt;
👉 Read the next part: &lt;a href="https://dev.to/sergei_shikov/the-tech-stack-map-from-vibe-coding-to-real-understanding-1kki"&gt;The Tech Stack Map&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>architecture</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
