Go for DevOps Engineers
A comprehensive course designed for DevOps engineers to master Go programming for infrastructure automation and tooling.
...
Share
Go Fundamentals: Data Types and Control Flow
Unit 1: Basic Data Types and Variables
Go's Basic Data Types
Declaring Variables
Short Variable Declaration
Type Inference
Constants in Go
Unit 2: Control Flow Statements
If Statements
Else If Statements
Else Statements
For Loops: Single Condition
For Loops: Multi-Condition
Unit 3: Composite Data Types
Arrays: Declaration
Arrays: Manipulation
Slices: Declaration
Slices: Make Function
Slices: Append
Unit 4: Maps and Range Loops
Maps: Declaration
Maps: Make Function
Maps: Manipulation
For...Range Loops
Functions, Packages, and Modules
Unit 1: Functions in Go
Defining Functions
Multiple Returns
Named Return Values
Function Signatures
Parameter Passing
Unit 2: Variadic Functions and Custom Packages
Variadic Functions
Intro to Packages
Package-Level Scope
Importing Packages
Init Functions
Unit 3: Go Modules and Dependency Management
Go Modules: The Basics
Adding Dependencies
Tidying Up
Vendoring Dependencies
Semantic Versioning
Error Handling in Go
Unit 1: Understanding Go Errors
The Error Interface
Returning Errors
Handling Errors
Ignoring Errors
Error Context
Unit 2: Custom Errors and Defer
Custom Error Types
errors.New
fmt.Errorf
The Defer Statement
Resource Cleanup
Unit 3: Panic, Recover, and Named Returns
What is Panic?
Recovering from Panic
Panic vs. Error
Named Returns
Readability with Returns
Concurrency with Goroutines and Channels
Unit 1: Goroutines: The Foundation of Concurrency
Hello, Goroutine!
Waiting for Goroutines
Goroutines and Closures
The Power of Parallelism
Pitfalls of Concurrency
Unit 2: Channels: Communication is Key
Channel Basics
Buffered vs. Unbuffered
Channel Directionality
Closing Channels
Select Statements
Unit 3: Advanced Concurrency Patterns
Worker Pools
Fan-out, Fan-in
Mutexes
Atomic Operations
Race Conditions
Building Command-Line Applications
Unit 1: Command-Line Basics
CLI Intro
Your First Go CLI
Echoing Arguments
Flag Package Intro
Unit 2: Working with Flags
String Flags
Integer Flags
Boolean Flags
Flag Aliases
Unit 3: Input/Output and Subcommands
Reading from Stdin
Stdout and Stderr
Subcommands: The Idea
Subcommands: Implementation
Unit 4: Building and Distributing
Building Your CLI
Distributing Your CLI
Documenting Your CLI
Working with APIs and JSON Data
Unit 1: Making HTTP Requests
HTTP Requests in Go
Sending GET Requests
Sending POST Requests
Customizing Requests
Query Parameters
Unit 2: Handling HTTP Responses
Response Status Codes
Reading Response Body
Response Headers
Unit 3: Working with JSON Data
JSON Basics
Unmarshaling JSON
Struct Tags
Marshaling JSON
Nested JSON
Unit 4: Inspecting JSON with jq
jq Basics
Filtering with jq
Automating Infrastructure Tasks with Go
Unit 1: Cloud Provider API Interactions
Intro to Cloud APIs
AWS SDK: S3 Buckets
Azure SDK: VMs
GCP SDK: Compute Engine
Error Handling
Unit 2: Automating Infrastructure Tasks
VM Management
Storage Automation
Network Automation
Infrastructure as Code
Configuration Mgmt
Unit 3: Health Checks, Monitoring, and Deployments
Health Check Basics
Monitoring with Go
Deployment Automation
Rollback Automation
Go for DevOps
Testing and Benchmarking Go Code
Unit 1: Introduction to Testing in Go
Testing: Why Bother?
Your First Test
Anatomy of a Test
Assertion Basics
Test Organization
Unit 2: Advanced Testing Techniques
Table-Driven Tests
Subtests
Mocking Dependencies
Testing HTTP Handlers
Testing Errors
Unit 3: Benchmarking and Profiling
Benchmarking Basics
Analyzing Benchmarks
Profiling with pprof
Optimization Techniques
Advanced Benchmarking
Advanced Concurrency Patterns
Unit 1: Fan-In, Fan-Out Concurrency
Fan-Out Explained
Fan-Out Implementation
Fan-In Explained
Fan-In Implementation
Fan-In/Out Together
Unit 2: Pipelines and Context Management
Concurrency Pipelines
Pipeline Implementation
Context Explained
Context Implementation
Context in Pipelines
Unit 3: Rate Limiting and Sync Package
Rate Limiting Intro
Rate Limiting Code
Sync.WaitGroup
Sync.Once
Sync.Pool
Building gRPC Microservices
Unit 1: Introduction to gRPC and Protocol Buffers
What is gRPC?
Protocol Buffers Intro
Installing Protoc
Your First .proto File
Compiling .proto Files
Unit 2: Implementing gRPC Servers and Clients
Building a gRPC Server
Creating a gRPC Client
Testing gRPC Services
Unary RPCs
Server Streaming RPCs
Unit 3: Advanced gRPC Features
Client Streaming RPCs
Bi-directional Streaming
Authentication Basics
Authorization Basics
gRPC Middleware
DevOps Tooling with Go: Building a Custom CLI
Unit 1: CLI Tool Design and Setup
CLI Tooling: Overview
Choosing a DevOps Task
Go Modules: Init
CLI Frameworks: Cobra
Basic CLI Structure
Unit 2: Implementing Core Functionality
Defining Subcommands
Parsing Arguments
Integrating with APIs
Handling JSON Data
Error Handling
Unit 3: Testing, Packaging, and Distribution
Unit Testing
Integration Testing
Building the CLI
Packaging and Distro
Documenting the CLI