deploying systems using aws devops tools
TRANSCRIPT
Deploying systems using AWS DevOpsMatt Parr – Karl Schwirz – Michael Hodgdon
Agenda
Introduction DevOps DevOps with AWS
Continuous Deployment
Release Management
Configuration Management
Infrastructure as Code
Q&A
3
We are a business and technology consulting firm with more than 3,500 consultants across 17 offices in North America and London.
Founded in 2000, headquartered in Seattle
Local consulting model, supported by national capabilities
Broad service offering spanning business optimization, technology enablement and operational effectiveness
Flexible partnering models and a collaborative, agile approach
Consulting Magazine’s Best Firm to Work For 2014 & Glassdoor Best Places to Work 2015
AWS Premier Partner; Global Delivery Success; 100+ AWS Certified Architects
DENVERSAN FRANCISCO
SOUTHERN CALIFORNIA
PHOENIX
DALLAS
HOUSTON
MINNEAPOLIS
PORTLAND
SEATTLE
ATLANTA
CHICAGO NEW YORK
HARTFORD
SILICON VALLEY
TORONTOBOSTON
LONDON
Slalom at a Glance
Footer 4
Slalom DevOps Blog - https://www.slalom.com/thinking/deploy-all-things-with-devops
AWS Services Code Deploy – https://aws.amazon.com/codedeploy/ Cloud Formation – https://aws.amazon.com/cloudformation/ Code Pipeline – https://aws.amazon.com/codepipeline/
Chef - https://docs.chef.io/ Continuous Delivery - Amazon Books
Reference Material
7
“Complexity and human-reliant approaches don’t scale; simplicity and algorithm-driven approaches do.” Philip Fisher-Ogden
Netf l ix
DevOps is changing software delivery
“We’re adopting a strategy of weekly release, desired zero downtime, and continuous build, where we deploy capabilities when capabilities are defined to be ready.”
Ken VennerSpaceX
“Asking "What would prevent the broadest class of future problems?" has led us pretty steadily towards improving Mean-Time-To-Repair, and focusing a lot less on Mean-Time-Between-Failures.” Dan Millstein
HubSpot
8
DevOps is about tools and a process
You want to break down the barriers that traditionally exist which separate the development and operations teams.
Code
Development Operations
“Breaking down silos and bringing people together is the MOST IMPORTANT part of DevOps.”
- GearStream Blog
Development Operations QA
Aligning your teams to work together to establish a process which enables them to drive toward the same goal
9
Code Repository
Automated Build
Continuous Delivery
Automated Testing
Build Versioning
Infrastructure as Code
Configuration Management Monitoring
Release Management
DevOps Tools Continuum
AWS CloudFormatio
nAWS CodeDeploy AWS OpsWorks Elastic
Beanstalk
Control Convenience
Tonight we will cover…
AWS CloudFormation
Templated driven Infrastructure
AWS CodeDeployAutomated
deployments to EC2
AWS CodePipelineAutomated code
delivery
ChefScripted Configuration
Continuous DeploymentAWS Code Deploy
Automation of the deployment process that delivers a changeset to a hosted environment
Continuous Deployment
Deployment
Source Control
Feature Build
Changeset
TriggerDev
Test
Production
Staging
Code DeployProduction
Dev
Application Deployment Groups Revisions
S3 EC2
Code Deploy
“AWS CodeDeploy is a service that automates code deployments to any instance, including Amazon EC2 instances and instances running on-premises.“ – Read More
15
Deployment AppSpec
Define what you want to be installed onto your instance as well as execute predefined lifecycle hooks
1) Package your application (with an AppSpec)
version: 0.0 os: linux files:
- source: chef/destination: /etc/chef/codedeploy
- source: target/hello.wardestination: /var/lib/tomcat6/webapps
hooks:ApplicationStop:
-location: deploy_hooks/stop-tomcat.sh BeforeInstall:
-location: deploy_hooks/install-chef.sh AfterInstall:
-location: deploy_hooks/knife-install.sh ApplicationStart:
- location: deploy_hooks/chef-solo.shValidateService:
- location: deploy_hooks/verify_service.sh
1) Package your application (with an AppSpec)
Start
BeforeInstall
ApplicationStart
ApplicationStop
Install
ValidateService
DownloadBundle
AfterInstall
End
Release ManagementAWS Code Pipeline
Code Pipeline
“AWS CodePipeline is a continuous delivery service for fast and reliable application updates.” – Read More
Configuration ManagementChef
Matt Parr - [email protected]
The Non-Configuration
Management Checklist
Use long checklists for everything
Many people assembling small pieces of the puzzle
Inevitable confusion and frustration
What is Configuration Management?
Configuration Management
Configuration management (CM) : a systems engineering process for establishing and maintaining consistency of a product's performance, functional and physical attributes with its requirements, design and operational information throughout its life.
Case Study : Improvement Opportunities
Entirely manual
Multiple teams involved
Scattered and undocumented process
Poor knowledge transfer / knowledge gaps
Multiple bottlenecks and single points of failure
Inconsistent and not repeatable
Time consuming
Clearly Define Infrastructure
Organized environments, roles and dependencies
Repeatable & Reliable
Efficient & Flexible
Version Controlled
Case Study : Recommendations
A build should be a unit of code whose configuration is maintained
outside the codebase
Examples
Communities
What to look for when selecting a Configuration Management Framework
Well Documented Extensible
Well-established support community through Puppet Labs.
Mature interface that is intuitive and runs on nearly every OS.
Simple installation and setup.
Strong reporting capabilities.
Puppet
Ruby knowledge required for advanced tasks
Pure-ruby versions are being scaled back with more focus on Puppet’s customized DSL
Not focused on simplicity
Code base can grow large and unwieldy
Steep learning curve
Model-driven approach means less control compared to code-driven approaches.
Pros Cons
Rich collection of modules and configuration recipes.
Code-driven approach gives you more control and flexibility over your configurations.
Being centered around Git gives it strong version control capabilities.
Ease of install when it comes to it’s components.
Chef
Learning curve is steep if you’re not already familiar with Ruby and procedural coding.
It’s not a simple tool, which can lead to large code bases and complicated environments.
Doesn’t support push functionality.
Pros Cons
Infrastructure as CodeAWS Cloud Formation
Utilize code to manage configurations and automate provisioning of infrastructure in
addition to deployments
Infrastructure as Code – What to look for?
Flexible
Organized
Concise
Controlled
Multifaceted
Examples
CloudFormation
Collection of related AWS resources Visualize your infrastructure Predictable Orderly Efficient Customizable
CloudFormation
Version controlled infrastructure – your hardware is scripted! Nothing is forever! Ease of integration Increased organizational efficiency
37
Build and configure your application architecture using Chef Cookbooks Visualize using Stacks/Layers
Build from scratch or incorporate existing architectures OpsWorks Agent EC2 or On-Prem
AWS OpsWorks
Questions?
© 2015 Slalom, LLC. All rights reserved. The information herein is for informational purposes only and represents the current view of Slalom, LLC. as of the date of this presentation.SLALOM MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
slalom.com