increase speed and agility with amazon web services

95
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved Increase speed and agility with Amazon Web Services Andreas Chatzakis, AWS Solutions Architect @achatzakis 1 st Athens DevOps meetup 29 October 2015

Upload: amazon-web-services

Post on 12-Apr-2017

871 views

Category:

Business


0 download

TRANSCRIPT

Page 1: Increase Speed and Agility with Amazon Web Services

©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Increase speed and agility with

Amazon Web Services

Andreas Chatzakis, AWS Solutions Architect

@achatzakis

1st Athens DevOps meetup – 29 October 2015

Page 2: Increase Speed and Agility with Amazon Web Services

Why are you here?

• Mature organization that wants to innovate fast

• Startup that wants to scale its team

• Learnings from Amazon & other AWS customers

• Services for management & deployment

Page 3: Increase Speed and Agility with Amazon Web Services
Page 4: Increase Speed and Agility with Amazon Web Services

AWS 101

Page 5: Increase Speed and Agility with Amazon Web Services

Utility computing

On demand Pay as you go

Uniform Available

Page 6: Increase Speed and Agility with Amazon Web Services

Compute

Storage

SecurityScaling

Database

NetworkingMonitoring

Messaging

Workflow

DNS

Load Balancing

BackupCDN

On demand Pay as you go

Uniform Available

Utility computing

Page 7: Increase Speed and Agility with Amazon Web Services

AWS Worldwide Network Backbone

Page 8: Increase Speed and Agility with Amazon Web Services

Example AWS Region

AZ

AZ

AZ AZ AZ

Transit

Transit

Page 9: Increase Speed and Agility with Amazon Web Services

Multi-AZ architecture for High Availability

Availability Zone a

RDS DB

instance

Availability Zone b

www.example.com

Amazon Route 53

DNS service

Elastic Load

Balancing

Web

serverWeb

server

RDS DB

standby

Page 10: Increase Speed and Agility with Amazon Web Services

Startup Customers

Meerkat

Page 11: Increase Speed and Agility with Amazon Web Services

Provisioning for peak traffic

76% waste

24%

Provisioned capacity

November

Page 12: Increase Speed and Agility with Amazon Web Services

Enterprise Customers

Page 13: Increase Speed and Agility with Amazon Web Services

LOWER COSTS THAN ON-PREMISES

On-Premises

Traditional

Data Centre

On-Premises

Virtualised

Data Centre

AWS

CAPEX

CAPEX

OPEX

OPEX

OPEX

Cost savings from running

internal IT more efficiently

Cost savings from moving

to a cloud provider

AWS Scale• Multiple new data centres built each year

• Volume purchasing, highly automated supply

chain optimisation

Utilisation fundamentally higher in the AWS

Cloud• Aggregating non-correlated workloads, scale,

spot market

Amazon specific hardware designs• OEM acquisition of custom servers and

networking equipment

• Direct purchasing of memory, disk & CPU

• AWS controlled hypervisor and network

protocol layers

Page 14: Increase Speed and Agility with Amazon Web Services

AWS PRICING PHILOSOPHY

More AWS

Usage

More

Infrastructure

More

Customers

Lower

Infrastructure

Costs

Economies of

Scale

Reduced PricesEcosystem

Global Footprint

New Features

New Services

Infrastructure

Innovation

50PRICEREDUCTIONS

We pass the savings along to our

customers in the form of low

prices and continuous reductions

Page 15: Increase Speed and Agility with Amazon Web Services

Cost is only part of the story

Page 16: Increase Speed and Agility with Amazon Web Services

Enterprise

ApplicationsVirtual Desktop Sharing & Collaboration

Platform

Services

Analytics

Hadoop

Real-time

Streaming Data

Data

Warehouse

Data

Pipelines

App Services

Queuing &

Notifications

Workflow

App streaming

Transcoding

Email

Search

Deployment & Management

One-click web

app deployment

Dev/ops resource

management

Resource

Templates

Mobile Services

Identity

Sync

Mobile

Analytics

Push

Notifications

Administration

& SecurityIdentity

Management

Access

Control

Usage

