Go and DevOps

Understand the structure and prerequisites for the course.

We'll cover the following

DevOps is a concept that has been floating around since the early 2000s. It is a popularization of an operations discipline that relies on programming skills with development psychology popularized by Agile. Many of today's DevOps shops used Python heavily in DevOps as C++ was too painful for many SREsSite reliability engineering are principles that adapts elements of software engineering and utilizes them on IT infrastructure.. But, as time wore on, many of the groups working in Python started having scaling issues. This included everything from Python running out of memory to the Global Interpreter Lock (GIL) preventing true multithreading. At scale, the lack of static types gave an abundance of errors that should have been caught at compile time.

DevOps lifecycle
DevOps lifecycle

But, Python came with more than compile-time and service-scaling issues. Simply moving to a new version of Python in the fleet might cause a service to stop working. The Python version run on Google machines would often get upgraded and expose bugs in your code that the previous version did not. Unlike a compiled binary, you could not just roll back to an old version.

Now, Go has become the de facto language for cloud orchestration and software in the larger world (from Kubernetes to Docker). Go comes with all the tools we need to make huge strides in the reliability of our tooling and ability to scale.

Because many of these cloud services are written in Go, their parts are available to us by accessing their packages for your own tooling needs. This can make writing tooling for the cloud an easier experience.

Prerequisites

This course is for anyone who would like to use Go to develop their own DevOps tooling or to integrate custom features with DevOps tools such as Kubernetes, GitHub Actions, HashiCorp Packer, and Terraform.

The primary audience for this course is those with some programming experience but not necessarily with Go. A basic understanding of command-line tools for any supported operating systems will be
required. It may also be helpful to have some DevOps experience.

Course structure

This course will be split into 15 sections, all of which are divided into 3 subsections. The course structure is depicted below:

Course structure