What you will learn in Infrastructure as Code, Patterns and Practices: With examples in Python and Terraform
With examples in Python and Terraform
Chapter by chapter
Concepts explained in this book
- infrastructure as codeAn infrastructure as code tool is software that provisions, configures, updates, or otherwise manages infrastructure from code or declarative configuration.
- moduleA module is a distinct, bounded software unit that groups related code or functionality and provides an organizational or interaction boundary within a larger system.
- idempotencyIdempotency is the property that applying an infrastructure operation repeatedly produces the same resulting state as applying it once.
- deployment pipelineA delivery pipeline is an automated sequence of activities that validates, packages, and delivers software or infrastructure changes.
- resource importA tool feature that adopts existing infrastructure resources into the tool's managed configuration or state.
- high-level resourceA high-level resource is an infrastructure resource whose existence or configuration depends on another lower-level resource or module.
- source of truthA source of truth is the authoritative representation against which the actual state of a system or resource is reconciled.
- reproducibilityRepeatability is the property of automation that produces consistent results when run multiple times.
- evolvabilityEvolvability is the property of an infrastructure system that allows it to accommodate scale, growth, and architectural change with minimal effort and risk of failure.
- dependency injectionDependency injection is a design pattern in which high-level modules obtain low-level dependencies through an abstraction rather than constructing or directly binding to them.
- configurationA configuration is a set of settings or instructions that specifies how an infrastructure resource or system should be provisioned or operated.
- testing environmentA testing environment is an operational context containing infrastructure and software for validating changes before production deployment.
- immutable collectionImmutability is a paradigm in which an established artifact is not modified in place and changes are made by creating a new version.
- dependencyA requirement that one infrastructure resource be created, configured, or available in relation to another resource.
- single repository structureA repository organization pattern in which all infrastructure configurations and modules are stored together in one code repository.
- versioningVersion control is the practice and supporting system for recording, comparing, and managing successive versions of files and configuration.
- refactoringRefactoring is the disciplined restructuring of an implementation without changing its externally observable behavior.
- blue-green deploymentA blue-green deployment is a release pattern that maintains separate old and new infrastructure environments and switches service traffic between them.
- blast radiusThe blast radius is the extent of system impact caused by a failed change, measured by the number or criticality of affected components.
- monolithic architectureAn infrastructure-as-code organization pattern in which all infrastructure resources are defined in one tightly coupled configuration.
- integration testIntegration testing is the evaluation of interactions among multiple infrastructure resources or modules against expected configuration and behavior.
- GCP APIThe GCP API is the programmatic interface for creating, reading, updating, and deleting Google Cloud Platform resources.
- declarative configurationInfrastructure configuration is the declarative specification of the resources, properties, relationships, and metadata that make up an infrastructure system.
- version pinningVersion pinning is the practice of configuring a dependency to use a specific version rather than an automatically selected or latest version.
- composabilityComposability is the property of an infrastructure system whose resources can be assembled in different combinations and updated independently.
- policy as codePolicy as code is the practice of expressing security and compliance rules in executable or declarative form so infrastructure changes can be evaluated automatically.
- resource tagMetadata attached to an infrastructure resource to identify, classify, or organize it according to attributes such as ownership or cost.
- complianceCompliance is adherence of systems, configurations, or operations to applicable policies, standards, regulations, or requirements.
- principle of least privilegeThe principle of least privilege grants each user or service account only the minimum permissions required to complete its tasks.
- low-level resourceA low-level resource is an infrastructure resource that supplies attributes or references required by higher-level resources.
- cloud provider APIA programmatic interface exposed by a cloud or infrastructure provider for querying or managing cloud resources and services.
- factoryA factory module is a reusable infrastructure module that generates standardized infrastructure resources from inputs and default configuration values.
- infrastructure resourceAn infrastructure component is an independently identifiable element of an infrastructure system, such as a server, network, or load balancer.
- cost driverA cost driver is a resource attribute, usage characteristic, or operational factor that influences infrastructure expense.
- Singleton patternA singleton pattern is a design pattern in which a resource or set of resources has one authoritative instance within a system.
- dry runA dry run is an execution mode that analyzes and reports expected changes without applying them to the target resources.
- roll-forwardA recovery technique that corrects a failed or faulty change by applying a subsequent corrective change rather than reverting to a previous state.
- service accountA service account is a non-human identity used by software or automated processes to authenticate and access resources.
- static analysisStatic analysis is the examination of source code or configuration without executing or deploying it to detect errors, inconsistencies, or violations of specified standards.
- soft mandatoryA policy enforcement mode in which a failed requirement requires manual review rather than automatically blocking a change.
- tool stateTool state is a representation of infrastructure state stored by an infrastructure-as-code tool that tracks the configuration of resources managed by that tool.
- end-to-end testingEnd-to-end testing verifies the behavior of an entire system across its integrated components and external interfaces.
- machine typeA machine type is a predefined cloud virtual-machine configuration specifying the computational resources allocated to an instance.
- roleAn access-control role is a named collection of permissions that can be assigned to an identity or service account.
- approval decisionManual approval is a human authorization step that permits a pending software or infrastructure change to proceed.
- trunk-based developmentTrunk-based development is a workflow that integrates small, incremental changes directly into a shared main branch with short-lived or no feature branches.
- multiple repository patternA repository organization pattern that separates infrastructure-as-code configurations or modules into distinct repositories by team or function.
- Terraform outputA Terraform output is a named value exported by a module for access by other configurations or users.
- canary deploymentA canary deployment is a release pattern that incrementally exposes a change to a limited portion of users, traffic, or infrastructure before expanding it broadly.
- builder patternThe builder pattern is a design pattern in which inputs determine which components are created and how a complex result is assembled.
- software upgradeA tool upgrade is the process of replacing an infrastructure tool with a newer version while preserving or adapting its managed resources and configuration.
- IAM policyAn IAM policy is a declarative access-control specification that grants or denies identities permission to perform actions on resources.
- terraform importterraform import is a Terraform command that associates an existing infrastructure resource with a Terraform state.
- prototype patternA reusable design pattern that defines static default values or configuration for consumption and extension by other modules.
- prototype moduleA reusable infrastructure module that exports predefined configuration values or resources without necessarily creating infrastructure directly.
- reconciliationThe process of bringing recorded or desired infrastructure configuration into agreement with the actual infrastructure state.
- composite design patternA structural design pattern that treats individual components and compositions uniformly, allowing hierarchical assembly of grouped components.
- opinionated defaultAn opinionated default is a preset configuration value that deliberately favors a recommended secure or standardized behavior over unrestricted flexibility.
- lintingLinting is the automated analysis of code or configuration to detect nonstandard style, invalid constructs, and incorrect configuration.
- contract testingA contract test verifies that an integration between components conforms to an agreed interface or behavioral contract.
- continuous deploymentContinuous deployment is a software delivery practice that automatically deploys changes to production after they pass the required validation steps.
- persistent testing environmentA persistent testing environment is an integration-test environment whose infrastructure resources remain available across test executions.
- Cloud SQL Auth proxyCloud SQL Auth Proxy is software that provides authenticated connections from applications to Google Cloud SQL database instances without requiring direct database network access.
- provisioning toolSoftware that creates and prepares infrastructure resources and manages their infrastructure-level dependencies.
- hotfixA hotfix is a targeted corrective change released to address an urgent defect or operational problem.
- feature flagA feature flag is a Boolean-controlled configuration mechanism that enables or disables a feature, resource, dependency, or attribute.
- branchA branch is a named line of development in a version-control repository that maintains changes independently from other lines until they are combined.
- active-passive configurationAn active-passive configuration maintains an active environment that serves traffic and a separate passive environment available for fallback or change activities.
- adapterAn adapter pattern converts one interface into another interface expected by clients so incompatible components can work together.
- Google Cloud Billing Catalog APIThe Google Cloud Billing Catalog API is a Google Cloud interface for retrieving service, SKU, and pricing information.
- monthly budgetA monthly budget is a financial spending limit assigned to resources or services over a one-month period.
- resource skuA resource SKU is a provider-defined identifier and specification for a particular cloud resource offering and its capabilities.
- base infrastructureBase infrastructure is the foundational set of resources on which other infrastructure resources depend.
- brownfield environmentAn existing environment containing active infrastructure resources that were created or managed before the current infrastructure-as-code definition.
- dependency graphA dependency graph represents infrastructure resources and the dependency relationships among them.
- rolling updateA change technique that updates similar infrastructure resources incrementally, validating each resource before proceeding to the next.
- active resourceAn active resource is a provisioned infrastructure resource whose current state can be inspected in its operating environment.
- feature-based developmentFeature-based development is a software and infrastructure workflow that isolates changes on separate branches before review and merging.
- configuration management serverA system that stores and manages named configuration fields and their values for consumption by automation or infrastructure processes.
- pytestpytest is a Python testing framework that discovers and runs tests using naming conventions and assertion-based test functions.
- backward compatibilityBackward compatibility is the property that a newer version continues to support interfaces, behaviors, or configurations expected by existing users or dependents.
- virtual cpuA vCPU is a virtualized processing unit allocated to a cloud computing instance.
- major changeAn infrastructure change that may affect system architecture, security, or availability and lacks well-defined implementation or rollback procedures.
- mediator patternA mediator pattern organizes dependencies among infrastructure resources and includes logic to create or delete objects based on their dependencies.
- infrastructure testingInfrastructure testing is the automated verification of infrastructure configuration and behavior against expected conditions.
- policy enforcement levelA policy enforcement level specifies how strongly a policy violation must affect approval or deployment of a change.
- active-active configurationA deployment pattern in which multiple environments concurrently process requests and replicate data between them.
- failoverFailover is the transfer of service traffic or operation from a failing component or environment to a standby replacement.
- facade patternA structural infrastructure design pattern in which a module exposes selected resource attributes as an abstraction for dependent modules.
- stateful infrastructureA stateful infrastructure resource is an infrastructure component that persistently stores or manages application data across operations and replacements.
- artifact repositoryAn artifact repository is a service that stores, versions, and distributes packaged software or infrastructure artifacts.
- networkA network is the interconnected communication infrastructure that enables systems and users to exchange data.
- standard changeA standard change is a routine, predictable modification that follows an established delivery approach.
- GitOpsGitOps is an operational practice that manages infrastructure and application changes through version-controlled declarative definitions and automated reconciliation or deployment.
- dependency inversionA software design principle stating that high-level components should depend on abstractions rather than low-level implementation details.
- immutable infrastructureImmutable infrastructure is an infrastructure-management approach in which any configuration change is applied by creating a new resource rather than modifying an existing one.
- mutable infrastructureMutable infrastructure is an infrastructure-management approach in which resources are modified in place without being recreated or restarted.
- infrastructureThe computing resources and supporting systems that provide the foundation for running applications and services.
- configuration managementThe practice of maintaining systems in a defined configuration state across their lifecycle.
- cost optimizationCost optimization is the practice of controlling infrastructure spending by aligning resource usage and capacity with demand and organizational requirements.
- pair programmingPair programming is a software development practice in which two programmers work together on the same implementation, typically sharing one workstation or alternating coding and navigation roles.
- GCP projectA Google Cloud resource that provides an administrative and organizational boundary for cloud resources and services.
- securityThe protection of systems, information, resources, and operations against unauthorized access, use, disclosure, alteration, disruption, or destruction.
- quality gateA quality gate is a checkpoint or criterion that determines whether work or an artifact meets specified requirements before proceeding to a later stage.
- global load balancingThe distribution of application traffic across service endpoints located in multiple regions or environments.
- reliabilityThe capability of a system to perform its required functions consistently under stated conditions for a stated period.
- change managementA governance process of steps and reviews for implementing production changes while controlling their risk.
- misconfigurationAn infrastructure or system configuration whose settings create unintended security exposure or violate required security controls.
- copyleft open source licenseA copyleft open source license requires distributed modified versions of covered code to be released under specified open source terms, often with corresponding source code.
- permissive open source licenseA permissive open source license allows code to be used, modified, and distributed with relatively few conditions, typically including preservation of license and copyright notices.
- chargeback systemChargeback is the allocation of incurred infrastructure or service costs to the teams or organizational units responsible for them.
- Git FlowGit Flow is a branching workflow that organizes software development around dedicated branches for features, releases, and fixes.
- pull requestA pull request is a repository collaboration request that proposes external changes for review and merging into another branch.
- release notesRelease notes list changes to code for a given release, including changes to interfaces and behavior.
- software release lifecycleA release process is a sequence of checks and distribution steps that certifies a software change for consumer use.
- semantic-releasesemantic-release is an automated software release tool that determines versions and generates release notes from structured commit messages.
- secret managementA secrets manager is a system for securely storing, controlling access to, and rotating sensitive credentials such as passwords.
- manual infrastructure configurationThe technique of setting up and modifying computing infrastructure through direct human operations instead of declarative definitions and automated execution.
- semantic versioningSemantic versioning is a version-numbering scheme in which major, minor, and patch components communicate the kinds of changes between releases.
- testing in productionTesting in production is the practice of validating software or infrastructure behavior in the live production environment under controlled conditions.
- change failure rateChange failure rate is the proportion of deployments or changes that require remediation, rollback, or other corrective action because they fail.
- software supply-chain attackA supply-chain attack compromises software, infrastructure, or dependencies through a provider, maintainer, distribution channel, or development process.
- rollbackRollback is the restoration of infrastructure configuration or system state to an earlier known-good version.
- package managerSoftware that automates the retrieval, installation, updating, and dependency management of reusable software packages.
- cloud wasteCloud waste is unnecessary consumption of cloud resources or expenditure that does not provide corresponding business or technical value.
- CRUDCRUD operations are the four fundamental capabilities for creating, retrieving, modifying, and removing a resource.
- module approval processA module approval process is a controlled review workflow that evaluates module changes before they are released for use.
- self-serviceSelf-service is an operational practice in which teams independently request, create, or modify resources without requiring another team to perform every change.
- image-building toolA software tool that constructs machine images with specified software and configuration preinstalled.
- domain-specific languageA language designed to express concepts and operations within a particular application or problem domain.
- smoke testA small, rapid set of tests that checks whether critical functionality remains operational after a change.
- cryptographic keyA secret is sensitive information, such as a password, token, or cryptographic key, whose disclosure could enable unauthorized access.
- multi-cloud deploymentA multicloud configuration defines and coordinates infrastructure resources across multiple public cloud providers.
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.
