liveBook · Manning

Feature-based development

As explained in Infrastructure as Code, Patterns and Practices: With examples in Python and Terraform

Feature-based development is a software and infrastructure workflow that isolates changes on separate branches before review and merging.

Feature-based development creates a separate version-control branch for each change, allowing collaborators to work, test, review, and merge independently. In infrastructure work, branches can isolate firewall and license changes so one deployment does not obscure the cause of a failure. section 7.2 section 7.2.3

Apply the workflow with deliberate controls:

  • Create a branch for each infrastructure change and test it independently before merging. section 7.2.3
  • Use manual review to assess architecture, dependencies, and production impact. section 7.2.3 section 7.5
  • Plan for environment and pipeline capacity: parallel branches can increase testing cost, creation time, and concurrency pressure. section 7.2.3
  • Keep branches current and avoid long lifetimes, which can block other deployments and complicate merging. section 7.2.3

Firewall and license changes

Two teammates place their changes on separate branches and test them in distinct environments. The firewall rule can then be assessed independently from the license change before either reaches production. section 7.2 section 7.2.3

Table 7.3 Comparison of feature-based and trunk-based development (view table figure)

Development model

Benefits

Limitations

Feature-based development

Isolates changes using branches

Isolates tests using branches

Organizes manual review of code

Scales across multiple teams and collaborators

Requires diligence and familiarity with updating branches

Encourages long-lived branches

Increases cost in money and time

Trunk-based development

Provides better representation of change behavior

Uses one version control workflow for all changes

Encourages incremental infrastructure changes to reduce blast radius

Requires long-lived testing environment

Does not include a stage for manual review

Requires discipline and organization to scale across multiple teams and collaborators

Compare feature-based development with trunk-based development across isolation, review, testing environments, cost, and collaboration constraints. section 7.2.3

How Infrastructure as Code, Patterns and Practices: With examples in Python and Terraform covers it

How deep it goes
Explains workflow benefits, environment strategies, cost pressures, and branch-lifetime risks without detailing specific implementation commands.
Examples
Uses concurrent firewall-rule and license changes, feature-branch testing environments, and selective integration and end-to-end testing.
What it assumes
Assumes familiarity with version control, infrastructure configuration, testing environments, and continuous delivery workflows.
What you can do after
Apply it via version control and CI frameworks to isolate, test, review, and merge infrastructure changes.
How it connects
Connects version control, continuous integration, continuous delivery, infrastructure as code, manual review, and trunk-based development.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Infrastructure as Code, Patterns and Practices: With examples in Python and Terraform. The section links point to the parts of the book it draws on.