Divide and conquer for agility and scalability: An introduction to Microservices

123
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Jim Tran AWS Enterprise Solutions Architect June 30, 2016 Architecting Microservices on AWS Divide and conquer for agility and scalability:

Transcript of Divide and conquer for agility and scalability: An introduction to Microservices

Page 1: Divide and conquer for agility and scalability: An introduction to Microservices

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

Jim Tran

AWS Enterprise Solutions Architect

June 30, 2016

Architecting Microservices on AWSDivide and conquer for agility and scalability:

Page 2: Divide and conquer for agility and scalability: An introduction to Microservices
Page 3: Divide and conquer for agility and scalability: An introduction to Microservices
Page 4: Divide and conquer for agility and scalability: An introduction to Microservices
Page 5: Divide and conquer for agility and scalability: An introduction to Microservices
Page 6: Divide and conquer for agility and scalability: An introduction to Microservices
Page 7: Divide and conquer for agility and scalability: An introduction to Microservices
Page 8: Divide and conquer for agility and scalability: An introduction to Microservices

ENTERPRISE APPS

DEVELOPMENT & OPERATIONSMOBILE SERVICESAPP SERVICESANALYTICS

DataWarehousing

Hadoop/Spark

Streaming Data Collection

Machine Learning

Elastic Search

Virtual Desktops

Sharing & Collaboration

Corporate Email

Backup

Queuing & Notifications

Workflow

Search

Email

Transcoding

One-click App Deployment

Identity

Sync

Single Integrated Console

PushNotifications

DevOps Resource Management

Application Lifecycle Management

Containers

Triggers

Resource Templates

TECHNICAL & BUSINESS SUPPORT

Account Management

Support

Professional Services

Training & Certification

Security & Pricing Reports

Partner Ecosystem

Solutions Architects

MARKETPLACE

Business Apps

Business Intelligence

DatabasesDevOps Tools

NetworkingSecurity Storage

RegionsAvailability Zones

Points of Presence

INFRASTRUCTURE

CORE SERVICES

ComputeVMs, Auto-scaling, & Load Balancing

StorageObject, Blocks, Archival, Import/Export

DatabasesRelational, NoSQL, Caching, Migration

NetworkingVPC, DX, DNS

CDN

Access Control

Identity Management

Key Management & Storage

Monitoring & Logs

Assessment and reporting

Resource & Usage Auditing

SECURITY & COMPLIANCE

Configuration Compliance

Web application firewall

HYBRIDARCHITECTURE

Data Backups

Integrated App Deployments

DirectConnect

IdentityFederation

IntegratedResource Management

Integrated Networking

API Gateway

IoT

Rules Engine

Device Shadows

Device SDKs

Registry

Device Gateway

Streaming Data Analysis

Business Intelligence

MobileAnalytics

Page 9: Divide and conquer for agility and scalability: An introduction to Microservices

* As of 1 Feb 2016

2009

48

280

722

82

2011 2013 2015

Page 10: Divide and conquer for agility and scalability: An introduction to Microservices

“The Monolith”

“Monolith” by Sage Ross. No alterations other than cropping. https://www.flickr.com/photos/ragesoss/2931770125/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 11: Divide and conquer for agility and scalability: An introduction to Microservices

Challenges with monolithic software

Long Build/Test/Release Cycles(who broke the build?)

Operationsis a nightmare(module X is failing, who’s the owner?)

Difficult to scale

New releasestake months

Long time to addnew features

Architecture is hard to maintain and evolve

Lack of innovation

Frustrated customers

Lack of agility

Page 12: Divide and conquer for agility and scalability: An introduction to Microservices

Challenges with monolithic software

Long Build/Test/Release Cycles(who broke the build?)

Operationsis a nightmare(module X is failing, who’s the owner?)

Difficult to scale

New releasestake months

Long time to addnew features

Architecture is hard to maintain and evolve

Lack of innovation

Frustrated customers

Lack of agility

