microservices on awsaws-de-media.s3.amazonaws.com/images/_munich_loft_slides/...gilt: “from...

51
Microservices on AWS Matthias Jung, Solutions Architect AWS

Upload: others

Post on 21-May-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

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

Microservices on AWSMatthias Jung, Solutions Architect AWS

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

Agenda

What are Microservices?

Why Microservices?

Challenges of Microservices

Microservices on AWS

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

What are Microservices?

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

What are Microservices?Google Trends

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

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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

Characteristics

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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

Why Microservices?

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

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]

Why Microservices?

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

Microservices Monolith

vs

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

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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

Problems of Monolithic Architectures

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

Development Life Cycle with Small Teams

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

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

Benefits of Microservices

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

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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:
Page 18: Microservices on AWSaws-de-media.s3.amazonaws.com/images/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

Service-Oriented Architecture (SOA)

Everything gets a service interface

Primitives

“Microservices”

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

Decentralized

Two-pizza teams

Agility, autonomy, accountability, and ownership

“DevOps”

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

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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

~11.6sMean time between

deployments (weekday)

~1,079Max number of

deployments in a single hour

~10,000Mean number of hosts

simultaneously receiving a deployment

~30,000Max number of hosts

simultaneously receiving a deployment

DEPLOYMENTS AT AMAZON.COM

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

Challenges of Microservices

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

Complexity in Code Base

Complexity inInteractions

Challenges of Microservices

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

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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

Challenges of Microservices

One size doesn’t fit all

HeterogenityNo Standards

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

Challenges of MicroservicesOrganizational 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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

Microservices on AWS

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

• On Demand Resources• no capacity guessing

• resources in any size

• parallel environments

AWS helps with Operational Complexity

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

• On Demand Resources

• Managed Services

AWS helps with Operational Complexity

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

FS Blocks StaticAssets

MetaData

Temp Files

DataBlobs

EventLogs

SearchIndices

Struct. Data

NFSRelational Database

Back-Ups

Traditional Storage Options

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

FS Blocks StaticAssets

MetaData

Temp Files

DataBlobs

EventLogs

SearchIndices

Struct. Data

Back-Ups

Amazon S3Amazon EBS Amazon GlacierEphemeral

EC2 Storage CloudFrontDynamoDBAmazon RDS Amazon

CloudSearch

Amazon

Kinesis

Storage Options on AWS

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

Don’t Reinvent the Wheel

Notification system

E-Mail component

Search engine

Workflow engine

Queue

Transcoding system

Monitoring system

Amazon CloudSearch Amazon SQSAmazon SNS

Amazon Elastic Transcoder

Amazon 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/_Munich_Loft_Slides/...Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services” (NYC Tech Talks) [Link] Nike:

• 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

AWS helps with Operational Complexity

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

Amazon ECS

AmazonCloudWatch Logs

AmazonEC2

AWSLambda

AmazonKinesis

Firehose

AmazonRedshift

AmazonQuickSight

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

Amazon ECS

AmazonCloudWatch Logs

AmazonEC2

AWSLambda

AmazonElasticsearch

Kibana

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

• On Demand Resources

• Managed Services

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

• scalability, availability, …

• Everything Programmable

AWS CLI & SDKs

AWS helps with Operational Complexity

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

• On Demand Resources

• Managed Services

• Built-in features • monitoring, security, logging, …• scalability, availability, …

• Everything Programmable

• Infrastructure as CodeCloudFormation

AWS helps with Operational Complexity

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

Infrastructure as Code

user

template

CloudFormation

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

• On Demand Resources• Managed Services• Built-in features

• monitoring, security, logging, …• scalability, availability, …

• Everything Programmable• Infrastructure as Code• No Servers

AWS Lambda

AWS helps with Operational Complexity

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

- Run code without infrastructure

- Backend at any scale

- No administration

- JavaScript, Java, and Python

AWS Lambda

No Servers with AWS Lambda

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

AWS helps to Manage APIs

- Managing multiple versions and stages?

- Monitoring 3rd party developer access?

- Access authorization?

- Traffic spikes ?

- Caching ?

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

- Managing multiple versions and stages- Monitoring 3rd party developer access- Access authorization- Traffic spikes- Caching- Swagger Support- Request/Response Transformation- API Mocking

API Gateway

AWS helps to Manage APIs

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

MonitorProvisionDeployTestBuildCode

Elastic Beanstalk

OpsWorks

Cloud

Watch

Cloud

Formation

Code

Deploy

Code

Commit

Code

Pipeline

AWS helps to Scale Deployments

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

A Typical

Microservice Architecture on AWS

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

S3

CloudFront

RDS

ElastiCache

EC2Elastic Load Balancing

EC2Elastic Load Balancing

Static Content

Content Delivery

APILayer

ApplicationLayer

PersistencyLayer

Auto Scaling

group

Auto Scaling

group

Microservice Architecture on AWS

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

S3

CloudFront

RDS

ElastiCache

EC2Elastic Load Balancing

Static Content

Content Delivery

APILayer

ApplicationLayer

PersistencyLayer

Auto Scaling

group

API Gateway

Microservice Architecture on AWS

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

S3

CloudFront

RDS

ElastiCache

EC2

Elastic Load Balancing

Static Content

Content Delivery

APILayer

ApplicationLayer

PersistencyLayer

API GatewayEC2 Container

Service

Auto Scaling

group

Microservice Architecture on AWS

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

S3

CloudFront

EC2

Elastic Load Balancing

Static Content

Content Delivery

APILayer

ApplicationLayer

PersistencyLayer

API GatewayEC2 Container

Service

Auto Scaling

group

DynamoDB

Microservice Architecture on AWS

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

Microservice Architecture on AWS

S3

CloudFront

Static Content

Content Delivery

APILayer

ApplicationLayer

PersistencyLayer

API GatewayDynamoDBAWS Lambda

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

Microservice Architecture on AWS

S3

CloudFront

Static Content

Content Delivery

APILayer

ApplicationLayer

PersistencyLayer

API GatewayDynamoDBAWS Lambda

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

Thank You!