Course Introduction

From the beginning you will pair program with the instructor, walking through the design philosophies and guidelines used to engineer the code. With each new feature, you will learn more about the transition from programming to engineering and the points of refactoring required to write production level applications. Throughout the class, Go modules and Kubernetes will be a focus. Everyone will be making better engineering decisions after this class.

Requirements:

A basic understanding of the Go programming language. Students do not have to be expert Go users but they will get the most from the workshop if they have completed the majority of the Go Tour.

  • Studied CS in school or has a minimum of two years of experience programming full time professionally.
  • Familiar with structural and object oriented programming styles.
  • Has worked with arrays, lists, queues and stacks.
  • Understands processes, threads and synchronization at a high level.
  • Operating Systems
    • Has worked with a command shell.
    • Knows how to maneuver around the file system.
    • Understands what environment variables are.
  • Bundle Fee:

    $699
    (Part of Ultimate Go Bundle)

  • Skill Level:

    Intermediate

  • Course Length:

    15+ Hrs

The class goes beyond just the use of the http package and focuses on building CRUD based services with logging, observability and debugging. The class also teaches POD architectures, Docker and cloud deployment. We believe this class is perfect for anyone wishing to build production ready, scalable, fast, and highly concurrent web services in Go.

Course Curriculum

This class teaches how to build production-level services in Go with a focus on macro-level engineering decisions.

01.

Introduction

  • Course Materials
  • 1.1: Macro-Level Engineering

02.

Modules

  • 2.1: Module Mirrors
  • 2.2: MVS Algorithm
  • 2.3: Checksum Database
  • 2.4: Major Version Imports
  • 2.5: Vendoring

03.

Project Setup

  • 3.1: Introduction
  • 3.2: Logging
  • 3.3: Configuration
  • 3.4: Debugging / Metrics
  • 3.5: Shutdown Signaling

04.

Routing Basics

  • 4.1: Handlers Package
  • 4.2: Readiness Handlert

05.

Web Framework

  • 5.1: Custom Handler
  • 5.2: Gathering Trace Information
  • 5.3: Middleware
  • 5.4: Error Handling
  • 5.5: Sending Responses
  • 5.6: Handling Requests

06.

Middleware

  • 6.1: Logging
  • 6.2: Error Handling
  • 6.3: Panic Handling
  • 6.4: Metrics

07.

Authentication / Authorization

  • 7.1: Understanding JWT
  • 7.2: Private/Public Keys
  • 7.3: Basic JWT generation
  • 7.4: Auth Package
  • 7.5: Testing Auth Package
  • 7.6: Auth Middleware

08.

Kubernetes

  • 8.1: Installation
  • 8.2: Clusters & Pods
  • 8.3: Build Service Image
  • 8.4: Configure K8s
  • 8.5: Liveness Probe

09.

Database Support

  • 9.1: Database Package
  • 9.2: Application Integration
  • 9.3: Schema

10.

Business CRUD Packages

  • 10.1: User Package
  • 10.2: Business CRUD API
  • 10.3: Testting Support: Docker
  • 10.4: Testting Support: Unit
  • 10.5: Writing / Running Tests

11.

REST API

  • 11.1: Bind Handlers
  • 11.2: Writing Handlers
  • 11.3: Integration Test Support
  • 11.4: Writing Integration Tests

12.

Running The Project

  • 12.1: Running the project

13.

Open Telemetry

  • 13.1: Web framework support
  • 13.2: Apply Trace code