Page 13: Divide and conquer for agility and scalability: An introduction to Microservices

Challenges with monolithic software

Long Build/Test/Release Cycles(who broke the build?)

Operationsis a nightmare(module X is failing, who’s the owner?)

Difficult to scale

New releasestake months

Long time to addnew features

Architecture is hard to maintain and evolve

Lack of innovation

Frustrated customers

Lack of agility

Page 14: Divide and conquer for agility and scalability: An introduction to Microservices

“20080219BonMorningDSC_0022B” by Sunphol Sorakul . No alterations other than cropping. https://www.flickr.com/photos/83424882@N00/3483881705/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 15: Divide and conquer for agility and scalability: An introduction to Microservices

Monolith development lifecycle

releasetestbuild

delivery pipeline

app(aka the“monolith”)

developers

Photo by Sage Ross. No alterations other than cropping. https://www.flickr.com/photos/ragesoss/2931770125/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 16: Divide and conquer for agility and scalability: An introduction to Microservices

Too much software coupling

Page 17: Divide and conquer for agility and scalability: An introduction to Microservices

Too much software coupling

Shared libraries

Page 18: Divide and conquer for agility and scalability: An introduction to Microservices

Too much software coupling

Shared libraries

Shared data

Page 19: Divide and conquer for agility and scalability: An introduction to Microservices

Evolving towards microservices

“IMG_1760” by Robert Couse-Baker. No alterations other than cropping. https://www.flickr.com/photos/29233640@N07/14859431605/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 20: Divide and conquer for agility and scalability: An introduction to Microservices
Page 21: Divide and conquer for agility and scalability: An introduction to Microservices
Page 22: Divide and conquer for agility and scalability: An introduction to Microservices

“service-oriented

architecture

composed of

loosely coupled

elements

that have

bounded contexts”

Adrian Cockcroft (former Cloud Architect at Netflix,now Technology Fellow at Battery Ventures)

Page 23: Divide and conquer for agility and scalability: An introduction to Microservices

“service-oriented

architecture

composed of

loosely coupled

elements

that have

bounded contexts”

Adrian Cockcroft (former Cloud Architect at Netflix,now Technology Fellow at Battery Ventures)

Services communicate with each other over the network

Page 24: Divide and conquer for agility and scalability: An introduction to Microservices

“service-oriented

architecture

composed of

loosely coupled

elements

that have

bounded contexts”

Adrian Cockcroft (former Cloud Architect at Netflix,now Technology Fellow at Battery Ventures)

You can update the services independently; updating one service doesn’t require changing any other services.

Page 25: Divide and conquer for agility and scalability: An introduction to Microservices

“service-oriented

architecture

composed of

loosely coupled

elements

that have

bounded contexts”

Adrian Cockcroft (former Cloud Architect at Netflix,now Technology Fellow at Battery Ventures)

Self-contained; you can update the code without knowing anything about the internals of other microservices

Page 26: Divide and conquer for agility and scalability: An introduction to Microservices

“Do one thing, and do it well”

“Swiss Army” by by Jim Pennucci. No alterations other than cropping. https://www.flickr.com/photos/pennuja/5363518281/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 27: Divide and conquer for agility and scalability: An introduction to Microservices

“Tools” by Tony Walmsley: No alterations other than cropping. https://www.flickr.com/photos/twalmsley/6825340663/Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

“Do one thing, and do it well”

Page 28: Divide and conquer for agility and scalability: An introduction to Microservices

Anatomy of a Micro-service

Page 29: Divide and conquer for agility and scalability: An introduction to Microservices

Data Store(eg, RDS, DynamoDB

ElastiCache, ElasticSearch)

Anatomy of a Micro-service

Page 30: Divide and conquer for agility and scalability: An introduction to Microservices

Application/Logic(code, libraries, etc)

Anatomy of a Micro-service

Data Store(eg, RDS, DynamoDB

ElastiCache, ElasticSearch)

