2026 has already begun, and it’s been well over 15 years since I started running this blog. Naturally, a lot of thoughts have crossed my mind recently. One of the first things I wanted to tackle was a major overhaul of the blog itself. More than anything, it was just too slow. Since I’ve wrapped up the services I was managing in Korea, I no longer had a burning need for a complex Google Cloud Platform (GCP) instance. It was time to touch the server configuration for the first time in a long while.
GCP: An Ill-Fitting Suit
Honestly, using GCP was a bit of “engineering pride” for me. It’s like buying an expensive synthesizer when you don’t really make music properly, just to feel good about it. I had vague expectations like, “If traffic explodes someday, I’ll use autoscaling,” or “I should try using the latest architecture with Cloud Run.”
But the reality? The traffic was calm, yet the costs were consistently draining my wallet—about 80,000 KRW (approx. $60 USD) every month.
When I dug into the billing details, I was dumbfounded. I was using an e2-small instance. This is a shared-core model, meaning if there’s even a slight load, Google forcibly throttles the performance. On top of that, I had allocated 1TB of disk space that was sitting empty. I was essentially paying to heat the air.
It forced me to ask: What do I really want? A massive infrastructure? or just a stable, cost-effective space to jot down my thoughts?

It turned out I was wearing a suit that was far too big for my needs. So, I made a decision. I would leave the complex world of GCP and move to AWS Lightsail. A fixed cost of $5 per month—this simplicity was exactly the module I needed right now.
Bitnami: Encountering Legacy

AWS Lightsail basically uses Bitnami to automatically build and deploy various instance environments. GCP has something similar, of course. To be honest, Bitnami feels like it’s been around for over a decade. I suppose I should be grateful it’s still updated with things like PHP 8.
I have a personal feeling that server virtualization or containerization like Kubernetes settled down around 2015–2020, and recently, everything seems focused on ML instances. Everything else just feels… like legacy. PHP is legacy, Bitnami is legacy… I even saw Redmine available, a tool I used back in 2011, which gave me a good laugh.
But in an era where you can “vibe code” with tools like Firebase Studio and deploy to Cloud Run in one shot without writing much code, does the web framework even matter anymore? If you ask a CLI tool like Gemini or Claude to build a web app, they’ll whip up something using Vite, React, and Tailwind in seconds. It makes me think that developers and operators no longer need to deeply understand these “structured” frameworks.
Packing Up and the Paywall Block
I confidently spun up an instance and tried to move my data, but the 95GB data size grabbed me by the ankle. Checking the files, I found backup files coiled up inside the WordPress root folder in double and triple layers. I suppose it’s natural. I hadn’t thought to clean up files while moving back and forth with WordPress backups for over 10 years. I boldly executed rm -rf and compressed it down to 3.5GB.
But then, a problem arose. I used the All-in-One WP Migration plugin (recommended by Gemini) to back up from GCP. When I tried to restore that .wpress file on the Lightsail instance, it popped up a window saying, “This feature requires a paid extension.”

Wow… if you were going to do that, you should have told me when I installed the plugin. I went through the trouble of reducing the size and moving the file via SFTP, only to be told I have to pay to click the “Restore” button? My head was spinning.
Eventually, my engineer’s stubbornness kicked in. I gave up on relying on the plugin UI and found a tool called wpress-extractor to manually unzip the file in the terminal. Even that didn’t work perfectly, so I just moved the files and manually imported the DB via CLI.
In a way, bypassing a paywall hidden behind a GUI using pure technology… isn’t that what a real developer does? I tried asking Gemini to crack the paywall using YOLO mode, but it couldn’t quite do it—it felt like some backend code was being fetched through a specific server. Regardless, the recovery was complete.
The Infinite Redirect Loop and the Attack of the Legacy
Just when I thought I could connect, the site went dead with an ERR_TOO_MANY_REDIRECTS error. I use Cloudflare for all my services to enforce HTTPS, but the server (Apache) saw the traffic coming in as HTTP and bounced it back. It was an infinite ping-pong match.
The issue was that the database URL was set without www, but Cloudflare was redirecting to include www. I unified the domain to www.matthew.kr and used the wp search-replace command to swap thousands of http links in the DB to https. I also chopped away all the old plugins throwing errors and kept only the essentials.
But there was one more mountain to cross: PHP 8.0. Old plugins I used back in the GCP days couldn’t handle the modern PHP syntax and died screaming “Critical Error.” Honestly, this is a problem you face every time in the web world. And honestly, I didn’t want to dig through it anymore.
I just scraped all the errors, threw them at Gemini, and told it to fix them. Gemini generated the wp-cli commands to deactivate the problematic plugins automatically. All that past struggle of manually checking library versions during server migration… it’s all unnecessary now. I felt a bit of euphoria during this process (though I never want to do it again).
Leaving the Comfort Zone
Ultimately, this migration meant more than just reducing costs from $60 to $5 per month. It was a process of stopping the blind use of “good tools” (GCP), choosing the optimal tool for my situation (Lightsail), shaking off the legacy, and deeply understanding the system structure.
Anyway, through this long shovel-work, the server has become incredibly snappy. Life is funny that way. You never really know until you tear it open. Now that there are no cost worries and no errors keeping me on edge, perhaps these were the necessary steps to pull my blogging life out of laziness.
What matters is not blaming the environment, but solving it with my own hands. Now, in this pleasant new home, I plan to focus on writing again.



