The document discusses how to build evolvable infrastructure through optimizing for change. It recommends defining infrastructure as code so everything is visible, repeatable and changes are actionable. It also recommends continuously validating work in progress through integration testing and building infrastructure in small, independently releasable components to allow for faster and easier changes. This allows infrastructure to be optimized for rapid, reliable delivery of changes.
10. "The highest
performers excel at
throughput and
stability"
State of the DevOps Report 2018
Nicole Forsgren, PhD, Jez Humble, Gene Kim
https://devops-research.com/
11. Optimize for the capability
to deliver changes
RAPIDLY and RELIABLY
12. "Since we can't avoid
change, we need to
exploit it"
Building Evolutionary Architectures
Neal Ford, Rebecca Parsons, Pat Kua
22. Some platforms:
• AWS
• Azure
• Google Cloud Platform
• VMWare
• Digital Ocean
• Bare metal clouds
Infrastructure Platform
A dynamic pool of
compute, storage,
and networking
resources
34. ! Blast radius is managed
! Environments are consistent
! Testing is more reliable
" Adds moving parts
# Requires versioning and
parameterization mechanisms
37. Promote changes to environments using
a pipeline
BUILDLOCAL
APPLY
TO QA
APPLY
TO
PROD
Sandbox
QA Production
APPLY
TO TEST
Test
38. Processes and
controls are
enforced by code
Every change is logged
and traceable, from
commit to production
Enable
governance with
pipelines
Environment
Definitions
Test Code
Compliance
Specifications
Pipeline
Definitions
42. A stack with servers
Stack provisioning
includes creating and
configuring the servers
43. Testing the stack is slow
Provision the entire
stack on the platform,
with all elements
Or update an
environment that we
keep running all the time
Repeat for
every stage
44. Break out a server roleApplication
server role
Stack
Server
configurations
Java
Cookbook
Tomcat
Cookbook
46. Test server configurations
Test configuration
elements separately
Provision and test using
virtual machines or
containers
Test locally or on
build agents
47. Extract separate pipeline stages
for server configuration
Test stack definition
Test server configuration
Test integrated system