Who this book for

Anyone interested in methods to deploy software and gain operational insights using the Go language

DevOps Engineers

Who want to explore using Go to make them more productive by extending DevOps software like Kubernetes, Terraform, Packer, or building your own tools!

Software Engineers

Who would like to use NoOps practices to deploy software and build in operational insights

DevOps Students

Who want to know how Go can be leveraged in DevOps and NoOps settings

Book Overview

Subjects Covered

This book covers techniques and tools that can be essential for DevOps professionals.

The Go Language

Learn the basics and essentials of the Go language

Filesystem interactions

Learn how to read or stream files in the filesystem.

Common Data Formats

Covers how to encode/decode common data formats: CSV, JSON, XLS.

Interact with Remote Data Sources

Learn how you can build REST and gRPC client/servers.

Write Command Line Tooling

How to use the flags and Cobra packages to develop command line tools.

Automate Command Line Tasks

Automate tasks locally using the exec package or remotely using SSH.

Observability with OpenTelemetry

Learn how to use OpenTelemetry for operational insights.

Automate with GitHub Actions

Use GitHub Actions with Go to provide continuous integration.

Using ChatOps to Increase Efficiency

Build a ChatOps bot with Slack to have operational insights at your fingertips.

Creating Immutable Infrastructure Using Packer

Use Go to extend Packer to build system/VM images.

Infrastructure as Code with Terraform

Use Go to build your own Terraform providers.

Deploying and Building Applications in Kubernetes

Extending Kubernetes with the Operators SDK and Go.

Programming the Cloud

Learn how to use a Azure's cloud SDK to provision and control cloud instances.

Designing for Chaos

Master techniques to prevent your DevOps services from going sideways and killing your infrastructure.

The Author

John Doak

I'm the person who is going to teach you techniques I've used to spend my days sleeping in switch closets at LucasFilm instead of typing in commands all day, or sipping tea in a sleep pod around Google, if you can avoid getting into that management thing I fell into. But if you want my professional resume, it is below:

John is the Principal manager of Layer 1 Reliability Engineering at Microsoft. Previously he was the manager of Physical Layer SRE and the Fleet Principal Automation SWE for Azure. His teams leads efforts around part serialization, data validation services and gating controls that enable Azure's datacenter operations. In addition to the mission of his team, John has led the development of Azure Data Explorer's Go SDK and the Microsoft Authentication Library for Go.

Prior to Microsoft, John was a Staff Site Reliability Engineer at Google. As part of the Network Engineering group he created their first network automation orchestration system, configuration/command abstraction systems and many of the automations that ran Google's backbone network. John led the migration of Network Engineering from Python to Go over several years, including the development of Go training classes at Google that have been taught around the world. He was a pivotal figure in the transformation of the network team at Google from a traditional network group to a network/systems group that later integrated with SRE.

Before his work at Google, he worked in the video game and film industry as a Network Engineer for LucasArts/LucasFilm/Industrial Light and Magic on franchises like Harry Potter, Marvel films, Pirates of the Caribbean and of course Star Wars.

John provides free video training classes for Go that can be found at www.golangbasics.com to help bootstrap new Go programmers. You can find his musings on Go and SRE topics at www.golangsre.com.

If you like the image on the book cover, you can see more of John's photographs from around the world at www.obscuredworld.com.

The Author

David Justice

David Justice is the Principal Software Engineer Lead for the Azure K8s Infrastructure and Steel Thread teams that maintain a variety of CNCF and Byte Code Alliance projects.

He is a maintainer of Cluster API Provider Azure and contributor to Cluster API.

Prior to that, David was the technical assistant to the Azure CTO where he was r esponsible for Azure cross-group technical strategy and architecture. Early on at Microsoft, he was a Program Manager leading Azure SDKs and CLIs where he transitioned all Azure services to describe themselves using OpenAPI specifications in GitHub, and established automations to generate Azure reference docs, SDKs, and CLIs.

Prior to Microsoft, David was the CTO of a mobile CI/CD SaaS called CISimple.