deep dive on microservices and amazon ecs

49
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Deep Dive on Microservices and Amazon ECS

Upload: amazon-web-services

Post on 11-Jan-2017

3.134 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Deep Dive on Microservices and Amazon ECS

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

Deep Dive on Microservices and

Amazon ECS

Page 2: Deep Dive on Microservices and Amazon ECS

What to Expect from this Session

Microservices: What are They?

Challenges of Microservices

Microservices on Amazon ECS

Page 3: Deep Dive on Microservices and Amazon ECS

What are Microservices?

Page 4: Deep Dive on Microservices and Amazon ECS

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: Deep Dive on Microservices and Amazon ECS

Monolithic vs. SOA vs. Microservices

SOA

Coarse-

grained

Microservices

Fine-grained

Monolithic

Single unit

Page 6: Deep Dive on Microservices and Amazon ECS

Order UI User UIShipping

UI

Order

Service

User

Service

Shipping

Service

Data

Access

Monolithic Architecture

Page 7: Deep Dive on Microservices and Amazon ECS

Monolithic Architecture – Scaling

Page 8: Deep Dive on Microservices and Amazon ECS

Order UI User UIShipping

UI

Order

Service

User

Service

Shipping

Service

Microservices Architecture

Page 9: Deep Dive on Microservices and Amazon ECS

Order UI User UI UI

Order

ServiceService

Shipping

Service

Order UIOrder UI

User UI UIShipping

UI

Order

ServiceOrder

Service

ServiceService

ServiceService

User

Service

Shipping

Service

Microservices Architecture – Scaling

Page 10: Deep Dive on Microservices and Amazon ECS

Characteristics of Microservices Architectures

Do one

thing wellIndependent

Decentralized

Black box

Polyglot

You build it, you run it

Page 11: Deep Dive on Microservices and Amazon ECS

What are Microservices Challenges?

Resource and state management

Data management

Monitoring

Service discovery

Deployment

Page 12: Deep Dive on Microservices and Amazon ECS

What are Microservices Challenges?

Resource and state management

Data management

Monitoring

Service discovery

Deployment

Page 13: Deep Dive on Microservices and Amazon ECS

Amazon EC2 Container Service

Page 14: Deep Dive on Microservices and Amazon ECS

Containers are Natural for Services

Simple to model

Any app, any language

Image is the version

Test & deploy same artifact

Stateless servers decrease change risk

Page 15: Deep Dive on Microservices and Amazon ECS

Server

Guest OS

Bins/Libs Bins/Libs

App2App1

Managing One Host is Straightforward

Page 16: Deep Dive on Microservices and Amazon ECS

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: Deep Dive on Microservices and Amazon ECS

Easily Manage Clusters for Any Scale

Nothing to run

Complete state

Control and monitoring

Scale

Page 18: Deep Dive on Microservices and Amazon ECS

Scalable

Page 19: Deep Dive on Microservices and Amazon ECS

Flexible Container Placement

Applications

Batch jobs

Multiple schedulers

Page 20: Deep Dive on Microservices and Amazon ECS

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: Deep Dive on Microservices and Amazon ECS

Clusters

Regional

Resource pool

Grouping of container instances

Start empty, dynamically scalable

Page 22: Deep Dive on Microservices and Amazon ECS

Tasks

Unit of work

Grouping of related containers

Run on container instances

Page 23: Deep Dive on Microservices and Amazon ECS

Services

Good for long-running applications

Load balance traffic across containers

Automatically recover unhealthy containers

Discover services

Page 24: Deep Dive on Microservices and Amazon ECS

What are Microservices Challenges?

Resource and state management

Data management

Monitoring

Service discovery

Deployment

Page 25: Deep Dive on Microservices and Amazon ECS

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: Deep Dive on Microservices and Amazon ECS

Monitoring with Amazon CloudWatch

Page 27: Deep Dive on Microservices and Amazon ECS

Monitoring with Amazon CloudWatch

Use the 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: Deep Dive on Microservices and Amazon ECS

Monitoring Amazon ECS with Datadog

Page 29: Deep Dive on Microservices and Amazon ECS

Monitoring Amazon ECS with Sysdig Cloud

Page 30: Deep Dive on Microservices and Amazon ECS

What are Microservices Challenges?

Resource and state management

Data management

Monitoring

Service discovery

Deployment

Page 31: Deep Dive on Microservices and Amazon ECS

Service Discovery with ECS Services & Route 53

Route 53 private hosted zone

Set search path on hosts with DHCP option sets

Define ECS services with ELB

Create CNAMEs for each ELB

Page 32: Deep Dive on Microservices and Amazon ECS

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: Deep Dive on Microservices and Amazon ECS

Service Discovery with Weaveworks

DNS interface for cross-host container communication

Gossip protocol to share grouped updates

Overlay network between hosts

Page 34: Deep Dive on Microservices and Amazon ECS

Service Discovery with Weaveworks

Page 35: Deep Dive on Microservices and Amazon ECS

Service Discovery and Configuration

Management with ConsulThree 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: Deep Dive on Microservices and Amazon ECS

Service Discovery and Configuration

Management with Consul

EC

S C

luste

r

consul-server

ECS Instance

consul-agent

registrator

ECS Instance

Back end 1

Back end 2

consul-agent

registrator

ECS Instance

Front end

EC

S C

luste

r

Page 37: Deep Dive on Microservices and Amazon ECS

What are Microservices Challenges?

Resource and state management

Data management

Monitoring

Service discovery

Deployment

Page 38: Deep Dive on Microservices and Amazon ECS

Scheduling Containers on ECS

Batch jobs

ECS task scheduler

Run tasks once

Batch jobs

RunTask (random)

StartTask (placed)

Long-running apps

ECS service scheduler

Health management

Scale-up and scale-down

Zone-aware

Grouped containers

Page 39: Deep Dive on Microservices and Amazon ECS

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: Deep Dive on Microservices and Amazon ECS

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: Deep Dive on Microservices and Amazon ECS

Scheduling Containers: Long-running app

Deploy using the least space: minimumHealthyPercent =

50%, maximumPercent = 100%

Page 42: Deep Dive on Microservices and Amazon ECS

Scheduling Containers: Long-running App

Deploy quickly without reducing service capacity:

minimumHealthyPercent = 100%, maximumPercent =

200%

Page 43: Deep Dive on Microservices and Amazon ECS

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: Deep Dive on Microservices and Amazon ECS

Microservices Development Lifecycle

developers delivery pipelinemicroservices

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: Deep Dive on Microservices and Amazon ECS

ECS CI/CD Partners

Page 46: Deep Dive on Microservices and Amazon ECS

Continuous Delivery to ECS with Shippable

Page 47: Deep Dive on Microservices and Amazon ECS

Demo

Page 48: Deep Dive on Microservices and Amazon ECS

Demo

TaskTask

Task

Page 49: Deep Dive on Microservices and Amazon ECS

Thank you!