Page 31: Divide and conquer for agility and scalability: An introduction to Microservices

Public API

POST /restaurantsGET /resturants

Application/Logic(code, libraries, etc)

Anatomy of a Micro-service

Data Store(eg, RDS, DynamoDB

ElastiCache, ElasticSearch)

Page 32: Divide and conquer for agility and scalability: An introduction to Microservices

Avoid Software Coupling

Page 33: Divide and conquer for agility and scalability: An introduction to Microservices

Driversmicro-services

Paymentsmicro-service Location

micro-services

Orderingmicro-services

Restaurantmicro-service

Ecosystem of micro-services

Page 34: Divide and conquer for agility and scalability: An introduction to Microservices
Page 35: Divide and conquer for agility and scalability: An introduction to Microservices
Page 36: Divide and conquer for agility and scalability: An introduction to Microservices
Page 37: Divide and conquer for agility and scalability: An introduction to Microservices

= 50 million deployments a year

Thousands of teams

× Microservice architecture

× Continuous delivery

× Multiple environments

(5708 per hour, or every 0.63 second)

Page 38: Divide and conquer for agility and scalability: An introduction to Microservices

Gilt: Luxury designer brands at members-only prices

Page 39: Divide and conquer for agility and scalability: An introduction to Microservices

... Sale every day at noon EST

Page 40: Divide and conquer for agility and scalability: An introduction to Microservices
Page 41: Divide and conquer for agility and scalability: An introduction to Microservices
Page 42: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 1

Micro-services only rely on each other’s public API

“Contracts” by NobMouse. No alterations other than cropping.https://www.flickr.com/photos/nobmouse/4052848608/

Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 43: Divide and conquer for agility and scalability: An introduction to Microservices

Micro-service A Micro-service B

public API public API

Principle 1: Micro-services only rely on each other’s public API

Page 44: Divide and conquer for agility and scalability: An introduction to Microservices

public API public API

Principle 1: Micro-services only rely on each other’s public API(Hide Your Data)

Micro-service A Micro-service B

Page 45: Divide and conquer for agility and scalability: An introduction to Microservices

public API public API

Nope!

Principle 1: Micro-services only rely on each other’s public API(Hide Your Data)

Micro-service A Micro-service B

Page 46: Divide and conquer for agility and scalability: An introduction to Microservices

public API public API

Principle 1: Micro-services only rely on each other’s public API(Hide Your Data)

Micro-service A Micro-service B

Page 47: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 1: Micro-services only rely on each other’s public API(Evolve API in backward-compatible way…and document!)

storeRestaurant (id, name, cuisine)

Version 1.0

public API

Micro-service A

Page 48: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 1: Micro-services only rely on each other’s public API(Evolve API in backward-compatible way…and document!)

storeRestaurant (id, name, cuisine)

storeRestaurant (id, name, cuisine)storeRestaurant (id, name, arbitrary_metadata)addReview (restaurantId, rating, comments)

Version 1.0

Version 1.1

public API

Micro-service A

Page 49: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 1: Micro-services only rely on each other’s public API(Evolve API in backward-compatible way…and document!)

storeRestaurant (id, name, cuisine)

storeRestaurant (id, name, cuisine)storeRestaurant (id, name, arbitrary_metadata)addReview (restaurantId, rating, comments)

storeRestaurant (id, name, arbitrary_metadata)addReview (restaurantId, rating, comments)

Version 1.0

Version 1.1

Version 2.0

public API

Micro-service A

Page 50: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 2

Use the right tool for the job

“Tools #2” by Juan Pablo Olmo. No alterations other than cropping.https://www.flickr.com/photos/juanpol/1562101472/

Image used with permissions under Creative Commons license 2.0, Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 51: Divide and conquer for agility and scalability: An introduction to Microservices

public API public API

Principle 2: Use the right tool for the job(Embrace polyglot persistence)

DynamoDB

Micro-service A Micro-service B

Page 52: Divide and conquer for agility and scalability: An introduction to Microservices

public API public API

Principle 2: Use the right tool for the job(Embrace polyglot persistence)

DynamoDB

Micro-service A Micro-service B

AmazonElasticsearchService

Page 53: Divide and conquer for agility and scalability: An introduction to Microservices

public API public API

Principle 2: Use the right tool for the job(Embrace polyglot persistence)

RDSAurora

Micro-service A Micro-service B

AmazonElasticsearchService

Page 54: Divide and conquer for agility and scalability: An introduction to Microservices

public API public API

Principle 2: Use the right tool for the job(Embrace polyglot persistence)

RDSAurora

Micro-service A Micro-service B

AmazonElasticsearchService

Page 55: Divide and conquer for agility and scalability: An introduction to Microservices

public API public API

Principle 2: Use the right tool for the job(Embrace polyglot persistence)

RDSAurora

Micro-service A Micro-service B

AmazonElasticsearchService

Page 56: Divide and conquer for agility and scalability: An introduction to Microservices

Let’s builda micro-service!

Page 57: Divide and conquer for agility and scalability: An introduction to Microservices
Page 58: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

GET /restaurants

POST /restaurants

Page 59: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

Approach #1

EC2

Page 60: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

EC2

Page 61: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

EC2

Page 62: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

EC2EC2 EC2 EC2

Page 63: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

EC2EC2 EC2 EC2

Elastic Load Balancer

Page 64: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

Approach #2

ContainersUsing ECS

Page 65: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

EC2EC2 EC2 EC2

Elastic Load Balancer

Page 66: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

EC2EC2 EC2 EC2

Elastic Load Balancer

Page 67: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

EC2EC2 EC2 EC2

Elastic Load Balancer

AmazonEC2 ContainerService (ECS)

to managecontainers

Page 68: Divide and conquer for agility and scalability: An introduction to Microservices

• Prototype in less than 2 months

• Deployment time: hours minutes

• Each team can now develop itsrespective applications independently

Coursera13 million users from 190 countries1,000 courses from 119 institutions

Page 69: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

Approach #3

API Gateway+ Lambda

Page 70: Divide and conquer for agility and scalability: An introduction to Microservices

DynamoDB

Restaurant Micro-service

Page 71: Divide and conquer for agility and scalability: An introduction to Microservices

DynamoDB

Lambda

Restaurant Micro-service

Page 72: Divide and conquer for agility and scalability: An introduction to Microservices

DynamoDB

Lambda

Restaurant Micro-service

API Gateway

Page 73: Divide and conquer for agility and scalability: An introduction to Microservices

AWS Lambda

lets you run code

without managing servers

Page 74: Divide and conquer for agility and scalability: An introduction to Microservices

Upload your code(Java, JavaScript,

Python)

Page 75: Divide and conquer for agility and scalability: An introduction to Microservices

Upload your code(Java, JavaScript,

Python)

Set up your code to trigger from other AWS

services, webservicecalls, or app activity

Page 76: Divide and conquer for agility and scalability: An introduction to Microservices

Lambda automatically

scales

Upload your code(Java, JavaScript,

Python)

Set up your code to trigger from other AWS

services, webservicecalls, or app activity

Page 77: Divide and conquer for agility and scalability: An introduction to Microservices

Lambda automatically

scales

Upload your code(Java, JavaScript,

Python)

Pay for only the compute time

you use(sub-second metering)

Set up your code to trigger from other AWS

services, webservicecalls, or app activity

Page 78: Divide and conquer for agility and scalability: An introduction to Microservices

AWS API Gateway

is the easiest way to deploy microservices

Page 79: Divide and conquer for agility and scalability: An introduction to Microservices

Create a unified API frontend for

multiplemicro-services

Page 80: Divide and conquer for agility and scalability: An introduction to Microservices

Create a unified API frontend for

multiplemicro-services

Authenticate and authorize requests

