51
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Matthias Jung, Solutions Architect Julien Simon, Evangelist April, 12 th , 2016 Microservices on AWS AWS Summit Berlin 2016

Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

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

Matthias Jung, Solutions Architect

Julien Simon, Evangelist

April, 12th, 2016

Microservices on AWS

AWS Summit Berlin 2016

Page 2: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Agenda

What are Microservices?

Why Microservices?

Challenges of Microservices

Microservices on AWS

Docker with ECR & ECS - Demo

Page 3: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

What are Microservices?

Page 4: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

What are Microservices?

Google Trends

Page 5: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

What are Microservices?

Related concepts

• Service Oriented Architectures

• API First

• Agile Software Development

• Continuous Delivery

• DevOps

Page 6: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Characteristics of Microservice Architectures

Do one

thing well

IndependentDecentralized

Black Box

Polyglot

You build it,

you run it

Page 7: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Why Microservices?

Page 8: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Why Microservices?

Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC

Tech Talks) [Link]

Nike: “Nike’s Journey to Microservices” (AWS Re:Invent 2014) [Link]

SoundCloud: ”Building Products at SoundCloud - Part III: Microservices in

Scala and Finagle” [Link]

Capital One: “Lack Of Legacy Lets Capital One Build Nimble

Infrastructure” [Link]

Hailo: “A Journey into Microservices” [Link]

Autoscout24: “Why Autoscout24 changes its technology” [Link]

Zalando: “From Monolith to Microservices” [Link]

Page 9: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Microservices Monolith

vs

Page 10: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Problems of Monolithic Architectures

Code complexity and maintainability

Deployment becomes the bottleneck

Fear to change

Lack of ownership

Failure dependencies

One size doesn’t fit all (ex: relational DB)

Hard to scale out

Page 11: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Problems of Monolithic Architectures

Code complexity and maintainability

Deployment becomes the bottleneck

Fear to change

Lack of ownership

Failure dependencies

One size doesn’t fit all (ex: relational DB)

Hard to scale out

Page 12: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Problems of Monolithic Architectures

Page 13: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Development Life Cycle with Small Teams

Page 14: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Benefits of Microservices

Speed• Faster development and deployment

Innovation• Autonomy of teams, culture of change

• Ownership and DevOps culture

Quality• Composability and reusability

• More maintainable code

• Better scaling and optimizations

• Failure Isolation and Resiliency

Page 15: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

What Customers Say

“Avoid fear to change things”

“Applied SE best practices to operations”

“Easily switch between synchronous and asynchronous

communication”

“Easy to start new things from scratch”

“People take ownership”

“Deploy more – deploy faster – deploy better code”

Page 16: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

The Amazon DevOps Story

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

Page 17: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)
Page 18: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Service-Oriented

Architecture (SOA)

Everything gets a

service interface

Primitives

“Microservices”

Page 19: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Decentralized

Two-pizza teams

Agility, autonomy,

accountability, and

ownership

“DevOps”

Page 20: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Decentralized Ownership

Promote Best Practices

No gatekeepers

Technology Agnostic

Support Agile

SW Dev Lifecycle

Page 21: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

~11.6s

Mean time between

deployments (weekday)

~1,079

Max number of

deployments in a single

hour

~10,000

Mean number of hosts

simultaneously receiving

a deployment

~30,000

Max number of hosts

simultaneously receiving

a deployment

DEPLOYMENTS AT

AMAZON.COM

Page 22: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Challenges of Microservices

Page 23: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Challenges of Microservices

Complexity in

Code BaseComplexity in

Interactions

Page 24: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Complexity in Interactions

Authentication? Eventual Consistency?

Cascading Failures?

Discovery?Message Routing?

Transactions?

Testing?

Monitoring?

API Management?

Delay?

Page 25: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Challenges of Microservices

One size

doesn’t fit all

Heterogenity

No Standards

Page 26: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Challenges

Organizational Cultural Challenges• You built it, you run it

Architectural Challenges• Dealing with asynchronicity

• Cascading failures

• Discovery and authentication of services

• Integration Tests

Operational Challenges• Duplication of processes and tools

• Complexity moves from components to interactions

• Debugging across components

• Deployment

Page 27: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Microservices on AWS

Page 28: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Operational Complexity?

• On Demand Resources

• no capacity guessing

• resources in any size

• parallel environments

Page 29: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Operational Complexity?

• On Demand Resources

• Managed Services

Page 30: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Storage Options in the Traditional World

FS

Blocks

Static

AssetsMeta

Data

Temp

Files

Data

BlobsEvent

Logs

Search

Indices

Struct.

Data

NFSRelational

Database

Back-

Ups

Page 31: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Storage Options in the Cloud

FS

Blocks

Static

AssetsMeta

Data

Temp

Files

