Deploying Go
I’ve written a lot of Python. If I need to create something quickly, I tend to go to Python. I’ve written a lot of Java. But I almost never write Java code outside of work.
One thing I liked about Java over Python, however, was ease of deployment. I can package all third party dependencies into a single executable jar, making it easy to upload and distribute artifacts. I have never mastered packaging Python for distribution.
One aspect of Go I really enjoyed was that Go compiled down to a single static executable. Now I can
easily distribute this executable to any system that needs it. Recently I completed a project that
uses Go to automate backing up data to AWS. Deploying the artifact to an AWS runtime was a joy. The
runtime only needs to fetch a single executable binary to get all required dependencies. I didn’t
need to install any libraries (e.g., awscli
) on the runtime machine. It just worked. In contrast,
a Python script will need setup to ensure 1) The right version of Python is installed and 2) The
proper external libraries are installed. Both are a PITA.
I find myself telling people I like Go for atypical reasons. I rarely rave about its speed of simplicity. But ease of deployment is certainly a big win for me.