Auditing

Key

Storage

Monitoring

And Logs

Core

Services

Compute(VMs, Auto-scaling

and Load Balancing)

Storage(Object, Block

and Archival)

CDNDatabases(Relational, NoSQL,

Caching)

Networking(VPC, DX, DNS)

Infrastructure Regions Availability Zones Points of Presence

Page 17: Increase Speed and Agility with Amazon Web Services

Speed & Focus

Page 18: Increase Speed and Agility with Amazon Web Services

Transformation across virtually every

industry

Hotel Music Storage

Page 19: Increase Speed and Agility with Amazon Web Services

Continuous Innovation

Business Idea

Implementation

Testing

Release

Customer Feedback

Customer

Page 20: Increase Speed and Agility with Amazon Web Services

The Amazon DevOps story

Page 21: Increase Speed and Agility with Amazon Web Services
Page 22: Increase Speed and Agility with Amazon Web Services

Monolith development lifecycle

developers

releasetestbuild

delivery pipelineapp

Page 23: Increase Speed and Agility with Amazon Web Services

Service-Oriented

Architecture (SOA)

Single-purpose

Connected through APIs

Highly decoupled

“Microservices”

Page 24: Increase Speed and Agility with Amazon Web Services

Two-pizza teams

Autonomy

Full ownership

Full accountability

Aligned incentives

“DevOps”

Page 25: Increase Speed and Agility with Amazon Web Services

Missing tools

developers delivery pipelineservices

???

Page 26: Increase Speed and Agility with Amazon Web Services

Self-service

Technology-agnostic

Encourage best

practices

Single-purpose services

Page 27: Increase Speed and Agility with Amazon Web Services

Deployment service

No downtime

deployments

Health tracking

Versioned artifacts and

rollbacks

Page 28: Increase Speed and Agility with Amazon Web Services

CodeDeploy

• Scale from 1 instance to thousands

• Deploy without downtime

• Centralize deployment control and monitoring

Staging

CodeDeployv1, v2, v3

Production

Dev

Coordinate automated deployments, just like Amazon

Application

revisions

Deployment groups

Page 29: Increase Speed and Agility with Amazon Web Services

Rolling update – Deploy without downtime

v1v1 v1

Load Balancer

Page 30: Increase Speed and Agility with Amazon Web Services

Rolling update – Deploy without downtime

v1v2 v1

Load Balancer

Page 31: Increase Speed and Agility with Amazon Web Services

Rolling update – Deploy without downtime

v2v2 v1

Load Balancer

Page 32: Increase Speed and Agility with Amazon Web Services

Rolling update – Deploy without downtime

v2v2v2

Load Balancer

Page 33: Increase Speed and Agility with Amazon Web Services

Rolling update – Deploy without downtime

v2v2 v2

Load Balancer

Page 34: Increase Speed and Agility with Amazon Web Services

PipelinesContinuous delivery

Automated release

process

Faster and more reliable

releases

>90% of teams

Page 35: Increase Speed and Agility with Amazon Web Services

Microservice development lifecycle

developers delivery pipelinesservices

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

Page 36: Increase Speed and Agility with Amazon Web Services

Continuous integration and deployment

with AWS CodePipeline

Repeatable, automated integration and deployment pipelines

Workflow modeling and visualization

Integrated with your existing development tools

Page 37: Increase Speed and Agility with Amazon Web Services

Integrated with your Existing Development

Tools

Page 38: Increase Speed and Agility with Amazon Web Services

= 50 million deployments a year

Thousands of teams

× Microservice architecture

× Continuous delivery

× Multiple environments

Page 39: Increase Speed and Agility with Amazon Web Services

75%

Reduction in

outages triggered

by software

deployments

since 2006

90%

Reduction in

outage minutes

triggered by

software

deployments

Business Value of Frequent Deployments

~0.001%

Software

deployments

cause an

outage

Page 40: Increase Speed and Agility with Amazon Web Services

Deployment models

Page 41: Increase Speed and Agility with Amazon Web Services

Server Configuration

Page 42: Increase Speed and Agility with Amazon Web Services

