running microservices on amazon ecs - aws april 2016 webinar series

51
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Pierre Steckmeyer, Solutions Architect April 28 th , 2016 Running Microservices on Amazon ECS

Upload: amazon-web-services

Post on 13-Jan-2017

1.654 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Pierre Steckmeyer, Solutions Architect

April 28th, 2016

Running Microservices on Amazon ECS

Page 2: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

What to Expect from this Session

Microservices: What are They?

Challenges of Microservices

Microservices on Amazon ECS

Page 3: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

What are Microservices?

Page 4: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

What are Microservices?

“is a software architecture style in which complex applications are composed of small, independent

processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task, facilitating a

modular approach to system-building.” - Wikipedia

https://en.wikipedia.org/wiki/Microservices

Page 5: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Monolithic vs. SOA vs. Microservices

SOACoarse-grained

MicroservicesFine-grained

MonolithicSingle Unit

Page 6: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Order UI User UI Shipping UI

Order Service

User Service

Shipping Service

Data Access

Monolithic Architecture

Page 7: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Monolithic Architecture – Scaling

Page 8: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Order UI User UI Shipping UI

Order Service

User Service

Shipping Service

Microservices Architecture

Page 9: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Order UI User UI UI

Order Service Service Shipping

Service

Order UIOrder UI

User UI UIShipping UI

Order ServiceOrder

ServiceService

ServiceService

ServiceUser

Service

Shipping Service

Microservices Architecture – Scaling

Page 10: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Characteristics of Microservices Architectures

Do one thing well

Independent

Decentralized

Black Box

Polyglot

You build it, you run it

Page 11: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

What are Microservices challenges?

Resource and State Management

Data Management

Monitoring

Service Discovery

Deployment

Page 12: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

What are Microservices challenges?

Resource and State Management

Data Management

Monitoring

Service Discovery

Deployment

Page 13: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Amazon EC2 Container Service

Page 14: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Containers are natural for services

Simple to modelAny app, any languageImage is the versionTest & deploy same artifactStateless servers decrease change risk

Page 15: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Server

Guest OS

Bins/Libs Bins/Libs

App2App1

Managing one host is straightforward

Page 16: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Managing a fleet is hard

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

Server

Guest OS

AZ 1 AZ 2

AZ 3

Page 17: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Easily Manage Clusters for Any Scale

Nothing to run

Complete state

Control and monitoring

Scale

Page 18: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Scalable

Page 19: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Flexible Container Placement

Applications

Batch jobs

Multiple schedulers

Page 20: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Designed for use with other AWS services

Elastic Load Balancing

Amazon Elastic Block Store

Amazon Virtual Private Cloud

AWS Identity and Access Management

AWS CloudTrail

Page 21: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Clusters

Regional

Resource pool

Grouping of Container Instances

Start empty, dynamically scalable

Page 22: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Tasks

Unit of work

Grouping of related Containers

Run on Container Instances

Page 23: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Services

Good for long-running applications

Load Balance traffic across containers

Automatically recover unhealthy containers

Discover services

Page 24: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

What are Microservices challenges?

Resource and State Management

Data Management

Monitoring

Service Discovery

Deployment

Page 25: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Monitoring with Amazon CloudWatch

Metric data sent to CloudWatch in 1-minute periods and recorded for a period of two weeks

Available metrics: CPUReservation, MemoryReservation, CPUUtilization, MemoryUtilization

Available dimensions: ClusterName, ServiceName

Page 26: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Monitoring with Amazon CloudWatch

Page 27: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Monitoring with Amazon CloudWatch

Use the Amazon CloudWatch Monitoring Scripts to monitor additional metrics, e.g. disk space:

# Edit crontab> crontab -e

# Add command to report disk space utilization to CloudWatch every five minutes*/5 * * * * <path_to>/mon-put-instance-data.pl --disk-space-util --disk-space-used --disk-space-avail --disk-path=/ --from-cron

Page 28: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Monitoring Amazon ECS with Datadog

Page 29: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Monitoring Amazon ECS with Sysdig Cloud

Page 30: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

What are Microservices challenges?