Page 81: Divide and conquer for agility and scalability: An introduction to Microservices

Create a unified API frontend for

multiplemicro-services

Authenticate and authorize requests

Handles DDoSprotection and API throttling

Page 82: Divide and conquer for agility and scalability: An introduction to Microservices

Create a unified API frontend for

multiplemicro-services

…as well as monitoring,

logging, rollbacks,

client SDK generation…

Authenticate and authorize requests

Handles DDoSprotection and API throttling

Page 83: Divide and conquer for agility and scalability: An introduction to Microservices
Page 84: Divide and conquer for agility and scalability: An introduction to Microservices

Restaurant Micro-service

Page 85: Divide and conquer for agility and scalability: An introduction to Microservices

DynamoDB

Restaurant Micro-service

Page 86: Divide and conquer for agility and scalability: An introduction to Microservices

DynamoDB

Lambdato retrieverestaraunts

Restaurant Micro-service

Lambdato store

restaraunts

Page 87: Divide and conquer for agility and scalability: An introduction to Microservices

DynamoDB

Lambdato retrieverestaraunts

Restaurant Micro-service

API Gateway

POST GET

Lambdato store

restaraunts

Page 88: Divide and conquer for agility and scalability: An introduction to Microservices

DynamoDB

Lambdato retrieverestaraunts

Restaurant Micro-service

API Gateway

POST GET

Web UI

Lambdato store

restaraunts

Page 89: Divide and conquer for agility and scalability: An introduction to Microservices
Page 90: Divide and conquer for agility and scalability: An introduction to Microservices

DynamoDB

Lambda toretrieverestaraunts

Restaurant Micro-service

API Gateway

POST GET

Web UI

Lambda tostore

restaraunts

Page 91: Divide and conquer for agility and scalability: An introduction to Microservices

Highly Scalable• Inherently scalable

Secure• API Gateway acts as “front door”• Can add authN/authZ; or throttle API if needed• S3 bucket policies• IAM Roles for Lambda invocations

Cost-efficient• Only pay for actual microservice usage

Page 92: Divide and conquer for agility and scalability: An introduction to Microservices

Micro-service A Micro-service B

public API public API

From a few…

Page 93: Divide and conquer for agility and scalability: An introduction to Microservices

Driversmicro-services

Paymentsmicro-service Location

micro-services

Orderingmicro-services

Restaurantmicro-service

…to an ecosystem

Page 94: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 3

Secure Your Services

“security” by Dave Bleasdale. No alterations other than cropping.https://www.flickr.com/photos/sidelong/3878741556/

Image used with permissions under Creative Commons license 2.0,Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 95: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 3: Secure Your Services

• Defense-in-depth• Network level (e.g. VPC, Security Groups, TLS)• Server/container-level• App-level• IAM policies

• Gateway (“Front door”)

• API Throttling

• Authentication & Authorization• Client-to-service, as well as service-to-service• API Gateway: custom Lambda authorizers• IAM-based Authentication• Token-based auth (JWT tokens, OAuth 2.0)

• Secrets management• S3 bucket policies + KMS + IAM• Open-source tools (e.g. Vault, Keywhiz)

API Gateway

Page 96: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 4

Be a good citizenwithin the ecosystem

“Lamington National Park, rainforest” by Jussarian. No alterations other than cropping.https://www.flickr.com/photos/kerr_at_large/87771074/

Image used with permissions under Creative Commons license 2.0,Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 97: Divide and conquer for agility and scalability: An introduction to Microservices

Hey Sally, we need to call your micro-service to fetch

restaurants details.

Sure Paul. Which APIs you need to call? Once I know

better your use cases I’ll give you permission to register

your service as a client on our service’s directory entry.

Micro-service A Micro-service B

public API public API

Principle 4: Be a good citizen within the ecosystem

Page 98: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 4: Be a good citizen within the ecosystem(Have clear SLAs)

RestaurantMicro-service

15 TPS100 TPS5 TPS20 TPS