Patterns of success: Zero remote access

• If you are forced to log in to an instance

– Agility is diminished

– Specialized configuration can cause prod-test drift

– Security is at risk

• Every node should be disposable & automatically configured– Treat them as software variables – not pets

– Embrace automation

• Prerequisite: Centralized logs

– CloudWatch Logs

Page 43: Increase Speed and Agility with Amazon Web Services

• Cloud-Init

• user-data starting with #! (hash-bang) will be executed as a script during first boot

Combine CM tools:

#!/bin/sh

yum -y install httpd php

chkconfig httpd on

/etc/init.d/httpd start

Bootstrapping Support in EC2

Page 44: Increase Speed and Agility with Amazon Web Services

Packaging/baking AMIs

• Decrease your boot time – Software packages that require painful/long setup

– Standard software that must be there at startup

– Any configuration items that cannot be remotely sourced or automated

• Predictable & testable

• AWS provides easy interfaces to create the AMI or

import the AMI

• Tools can automate it as part of your build process

AMI Instances

Page 45: Increase Speed and Agility with Amazon Web Services

Bake an AMI Configure dynamically

Time consuming configuration (setup time)

Static configurations (less change management)

Bootstrapping

Page 46: Increase Speed and Agility with Amazon Web Services

Bake an AMI Configure dynamically

Continuous deployment (latest code)

Environment specific (dev-test-prod)

Bootstrapping

Page 47: Increase Speed and Agility with Amazon Web Services

Blue Green Deployments

Page 48: Increase Speed and Agility with Amazon Web Services

Blue/Green deployments at Expedia

Page 49: Increase Speed and Agility with Amazon Web Services

Learn more about Blue Green deployments

https://youtu.be/aX54mhZbN58

Page 50: Increase Speed and Agility with Amazon Web Services

Infrastructure orchestration

Page 51: Increase Speed and Agility with Amazon Web Services

Automation of Provisioning and Life-Cycle Mgt

AWS

Elastic Beanstalk

AWS

OpsWorks

AWS

CloudFormation

Amazon EC2

Convenience Control

Page 52: Increase Speed and Agility with Amazon Web Services

Elastic Beanstalk

Alert

Log

Mon

Ap

p

AZ

EL

B

http://your-app.elasticbeanstalk.com

Page 53: Increase Speed and Agility with Amazon Web Services

Sony: Building At-Scale Services with AWS Elastic

Beanstalk

https://youtu.be/gA_m_4ikTgg

Page 54: Increase Speed and Agility with Amazon Web Services

AWS OpsWorks

• Configuration as code (Chef)

• Orchestration

• Scaling

• Auto healing

• Application deployments

• Windows & Linux

Page 55: Increase Speed and Agility with Amazon Web Services

Infrastructure as code

Page 56: Increase Speed and Agility with Amazon Web Services

Describing Infrastructure with Code

Developers

&

OperationsInternal

GitCI Server

Pre-commit

Hook

Testing Environment Subnet

CI Workers

Dev Environment VPC Subnet

DEV WEB

ELBDev Stack

Tier 1

Dev Stack

Tier 2

Dev MySQL

DB Instance

DEV APP

ELB

VPN

TUNNEL

VPN facing VPC Subnet

Internet

GatewayVPN

Endpoint

Dev Admin

Instance

NAT Instance

Amazon S3

Amazon

DynamoDB

Amazon SQS

Amazon

CloudFront

Amazon

Route 53

This entire infrastructure stack can be constructed, configured, and deployed with code:

Page 57: Increase Speed and Agility with Amazon Web Services

Template File

Defining Stack

Git

Subversion

Mercurial

Dev

Test

Prod

The entire application can be represented in an AWS CloudFormation template.

Use the version control system of your choice to store and track changes to this template

Build out multiple environments, such as for Development, Test, and Production using the template

AWS Cloudformation

Page 58: Increase Speed and Agility with Amazon Web Services

{

"Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.”,

"Parameters" : {

"KeyPair" : {

"Description" : "The EC2 Key Pair to allow SSH access to the instance",

"Type" : "String"

}

},

"Resources" : {

"Ec2Instance" : {

"Type" : "AWS::EC2::Instance",

"Properties" : {

"KeyName" : { "Ref" : "KeyPair" },

"ImageId" : "ami-75g0061f”,

“InstanceType” : “m1.medium”}

}

},

"Outputs" : {

"InstanceId" : {

"Description" : "The InstanceId of the newly created EC2 instance",

"Value" : { "Ref" : "Ec2Instance” }

}

}

}

Page 59: Increase Speed and Agility with Amazon Web Services

DevSecOps

Page 60: Increase Speed and Agility with Amazon Web Services

https://youtu.be/0E90-ExySb8

Page 61: Increase Speed and Agility with Amazon Web Services

Where to start?

• Pontificate?

• Checklists?

• 1-pagers? 6-pagers? Documents?

Page 3 of 433

Security as code

Page 62: Increase Speed and Agility with Amazon Web Services

Config Rule

• AWS managed rules• Defined by AWS

• Require minimal (or no) configuration

• Rules are managed by AWS

• Customer managed rules• Authored by you using AWS Lambda

• Rules execute in your account

• You maintain the rule

A rule that checks the validity of configurations recorded

Page 63: Increase Speed and Agility with Amazon Web Services

Feedback loop

Page 64: Increase Speed and Agility with Amazon Web Services

Cloudwatch, CloudWatch logs, VPC Flow logs

Page 65: Increase Speed and Agility with Amazon Web Services
Page 66: Increase Speed and Agility with Amazon Web Services

Amazon Elasticsearch Service

Easy cluster

creation and

configuration

management

Support for ELK Security with AWS

IAM

Monitoring with

Amazon

CloudWatch

Auditing with AWS

CloudTrail

Integration options

with other AWS

services

(CloudWatch Logs,

Amazon DynamoDB,

Amazon S3, Amazon

Kinesis)

Page 67: Increase Speed and Agility with Amazon Web Services
Page 68: Increase Speed and Agility with Amazon Web Services

AnalyzeStore

Amazon

Glacier

AmazonS3

Amazon

DynamoDB

Amazon RDS/

Aurora

Analytics on AWS

AWS Data

Pipeline

Amazon

CloudSearch

Amazon EMR

Amazon EC2

Amazon

Redshift

Amazon

Machine

LearningAWS

Import/Export

AWS Direct

Connect

Collect

Amazon Kinesis Amazon

Elasticsearch

Launched

AWS Database

Migration

New Amazon

Kinesis

Analytics

New

Amazon

Kinesis

Firehose

New

Amazon

QuickSight

New

Page 69: Increase Speed and Agility with Amazon Web Services

What about microservices?

Page 70: Increase Speed and Agility with Amazon Web Services

Challenges

Complexity in

Interactions

Complexity in

Code Base

Page 71: Increase Speed and Agility with Amazon Web Services

Microservices and the Cloud

• On Demand Resources of various sizes

• Managed Services

• All Services are programmable

• Infrastructure as code

• Built-in features – monitoring, security, logging, …

– scalability, availability, …

Page 72: Increase Speed and Agility with Amazon Web Services

Docker on AWS

Amazon

Linux

A supported and

maintained Linux

image provided by

Amazon Web Services

Amazon EC2

Container

Service

Highly scalable, high

performance container

management service

AWS

Elastic

Beanstalk

For deploying and

scaling web

applications and

services

Page 73: Increase Speed and Agility with Amazon Web Services

Why Amazon EC2 Container Service

Manage underlying cluster and intelligently place your containers

• What instances are available?

• What resources are available on those?

• How do I prioritize container X vs Y

• How do I spread in multiple AZs?

• How do I know when container dies?

• How to hook in ELB?

Page 74: Increase Speed and Agility with Amazon Web Services

https://youtu.be/a45J6xAGUvA

Page 75: Increase Speed and Agility with Amazon Web Services

Docker Deployments

©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Page 76: Increase Speed and Agility with Amazon Web Services

Pattern: ECS service update

• Deployment process:

• Start with blue task definition

referenced by an ECS service

• Create a green revision of the

existing task definition

• Update existing ECS service to

use the updated task definition

• ECS will deploy the new task

definition to container instances in

a rolling fashion

Page 77: Increase Speed and Agility with Amazon Web Services

Pattern: ECS service update

• Deployment process:

• Start with blue task definition

referenced by an ECS service

• Create a green revision of the

existing task definition

• Update existing ECS service to

use the updated task definition

• ECS will deploy the new task

definition to container instances in

a rolling fashion

Page 78: Increase Speed and Agility with Amazon Web Services

Pattern: ECS service update

• Deployment process:

• Start with blue task definition

referenced by an ECS service

• Create a green revision of the

existing task definition

• Update existing ECS service to

use the updated task definition

• ECS will deploy the new task

definition to container instances in

a rolling fashion

Page 79: Increase Speed and Agility with Amazon Web Services

Pattern: ECS service update

• Deployment process:

• Start with blue task definition

referenced by an ECS service

• Create a green revision of the

existing task definition

• Update existing ECS service to

use the updated task definition

• ECS will deploy the new task

definition to container instances in

a rolling fashion

Page 80: Increase Speed and Agility with Amazon Web Services

Service Discovery

©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Page 81: Increase Speed and Agility with Amazon Web Services

Service Discovery

Web Tier API Tier

Where is the API service?

Is the API service healthy?

Page 82: Increase Speed and Agility with Amazon Web Services

Hard coded address (bad)

Web Tier API Tier10.0.1.60

• Doesn’t scale with services/nodes

• Not resilient to failures

• Localized visibility/auditability

• Manual locality of services

Page 83: Increase Speed and Agility with Amazon Web Services

Discovery via Route 53 Private Hosted ZonesAmazon

Route 53

Private

hosted zone

service1 CNAME elb1.xyz

Service2 CNAME elb2.xyz

Service3 CNAME elb3.xyz

Route 53

Health Checks

Page 84: Increase Speed and Agility with Amazon Web Services

Use a Dynamic Service Registry

• Avoids the DNS TTL issue

• More than service registry & discovery– Configuration management

– Health checks

• Plenty of options– ZooKeeper (Apache)

– Eureka (Netflix)

– Consul (HashiCorp)

– SmartStack (Airbnb)

– Weave (Weaveworks)

Page 85: Increase Speed and Agility with Amazon Web Services

ELB based service discovery

Web Tier

API Tier

API Tier

API Tier

• Easy – supported by ECS

• Health checks

• Fixed hostname

Page 86: Increase Speed and Agility with Amazon Web Services

Empire – PaaS on top of ECS

https://youtu.be/8zbbQkszP04

Page 87: Increase Speed and Agility with Amazon Web Services

More Dev – Less Ops

Serverless Computing

Page 88: Increase Speed and Agility with Amazon Web Services

No server is easier to manage than

"no server”.

Werner Vogels, Amazon CTO

Page 89: Increase Speed and Agility with Amazon Web Services

AWS Lambda

Serverless, event-driven compute service

Lambda = microservice without servers

Page 90: Increase Speed and Agility with Amazon Web Services

AWS Lambda – Benefits

EVENT-DRIVEN SCALESERVERLESS SUBSECOND BILLING

Page 91: Increase Speed and Agility with Amazon Web Services

Introducing the AWS API Gateway

Internet

Mobile Apps

Websites

Services

API

Gateway

AWS Lambda

functions

AWS

API Gateway

Cache

Endpoints on

Amazon EC2 /

Amazon

Elastic

Beanstalk

Any other publicly

accessible endpointAmazon

CloudWatch

Monitoring

Page 92: Increase Speed and Agility with Amazon Web Services
Page 93: Increase Speed and Agility with Amazon Web Services

Summary

Page 94: Increase Speed and Agility with Amazon Web Services

CI/CD Stack on AWS

95

MonitorProvisionDeployTestBuildCode

AWS Elastic Beanstalk

CloudWatchCloudFormationCodeDeploy

CodeCommit CodePipeline

AWS Opsworks

AWS Elastic Container Service

Page 95: Increase Speed and Agility with Amazon Web Services

Athens