Deploying systems using AWS DevOps tools

Post on 07-Jan-2017

761 views 1 download

Transcript of Deploying systems using AWS DevOps tools

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

DevOps

Karl Schwirz – karl.schwirz@slalom.com - @DrKarl66

5

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 - matt.parr@slalom.com

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