Data

BlobsEvent

Logs

Search

Indices

Struct.

Data

Back-

Ups

Amazon S3Amazon EBS Amazon GlacierEphemeral

EC2 Storage CloudFrontDynamoDBAmazon RDS Amazon

CloudSearch

Amazon

Kinesis

Page 32: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Don’t Reinvent the Wheel

Notification system

E-Mail component

Search engine

Workflow engine

Queue

Transcoding system

Monitoring system

Amazon

CloudSearchAmazon SQSAmazon SNS

Amazon Elastic

TranscoderAmazon SWFAmazon SES

If you find yourself writing your own…

…take a deep breath and stop it now!

Page 33: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Operational Complexity?

• On Demand Resources

• Managed Services

• Built-in features

• Monitoring via CloudWatch

• Security: IAM, CloudTrail, KMS, …

• Logging: CloudWatch Logs

• Scalability: Auto-Scaling, ELB, S3, …

• Availability: multiple Availability Zones

Page 34: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Amazon

ECS

Amazon

CloudWatch Logs

Amazon

EC2

AWS

LambdaAmazon

Kinesis

Firehose

Amazon

Redshift

Amazon

QuickSight

Page 35: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Amazon

ECS

Amazon

CloudWatch Logs

Amazon

EC2

AWS

LambdaAmazon

ElasticsearchKibana

Page 36: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Operational Complexity?

• On Demand Resources

• Managed Services

• Built-in features

• monitoring, security, logging, …

• scalability, availability, …

• Everything Programmable

AWS CLI & SDKs

Page 37: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Operational Complexity?

• On Demand Resources

• Managed Services

• Built-in features

• monitoring, security, logging, …

• scalability, availability, …

• Everything Programmable

• Infrastructure as Code

Page 38: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Operational Complexity?

• On Demand Resources

• Managed Services

• Built-in features

• monitoring, security, logging, …

• scalability, availability, …

• Everything Programmable

• Infrastructure as Code

• No ServersAWS Lambda

Page 39: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Operational Complexity?

- Run code without infrastructure

- Backend at any scale

- No administration

- JavaScript, Java, and Python

AWS Lambda

Page 40: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Managing APIs?

- Managing multiple versions and stages?

- Monitoring 3rd party developer access?

- Access authorization?

- Traffic spikes ?

- Caching ?

Page 41: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

How Can AWS Help with Managing APIs?

- Managing multiple versions and stages

- Monitoring 3rd party developer access

- Access authorization

- Traffic spikes

- Caching

- Swagger Support

- Request/Response Transformation

- API Mocking

API Gateway

Page 42: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

MonitorProvisionDeployTestBuildCode

Elastic Beanstalk

OpsWorks

Cloud

Watch

Cloud

Formation

Code

Deploy

Code

Commit

Code

Pipeline

How Can AWS Help with Scaling Deployments?

Page 43: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Microservice Architectures

Page 44: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

A Typical Microservice Architecture on AWS

S3

CloudFront

RDS

ElastiCache

EC2Elastic Load

BalancingEC2Elastic Load

Balancing

Static

Content

Content

DeliveryAPI

Layer

Application

LayerPersistency

Layer

Auto Scaling

group

Auto Scaling

group

Page 45: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

A Typical Microservice Architecture on AWS

S3

CloudFront

RDS

ElastiCache

EC2Elastic Load

Balancing

Static

Content

Content

DeliveryAPI

Layer

Application

LayerPersistency

Layer

Auto Scaling

group

API

Gateway

Page 46: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

A Typical Microservice Architecture on AWS

S3

CloudFront

RDS

ElastiCache

EC2

Elastic Load

Balancing

Static

Content

Content

DeliveryAPI

Layer

Application

LayerPersistency

Layer

API

Gateway

EC2 Container

Service

Auto Scaling

group

Page 47: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

A Typical Microservice Architecture on AWS

S3

CloudFront

EC2

Elastic Load

Balancing

Static

Content

Content

DeliveryAPI

Layer

Application

LayerPersistency

Layer

API

Gateway

EC2 Container

Service

Auto Scaling

group

DynamoDB

Page 48: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

A Typical Microservice Architecture on AWS

S3

CloudFront

Static

Content

Content

DeliveryAPI

Layer

Application

LayerPersistency

Layer

API

Gateway

DynamoDBAWS

Lambda

Page 49: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

A Typical Microservice Architecture on AWS

S3

CloudFront

Static

Content

Content

DeliveryAPI

Layer

Application

LayerPersistency

Layer

API

Gateway

DynamoDBAWS

Lambda

Page 50: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)

Docker with ECR & ECS - Demo

Page 51: Microservices on AWSaws-de-media.s3.amazonaws.com/images/AWS_Summit_Berlin...Why Microservices? Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks)