liveBook · Manning

Chapter 6: Building a software-defined engineering platform

What you will learn in chapter 6 of Effective Platform Engineering

This introduction explains why Epetech needs an engineering platform before the chapter begins building one.

After this chapter you will be able to

What it builds on

Section by section

Introduction

This introduction explains why Epetech needs an engineering platform before the chapter begins building one.

Key terms: Epetech, tech silos, lead-time planning, product incidents

6.1 Building our own example engineering platform

The section explains why an example engineering platform starts as a simple new product, prioritizes user experience, and organizes its domains to support later growth.

Key terms: Gall’s law, brand-new product, MVP, user experience, API access, self-serve experiences, traditional IT silos, product ownership, internal domain boundaries, subdomains

6.2 Prerequisites to getting started

This section identifies the tools and cloud resources needed to start an example engineering platform and explains the bootstrap and cost constraints.

Key terms: source code version control, secrets store, infrastructure state store, pipeline orchestrator, bootstrap challenge, SaaS tools, AWS free tier, de-provisioning resources, Minikube, GitHub

6.2.1 Getting started with the example tools

This section sets up the example platform’s development tools and explains how to avoid making automation depend on one person’s access token.

Key terms: GitHub organization, platform-team, Terraform Cloud, CircleCI, 1Password vault, access token, personal access token, service accounts, machine users, team secrets store

6.2.2 Developer tools selection criteria

This section explains how to select developer tools that support a secure, maintainable self-service platform, with specific criteria for secrets managers and pipeline tools.

Key terms: self-serve experience, SaaS development tools, platform engineering considerations, customer identity model, authentication and authorization, team onboarding, role-based access permissions, service account, OIDC trust, CLI

6.3 Infrastructure pipeline orchestration practices

Introduces pipeline-managed software definitions for platform components and notes that their paths to production vary by component.

Key terms: software defined, pipeline managed, path to production

6.3.1 Account-level pipelines

Defines account-level pipelines by the once-per-account work they perform and the environment they target.

Key terms: account-level pipelines, once-per-account, environment

6.3.2 Control plane-level pipelines

This section explains how control plane pipelines move Kubernetes-based platform changes through staged environments before production.

Key terms: control plane-level pipelines, path to production, promotion process, Kubernetes, clusters, production, environment, provisioning, configuration, cluster-wide applications

6.3.3 Namespace-level pipelines

The section explains how preview namespaces protect developers’ release paths and applies software-development practices to infrastructure pipelines built for the platform product.

Key terms: preview role, preview instance, namespace, path to production, preview environment, feature flag, breaking change, fixed, recurring release path to production, environmental stability, DEV

6.3.4 Choosing an IaC framework

The section explains how to choose infrastructure-as-code tools for cloud infrastructure and why a platform product should keep its Terraform code focused on its own use case.

Key terms: declarative, imperative, IaC, cloud vendor APIs, processing overhead, Terraform, internal product, opinionated use case, Terraform modules, resource definitions

6.3.5 Test-driven development of infrastructure code

This section explains how test-driven development and integration tests help verify infrastructure configuration, acceptance criteria, reusable modules, and configuration drift.

Key terms: test-driven development (TDD), tests written after primary development, false positives, reusable module, Terraform module, integration tests, CI pipeline, story acceptance criteria, tag values, naming convention

6.3.6 Static code analysis

The section explains which static checks are useful for Terraform IaC and how to run them locally, in commit hooks, and in CI.

Key terms: IaC, static code analysis, test coverage, cyclomatic complexity, Terraform CLI, validation, fmt, Tflint, Trivy, trivy config

6.3.7 Reusable pipeline code

The section explains how to keep infrastructure pipelines simple by moving reusable behavior into shared, versioned code while preserving room for local customization.

Key terms: dumb pipelines and smart code, local pipelines, triggers, steps, shared pipeline code libraries, orbs, DRY, nonfunctional requirements, versioning, injection points

6.3.8 Private executors (runners)

This section explains why organizations using SaaS pipeline tools may need private runners, the resource tradeoff they introduce, and a local CircleCI experiment.

Key terms: private executors, private runners, zero-trust networking, self-managed resource, CircleCI, container-agent service, private runner resource, Kubernetes

6.4 Cloud administrative identity

This section defines the cloud administrative identity domain and places the engineering platform within a cloud provider’s account structure.

Key terms: cloud administrative identity domain, service accounts, foundational infrastructure automation, domain account, product-wide configurations, subaccounts, accounts, projects, subscriptions

6.4.1 Top-level Domain Account

Explains why an engineering platform may need a top-level cloud account for product-wide settings and what access its delivery team needs.

Key terms: top-level domain or state account, product-wide configuration, governance policies, delivery team, administrator-level permissions, cloud accounts

6.4.2 Platform product test environments

Distinguishes platform engineers’ test environments from customer environments and explains why their accounts must be isolated.

Key terms: platform product test environments, sandbox account, internal customer-facing accounts, account-level settings

6.4.3 Internal customer nonproduction and production environments

This section explains why a platform separates developer nonproduction environments from production while treating every internal customer-facing environment as a production service, and notes that its basic account structure may need to evolve.

Key terms: nonproduction developer environments, production environments, internal customer-facing environments, Production, basic structure of accounts, scale, regulatory or contractual problems

6.4.4 Service accounts and permissions

This section builds the IAM identities, roles, and pipelines used to manage platform infrastructure, rotate credentials, and release changes safely.

Key terms: IAM role, service account, assume roles, dedicated roles, bootstrap, IAM users, service account credentials, secrets store, Terraform orb, versioned pipeline code

6.5 Summary

Where this is used later

Concepts explained in this chapter

← Chapter 5: Evolutionary observability Chapter 7: Platform control plane foundations →

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.