ULTIMATE SOFTWARE DESIGN

Buy Tickets

Ultimate Software Design and Engineering

Bill Kennedy

Bill Kennedy

Instructor

Intermediate

This class teaches you how to structure and architect software to take advantage of AI coding tools for the long term maintenance of your software. From the beginning, you will program along with the instructor as he walks through the design philosophies and guidelines for engineering software in Go leveraging AI tooling. With each new feature added to the project, you will learn how to think about, read, maintain, manage, and debug code. The core of this class is to teach you how to handle and reduce the spread of complexity in the systems you are building.

What you'll learn

Learn how to structure and architect Go software for long-term maintainability, with a deploy-first mentality in Kubernetes and practical guidance for leveraging AI tooling.

"As a program evolves and acquires more features, it becomes complicated, with subtle dependencies between components. Over time, complexity accumulates, and it becomes harder and harder for programmers to keep all the relevant factors in their minds as they modify the system. This slows down development and leads to bugs, which slow development even more and add to its cost. Complexity increases inevitably over the life of any program. The larger the program, and the more people that work on it, the more difficult it is to manage complexity."

- John Ousterhout

Syllabus

What a student is expected to learn

1

Deploy First Mentality

We begin to build a service with a focus on the ability to maintain, manage, and debug the service in Kubernetes.

  • Design Philosophy, Guidelines, What to Expect
  • Project Layers, Policies, and Guidelines
  • AI Tooling
2

Kubernetes

We introduce Kubernetes and get a K8s environment up and running. At this point, everything we do runs in the K8s environment.

  • Clusters, Nodes and Pods
  • Start the Kubernetes Cluster
  • Create/Build a Dockerfile for the Service
  • Create/Apply K8s Deployment for the Service
3

Go Scheduler and Kubernetes Quotas

We introduce applying Quotas to the deployment and discuss the problems that can result when using quotas.

  • Understanding CPU Quotas
  • Understanding the Go Scheduler
  • Adjust GOMAXPROCS to maximize performance
4

Domain-Driven, Data-Oriented Architecture

We talk about the data-driven, data-oriented architecture. We discuss the design philosophy, guidelines, and semantics of how the three layers of App, Business, and Storage work together.

  • Architecture Review
  • Applying and Implementing Firewalls
  • Data Flow Trust vs Non-Trust
  • Data Isolation, Shaping, and Data Validation
  • Developer Isolation with Domains
  • Leveraging AI Tooling

Prerequisites

  • It is expected that you will have been coding in Go for several months.
  • A working Go environment running on the device you will be bringing to class.

Recommended Preparation

  • Please clone the main repo for the class.
  • Please read the notes in the makefile for installing all the tooling and testing the code before class.
  • Please email the instructor, Bill Kennedy, for assistance.