I'm really enjoying building tools that allow operations to provision/automate infrastructure in the cloud.
I'd like to explore this area deeper. I've noticed Infrastructure tools are typically Python or Go.
Is there a language preference between the two that I should be focusing on in terms of career growth?
I expect some Python code we've got around will be ported to GO as soon as we need to reduce our cloud bill on some services.
I see Python is becoming a the new Basic and the new LUA: - It is easy to code. - It is used to orchestrate lower-level stuff with a high-level (understandable) interface. - You can type the script on a REPL and copy-paste to an editor. I know, this doesn't look like coding, it's dirty, but it works.
If you're into containers, cloud functions (or openfaas) and k8s, use GO. Advantages: - Faster than Python. Both startup time and runtime because it is compiled. - Since it is compiled, you will catch errors on development that would be Python runtime errors. - Good for responding to K8s triggers, cloud functions, Knative containers (cloud run) without having to pay too much for running them.
I would pick your battles and do things that are actually relevant. For example if you need something that requires high performance because of a bottleneck, do it in Go. If you need a simple server to test if something you’re thinking would work or if Python has better packages use that.
If you really have to pick one to focus on, I would understand the trade offs then pick. A lot of infrastructure code nowadays like kubernetes are written in go, but are you looking to contribute to that ecosystem? Or are you looking to be an automation master connection a whole lotta pipes together?
For example, if you want to use Pulumi, I think they still don't have a stable Go SDK.
Likewise, if you're using Ansible, it's easier to hack on it with Python even if some things are language-agnostic.
Like others said, learn both.
For career growth in that space, I'd learn the proprietary deployment mechanisms they each have... I've used ansible for 2 years in cloud infrastructure, and honestly I found it frustrating. I'd only use them to deploy cloud-specific templates now.
For infrastructure, python is probably better of the two languages... Unless by infrastructure you mean writing the connectors between a cloud database and a performance-sensitive application.. in which case Go should give better performance if tens of ms matter.
My basic take right now is that service-based infrastructure is probably going to favor Go (or node).
Infrastructure that's not accessed directly as a server (kicked off from a separate CI tool or whatever) has a lot of Python representation.
Which side interests you more? Personally I wouldn't be thinking either/or for any popular language or stack, more like 80/20 and what should be my 80?
Try to focus on what your shop has already. Solve their problems first.
I'm joining a shop in the new year that was impressed by my use of the Serverless framework. Impress them.
I would try both and just stay with the one that feels better to use.