Hacker News new | ask | show | jobs
by ActorNightly 1732 days ago
Im just wondering if the full loop will ever be complete and deployment patterns start shifting to single file compiled executables.
2 comments

For programming languages that offer a good experience with static linking, sure, but even those may depend on external config files, environment variables, specific ports and sockets, all of which can potentially conflict with other programs on the same physical host. Go binaries are almost always just one file and yet are among the most popular to deploy as containers along with making up virtually all of the CNCF ecosystem.

    cp ./app.AppImage /srv/app/app.AppImage
    for deployment_host in $( <deployment_hosts jq '.[].hostname');
        ssh deployment_user@deployment_host /srv/app/app.AppImage &
    done
okay boss, what's the next problem?
app.AppImage used up all the RAM on the machine, and the kernel OOMkilled sshd. Now it's time to roll back.

(But I guess it wasn't the fault of that deployment -- you just staged the binary, you didn't start it running.)

The app.AppImage is staged to the network share and started on the remote host. The AppImage might eat all the RAM and the AppImage will get OOMkilled but sshd is unlikely to be killed. When the AppImage gets OOMkilled, the ssh session will end with an error and the ssh client will report that the session terminated unexpectedly.

I've done it (and later cringed). But it definitely works.