Course Introduction
From the beginning of the course, you will pair-program with your instructor Bill Kennedy as he walks you through the design philosophies, architectural decisions, and best practices as they apply to engineering a production-ready Go service.
With each new feature that is added to the service, you will learn how to deploy and manage the Kubernetes environment used to run the service. Throughout the class, the code being worked on is pushed to a repository for personal access and review.
Requirements:
- 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:
9+ 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. From the beginning you will pair program with the instructor, walking through the design philosophies and guidelines used to engineer the code.
01.
Introduction
- 1.0 - Intro
- 1.1: Design Philosophy, Guidelines, What to Expect
- 1.2: Tooling to Install
02.
Modules
- 2.0 - Intro
- 2.1: Adding Dependencies
- 2.2: Module Mirrors
- 2.3: Checksum Database
- 2.4: Vendoring
- 2.5: MVS Algorithm
03.
Kubernetes
- 3.0 - Intro
- 3.1: Tooling Installation
- 3.2: Understanding Clusters, Nodes and Pods
- 3.3: Write Basic Service for Testing
- 3.4: Zarf Layer
- 3.4.1: Docker Images
- 3.4.2: Kind Configuration
- 3.4.3: Core K8s Configuration
- 3.4.4: K8s Quotas / Patching
04.
Initial Service Design
- 4.0 - Intro
- 4.1: Project Layers, Policies, and Guidelines
- 4.2: Prepare Project
- 4.3: Logging Support
- 4.4: Configuration Support
- 4.5: Debugging / Metrics Support
- 4.6: Shutdown Signaling and Load Shedding
05.
HTTP Routing Basics
- 5.0 - Intro
- 5.1: Basic Structure of an HTTP Router
- 5.2: Add a Readiness, Liveness and Test Handler
06.
Web Framework
- 6.0 - Intro
- 6.1: Custom Router
- 6.2: Custom Handler Function
- 6.3: Middleware Support
- 6.4: Sending Responses
07.
Middleware
- 7.0 - Intro
- 7.1: Logging
- 7.2: Request Context
- 7.3: Error Handling
- 7.3.1: Understanding what Error Handling Means
- 7.3.2: Declaring Custom Error Types
- 7.3.3: Consistent Handling and Response
- 7.4: Panic Handling
- 7.5: Metrics
08.
JSON Web Tokens (JWT)
- 8.0 - Intro
- 8.1: Understanding JWT
- 8.2: Private/Public Key Generation
- 8.3: Token Generation
- 8.4: Token Signature Validation
09.
Authentication / Authorization
- 9.0 - Intro
- 9.1: Auth Package
- 9.2: Implementation of an In-Memory Key Store
- 9.3: Middleware
- 9.4: Auth Unit Test
10.
Database Support
- 10.0 - Intro
- 10.1: Kubernetes Support for Postgres
- 10.2: Using Sqlx
- 10.3: Update Readiness Handler to Perform DB Checks
11.
Database Migrations and Seeding
- 11.0 - Intro
- 11.1: Maintaining Database Schemas
- 11.2: Seeding Data
- 11.3: Init Containers
12.
Business Packages
- 12.0 - Intro
- 12.1: Design Philosophies, Policies, and Guidelines
- 12.2: User Data Models and API Precision
- 12.3: Data Model Validation
- 12.4: User CRUD Data Business Package APIs
- 12.5: User Core Business Package APIs
13.
Testing Data Business Packages
- 13.0 - Intro
- 13.1: Support for Starting and Stopping Containers
- 13.2: Support for Starting and Stopping a Unit Test
- 13.3: Write User CRUD Data Unit Tests
14.
REST API
- 14.0 - Intro
- 14.1: Writing User Web Handlers
- 14.2: Support for Starting and Stopping an Integration Test
- 14.3: Write Integration Tests for Users
15.
Open Telemetry
- 15.0 - Intro
- 15.1: Integrate OTEL Web Handler into the Framework
- 15.2: Integrate OTEL into Service Startup
- 15.3: Add Zipkin into POD
- 15.4: Add Tracing Calls Inside Functions to Trace
16.
Review Service Project
- 16.0 - Intro
- 16.1: Check For Dependcy Upgrades
- 16.2: Rebuild and Run the Project
17. Coming Soon
Beyond The Branch
- 17.0 - Intro
- 17.1: Introduction
- 17.2: Handling Log Sync on Error
- 17.3: Removing DB Driver Types
- 17.4: New POD for Zipkin
- 17.5: v1 for Business/Web
- 17.6: Data and Core Changes