The tutorials end at "it works on my machine." That's where the hard part begins.
My first real deployment taught me more in three days than three months of following tutorials. None of it was about code. It was about ports, process managers, file permissions, reverse proxies, and the subtle difference between an error that crashes your app and one that makes it silently return wrong data.
The first lesson was about process supervision. Running your app in a terminal is not a deployment. The moment you close that terminal, your app is gone. You need something watching the process, restarting it when it crashes, and starting it automatically on server reboot. On Linux, that's systemd. Learn it early — it's not optional.
The second lesson was about logging. Your app will do something unexpected at 3am when you're asleep. The only way to know what happened is if your app wrote it down. Write to stdout. Systemd captures it. Run journalctl and watch what happens in real time.
The third lesson — the one nobody writes about — is that production traffic is different from your test data. Not in volume, but in character. Real users send empty strings where you expected numbers, emoji in fields you didn't think would contain emoji, and requests that hit the one code path you never tested.
Deploy something small. Deploy it early. The lessons are cheaper when the stakes are low.
2 Comments
Leave a Comment
Comment submission is disabled in this demo.