Before we let you call our micro-service we

need to understand your use case, expected load

(TPS) and accepted latency

Page 99: Divide and conquer for agility and scalability: An introduction to Microservices

…and many,many others!

Distributed monitoring and tracing• “Is the service meeting its SLA?”• “Which services were involved in a request?”• “How did downstream dependencies perform?”

Shared metrics• e.g. request time, time to first byte

Distributed tracing• e.g. Zipkin, OpenTracing

User-experience metrics

Principle 4: Be a good citizen within the ecosystem(Distributed monitoring, logging and tracing)

Page 100: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 5

More than justtechnology transformation

“rowing on the river in Bedford” by Matthew Hunt. No alterations other than cropping.https://www.flickr.com/photos/mattphotos/19189529/

Image used with permissions under Creative Commons license 2.0,Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 101: Divide and conquer for agility and scalability: An introduction to Microservices

“Any organization that designs a system will inevitably produce a design whose structure is a copy of the organization’scommunication structure.”

Melvin E. Conway, 1967

Conway’s Law

Page 102: Divide and conquer for agility and scalability: An introduction to Microservices

Decentralize governance and data management

Image from Martin Fowler’s article on microservices, athttp://martinfowler.com/articles/microservices.html

No alterations other than cropping.Permission to reproduce: http://martinfowler.com/faq.html

Page 103: Divide and conquer for agility and scalability: An introduction to Microservices

Decentralize governance and data management

Image from Martin Fowler’s article on microservices, athttp://martinfowler.com/articles/microservices.html

No alterations other than cropping.Permission to reproduce: http://martinfowler.com/faq.html

Page 104: Divide and conquer for agility and scalability: An introduction to Microservices

Silo’d functional teams silo’d application architectures

Image from Martin Fowler’s article on microservices, athttp://martinfowler.com/articles/microservices.html

No alterations other than cropping.Permission to reproduce: http://martinfowler.com/faq.html

Page 105: Divide and conquer for agility and scalability: An introduction to Microservices

Silo’d functional teams silo’d application architectures

Image from Martin Fowler’s article on microservices, athttp://martinfowler.com/articles/microservices.html

No alterations other than cropping.Permission to reproduce: http://martinfowler.com/faq.html

Page 106: Divide and conquer for agility and scalability: An introduction to Microservices

Cross functional teams self-contained services

Image from Martin Fowler’s article on microservices, athttp://martinfowler.com/articles/microservices.html

No alterations other than cropping.Permission to reproduce: http://martinfowler.com/faq.html

Page 107: Divide and conquer for agility and scalability: An introduction to Microservices

Cross functional teams self-contained services

Image from Martin Fowler’s article on microservices, athttp://martinfowler.com/articles/microservices.html

No alterations other than cropping.Permission to reproduce: http://martinfowler.com/faq.html

Page 108: Divide and conquer for agility and scalability: An introduction to Microservices

“Two-pizza teams” at Amazon

Full ownership

Full accountability

Aligned incentives

“DevOps”

Non-pizza image from Martin Fowler’s article on microservices, athttp://martinfowler.com/articles/microservices.html

No alterations other than cropping.Permission to reproduce: http://martinfowler.com/faq.html

Page 109: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 6

Automate Everything

“Robot” by Robin Zebrowski. No alterations other than cropping.https://www.flickr.com/photos/firepile/438134733/

