top | item 46909775

(no title)

exac | 24 days ago

Sorry, there is zero chance I will ever deploy new code by changing a symlink to point to the new directory.

discuss

order

silisili|24 days ago

I don't do devops/sysadmin anymore, so this would have been before the age of k8s for everything. But I once interviewed for a company hiring specifically because their deployment process lasted hours, and rollbacks even longer.

In the interview when they were describing this problem, I asked why the didn't just put all of the new release in a new dir, and use symlinks to roll forward and backwards as needed. They kind of froze and looked at each other and all had the same 'aha' moment. I ended up not being interested in taking the job, but they still made sure to thank me for the idea which I thought was nice.

Not that I'm a genius or anything, it's something I'd done previously for years, and I'm sure I learned it from someone else who'd been doing it for years. It's a very valid deployment mechanism IMO, of course depending on your architecture.

sholladay|24 days ago

Why? What do you prefer to do instead?

gib444|24 days ago

Anything less than an entire new k8s cluster and switching over is just amateur hour obviously

iberator|24 days ago

why? it works and its super clever. Simple command instead some shit written in JS with docker trash

1718627440|24 days ago

Isn't that the standard way to do that? Why wouldn't you?

gonzus|24 days ago

Then you are locking yourself out of a pretty much ironclad (and extremely cost-effective) way of managing such things.

bandrami|24 days ago

Works pretty well for Nix

atmosx|24 days ago

Worked pretty well in production systems, serving huge amount of RPS (like ~5-10k/s) running on a LAMP stack monolith in five different geographical regions.

Just git branch (one branch per region because of compliance requirements) -> branch creates "tar.gz" with predefined name -> automated system downloads the new "tar.gz", checks release date, revision, etc. -> new symlink & php (serverles!!!) graceful restart and ka-b00m.

Rollbacks worked by pointing back to the old dir & restart.

Worked like a charm :-)

slopusila|24 days ago

that's how some phone OSes update the system (by having 2 read only fs)

that's how Chrome updates itself, but without the symlink part

dizhn|24 days ago

No snapshotting at all? Thinking about it.. The filesystem does not support it I suppose.

x4132|24 days ago

not surprised about the chrome part, but pretty shocked at the phone OS part. I know APFS migration was done in this way, but wouldn't storage considerations for this be massive?

kjs3|23 days ago

Clearly, there's a wildly baroque stack of abstractions meters deep that is way better than a simple, reliable, well tested, ubiquitous, idiomatic one line solution. Modern software at it's finest.

alpb|24 days ago

Nobody's saying you should deploy code with this, but symlinks are a very common filesystem locking method.