Resource and State Management

Data Management

Monitoring

Service Discovery

Deployment

Page 31: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Service Discovery with ECS Services & Route 53

Route 53 private hosted zoneSet search path on hosts with DHCP option setsDefine ECS services with ELBCreate CNAMEs for each ELB

Page 32: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Service Discovery with ECS Services & Route 53

Task

Task TaskTask

ECS Service

Application router, e.g.

nginx

Internal ELB with CNAME, e.g.

api.example.com

Route 53 private zone, e.g.

example.com

Page 33: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Service Discovery with Weaveworks

DNS interface for cross-host container communicationGossip protocol to share grouped updatesOverlay network between hosts

Page 34: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Service Discovery with Weaveworks

Page 35: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Service Discovery and Configuration Management with Consul

Three main components:• Consul agent - Runs on each node, responsible for checking the

health of the services and of the node itself.• One or more Consul servers - Store and replicate data, leader

elected using the Raft consensus algorithm• Registrator agent - Automatically register/deregisters services

based on published ports and metadata from the container environment variables defined in the ECS task definition

Page 36: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Service Discovery and Configuration Management with Consul

EC

S C

lust

er

consul-agent

registrator

ECS Instance

Back end 1

Back end 2

consul-agent

registrator

ECS Instance

Front end

EC

S C

lust

er

consul-server

ECS Instance

Page 37: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

What are Microservices challenges?

Resource and State Management

Data Management

Monitoring

Service Discovery

Deployment

Page 38: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Scheduling Containers on ECS

Batch Jobs

ECS Task schedulerRun tasks once

Batch jobsRunTask (random) StartTask (placed)

Long-Running Apps

ECS Service schedulerHealth managementScale-up and scale-downAZ awareGrouped Containers

Page 39: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Scheduling Containers: Long-running App

Optionally run your service behind a load balancer.ELB currently supports a fixed relationship between the load balancer port and the container instance port.If a task fails the ELB health check, the task is killed and restarted (until service reaches desired capacity).

Page 40: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Scheduling Containers: Long-running App

Update service’s task definition (rolling update)Specify a deployment configuration for your service:• minimumHealthyPercent: lower limit (as a percentage of

the service's desiredCount) of the number of running tasks that must remain running in a service during a deployment.

• maximumPercent: upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment.

Page 41: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Scheduling Containers: Long-running app

Deploy using the least space: minimumHealthyPercent = 50%, maximumPercent = 100%

Page 42: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Scheduling Containers: Long-running App

Deploy quickly without reducing service capacity: minimumHealthyPercent = 100%, maximumPercent = 200%

Page 43: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Scheduling Containers: Long-running App

Blue-Green Deployments

• Define two ECS services• Each service is associated w/

ELB• Both ELBs in Route 53 record set

with weighted routing policy, 100% Primary, 0% Secondary

• Deploy to Blue or Green service and switch weights

TaskTask

Route 53 record set with

weighted routing policy

0%100%

Page 44: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

microservicesdevelopers delivery pipeline

Microservices development lifecycle

build pipelinebuild pipeline

build pipeline

build pipelinebuild pipeline

build pipeline

build pipelinebuild pipeline

build pipeline

build pipelinebuild pipeline

build pipeline

build pipelinebuild pipeline

build pipeline

Page 45: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Continuous Delivery to ECS with Jenkins

4. Push image to Docker registry

2. Build image from sources 3. Run test on image

1. Code push triggers build

5. Update Service

6. Pull image

4. Push image to Docker registry

Page 46: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Continuous Delivery to ECS with Jenkins

Easy DeploymentDevelopers – Merge into master, done!

Jenkins Build StepsTrigger via Webhooks, Monitoring, LambdaBuild Docker image via Build and Publish plugin Push Docker image into RegistryRegister Updated Job with ECS API

Page 47: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

ECS CI/CD Partners

Page 48: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Continuous Delivery to ECS with Shippable

Page 49: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Demo

Page 50: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Demo

TaskTask

Task

Page 51: Running Microservices on Amazon ECS - AWS April 2016 Webinar Series

Thank you!