Image used with permissions under Creative Commons license 2.0,Attribution Generic License (https://creativecommons.org/licenses/by/2.0/)

Page 110: Divide and conquer for agility and scalability: An introduction to Microservices

releasetestbuild

Focused agile teams

2-pizza team delivery pipeline service

Page 111: Divide and conquer for agility and scalability: An introduction to Microservices

releasetestbuild

releasetestbuild

Focused agile teams

2-pizza team delivery pipeline service

Page 112: Divide and conquer for agility and scalability: An introduction to Microservices

releasetestbuild

releasetestbuild

releasetestbuild

Focused agile teams

2-pizza team delivery pipeline service

Page 113: Divide and conquer for agility and scalability: An introduction to Microservices

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

Focused agile teams

2-pizza team delivery pipeline service

Page 114: Divide and conquer for agility and scalability: An introduction to Microservices

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

Focused agile teams

2-pizza team delivery pipeline service

Page 115: Divide and conquer for agility and scalability: An introduction to Microservices

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

releasetestbuild

Focused agile teams

2-pizza team delivery pipeline service

Page 116: Divide and conquer for agility and scalability: An introduction to Microservices

Principle 6: Automate everything

AWS

CodeCommit

AWS

CodePipeline

AWS

CodeDeploy

EC2 ELBAuto

ScalingLambdaECS

DynamoDBRDS ElastiCache SQS SWF

SES SNS

API GatewayCloudWatch Cloud Trail

KinesisElasticBeanstalk

Page 117: Divide and conquer for agility and scalability: An introduction to Microservices

It’s a journey…

Expect challenges along the way…

• Understanding of business domains

• Coordinating txns across multiple services

• Eventual Consistency

• Service discovery

• Lots of moving parts requires increased coordination

• Complexity of testing / deploying / operating a distributed system

• Cultural transformation

Page 118: Divide and conquer for agility and scalability: An introduction to Microservices

Principles of Microservices

1. Rely only on the public API Hide your data Document your APIs Define a versioning strategy

2. Use the right tool for the job Polygot persistence (data layer) Polyglot frameworks (app layer)

3. Secure your services Defense-in-depth Authentication/authorization

6. Automate everything Adopt DevOps

4. Be a good citizen within the ecosystem Have SLAs Distributed monitoring, logging, tracing

5. More than just technology transformation Embrace organizational change Favor small focused dev teams

Page 119: Divide and conquer for agility and scalability: An introduction to Microservices

Benefits of microservices

Rapid Build/Test/Release Cycles

Clear ownership andaccountability

Easier to scaleeach individual micro-service

New releasestake minutes

Short time to addnew features

Easier to maintain and evolve

Increase innovation

Delighted customers

Increased agility

Page 120: Divide and conquer for agility and scalability: An introduction to Microservices

Benefits of microservices

Rapid Build/Test/Release Cycles

Clear ownership andaccountability

Easier to scaleeach individual micro-service

New releasestake minutes

Short time to addnew features

Easier to maintain and evolve system

Faster innovation

Delighted customers

Increased agility

Page 121: Divide and conquer for agility and scalability: An introduction to Microservices

Benefits of microservices

Rapid Build/Test/Release Cycles

Clear ownership andaccountability

Easier to scaleeach individual micro-service

New releasestake minutes

Short time to addnew features

Easier to maintain and evolve system

Faster innovation

Delighted customers

Increased agility

Page 122: Divide and conquer for agility and scalability: An introduction to Microservices

Additional AWS resources:• Zombie Microservices Workshop:

https://github.com/awslabs/aws-lambda-zombie-workshop• Serverless Webapp - Reference Architecture:

https://github.com/awslabs/lambda-refarch-webapp• Microservices with ECS:

https://aws.amazon.com/blogs/compute/using-amazon-api-gateway-with-microservices-deployed-on-amazon-ecs/

• Serverless Service Discovery:https://aws.amazon.com/blogs/developer/serverless-service-discovery-part-1-get-started/

• ECS Service Discovery:https://aws.amazon.com/blogs/compute/service-discovery-an-amazon-ecs-reference-architecture/

• Microservices without the Servershttps://aws.amazon.com/blogs/compute/microservices-without-the-servers

Popular open-source tools:• Serverless – http://serverless.com• Apex - http://apex.run/

https://aws.amazon.com/devops/

Additional resources

Page 123: Divide and conquer for agility and scalability: An introduction to Microservices

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

Jim Tran

[email protected]

Thank you!