Principal Cloud Technologist, Kief Morris explores ways to implement cloud-based systems using automation tools like Terraform, CloudFormation, Ansible, Chef, Puppet, Docker, Kubernetes (anything, really) with change as a first-class concern. Apply agile engineering practices like Test Driven Development, Continuous Integration, and Continuous Delivery to your infrastructure. Adopt design patterns to make your infrastructure architecture loosely coupled and resilient. The concepts discussed here are relevant whatever your tools of choice, and should be of interest to any technical practitioner, architect, or decision maker involved in designing and implementing cloud-style infrastructure.
9. "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/
20. Infrastructure STACK
A collection of infrastructure
resources defined and
managed as a unit
Terraform
AWS
CloudFormation
Azure Resource
Manager
Google Cloud
Deployment
Ansible Cloud
Modules
OpenStack Heat
Chef Provisioning
Puppet
Provisioning
Salt Cloud
30. Promote changes to environments using a pipeline
BUILDLOCAL
APPLY
TO QA
APPLY
TO PROD
Sandbox
QA Production
APPLY
TO TEST
Test
31. 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
34. Break out server roles
Stack
Java
Cookbook
Tomcat
Cookbook
Appserver Role
Monitoring
Agent
Cookbook
35. Test server configurations
Test configuration
elements separately Provision and test using
virtual machines or
containers
Test locally or on build
agents
36. Extract separate pipeline stages for
server configuration
Test stack definition
Test server configuration
Test integrated system