aws re:invent 2016: from monolithic to microservices: evolving architecture patterns in the cloud...
TRANSCRIPT
![Page 1: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/1.jpg)
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Emerson Loureiro, Sr. Software Engineer, Gilt
Derek Chiles, Tech Leader Team, AWS
November 30, 2016
From Monolithic to MicroservicesGilt’s Journey To Microservices on AWS
ARC305
![Page 2: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/2.jpg)
What to Expect from the Session
• Why Microservices?
• Migration approaches and considerations
• Gilt’s journey to microservices on AWS
• Architecture patterns and best practices
![Page 3: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/3.jpg)
Gilt
![Page 4: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/4.jpg)
Gilt
![Page 5: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/5.jpg)
Gilt
“How can we scale things up independently?”
“How can we arrange teams around strategic initiatives?”
“How can we make it easy and fast to push changes to
production?”
![Page 6: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/6.jpg)
Gilt
Ruby on
Rails
Jobs
memcache
Postgres
Ruby on
Rails
Jobs
memcache
Postgres
Product
service
Order
service
Cart
service
…
Swift
(gilt.com)
City Swift
(giltcity.com)
Taste(gilttaste.com)
…Front-endJava services
Ruby on
Rails
Jobs
memcache
Postgres
Product
service
Java services
Web
PDP
Web
Search
Web
Homepage
…
gilt.comScala
microservices
Order
service
201520112007
…
![Page 7: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/7.jpg)
Common MobilePersonali-
sationAdmin Data
Gilt
(2) “Department” accounts
Existing Data Centre
“Legacy VPC”
(1) Deploy to VPC Dual 10 Gb direct connect line, 2-ms latency.
![Page 8: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/8.jpg)
Monolithic Microservices
• Simple deployments
• Inter-module refactoring
• Binary failure modes
• Vertical scaling
• Technology monoculture
• Partial deployments
• Strong module boundaries
• Graceful degradation
• Horizontal scaling
• Technology diversity
![Page 9: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/9.jpg)
Organization & Ownership
![Page 10: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/10.jpg)
Monolithic Organization
Organized on technology capabilities
UI Team
DBA Team
App Logic Team
Web Tier
App Tier
DB
Organizational Structure Application Architecture
![Page 11: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/11.jpg)
Microservices OrganizationOrganized around business initiatives
Login
Registration
Order
Personalization
Accounts team
Mobile
Personalization team Mobile team
![Page 12: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/12.jpg)
The Teams
• Ingredients
• Team size: typically 3-5 people
![Page 13: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/13.jpg)
The “A” Team
![Page 14: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/14.jpg)
The Teams
• Independent teams who fully own their services:
• Requirements
• Quality
• Deployment
• Source code
• Technology selection
![Page 15: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/15.jpg)
Architecture
![Page 16: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/16.jpg)
Monolithic Architecture
Load
Balancer
Account Service
Cart Service
Shipping Service
StoreFront UI
BrowserDatabase
Data Access
Service
![Page 17: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/17.jpg)
Account
Database
Inventory
Database
Shipping
Database
Microservices Architecture
Load
BalancerStoreFront
UIBrowser
Account
Service
Cart Service
Shipping
Service
Load
Balancer
Load
Balancer
Load
Balancer
![Page 18: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/18.jpg)
Microservices Architecture
Load
BalancerStoreFront
UIBrowser
Account
Database
Account
Service
Cart Service Inventory
Database
Shipping
Service
API
Gateway
Load
Balancer
Load
Balancer
Load
BalancerShipping
Database
![Page 19: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/19.jpg)
Auto Scaling Group
Typical Service Stack at Gilt
ELB
DNS
Docker registry
…
Amazon CloudWatch Metrics
Amazon SNS Topic
EC2 Instance
Service “X” VM
EC2 Instance
Service “X” VMCloudWatch Log Group
![Page 20: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/20.jpg)
Service Instance Types at Gilt
![Page 21: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/21.jpg)
Decomposition
![Page 22: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/22.jpg)
Strangling the Monolith
DatabaseStoreFront
UIBrowser
Cart
Service
Account
Service
User
Service
![Page 23: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/23.jpg)
No New Features on the Monolith
DatabaseStoreFront
UIBrowser
New
Microservice
New DB
Cart
Service
Account
Service
User
Service
![Page 24: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/24.jpg)
Anti-Corruption Layer for Integration
ACL
DatabaseStoreFront
UIBrowser
New
Microservice
New DB
Cart
Service
Account
Service
User
Service
![Page 25: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/25.jpg)
Cart
Service
Account
Service
Start With a Simple Existing Service…
DatabaseStoreFront
UIBrowser
User
Microservice
User DB
New
Microservice
New DB
User
Service
Client
![Page 26: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/26.jpg)
Account
Service
User
Service
Client
…Move on to More Complicated Services
Cart
Microservice
DatabaseStoreFront
UIBrowser
User
Microservice
User DB
New
Microservice
New DB
ACL
Cart DB
Cart
Service
![Page 27: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/27.jpg)
…Keep Walking and…
Cart
Microservice
DatabaseStoreFront
UIBrowser
User
Microservice
User DB
New
Microservice
New DB
Account
Microservice
Cart DB Account DB
Account
Service
User
Service
Client
ACL
Cart
Service
ACL
![Page 28: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/28.jpg)
…The Monolith is Eventually Gone
Cart
Microservice
StoreFront
UIBrowser
User
Microservice
User DB
New
Microservice
New DB
Account
Microservice
Cart DB Account DB
![Page 29: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/29.jpg)
Data Management
![Page 30: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/30.jpg)
Decentralized Data Stores
• Freedom of choice
• Low impact schema changes
• Independent scalabilityaccount-
svc
cart-
svc
user-
svc
Amazon
ElastiCacheAmazon
RDSAmazon
DynamoDB
RDS
![Page 31: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/31.jpg)
Storage & DB options in AWS
Amazon
RDS
Amazon
DynamoDBAmazon
ElasticSearch
Amazon
S3Amazon
Kinesis
Amazon
ElastiCache
Cache NoSQL SQL SearchObject Streaming
Amazon
Redshift
Amazon
Glacier
![Page 32: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/32.jpg)
Serv
ice
![Page 33: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/33.jpg)
Cross-Service Transactions
1) Avoid them
2) Use an optimistic model
• Accept eventual consistency
• Design for idempotency
• Detect conflicts and resolve later
• Ignore conflicts
3) Use a pessimistic model
• Create a transaction manager or distributed locking service
• Build transaction logic into the services
• Rethink your design
![Page 34: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/34.jpg)
Aggregation
usr svc
Pull model Push model
Data Aggregation
Application
usr svc
Data
Aggregation
Application
Pub/Sub Composite
Composite Data Service
usr account cart
account svc cart svc
account svc
cart svc
Pub Sub
usr svc
account svc
cart svc
Data
Aggregation
Application
Push
Pull
![Page 35: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/35.jpg)
Aggregation
usr svc
Pull model Push model
Data Aggregation
Application
usr svc
Data
Aggregation
Application
Pub/Sub Composite
Composite Data Service
usr account cart
account svc cart svc
account svc
cart svc
Pub Sub
usr svc
account svc
cart svc
Data
Aggregation
Application
Push
Pull
![Page 36: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/36.jpg)
Aggregation
usr svc
Pull model Push model
Data Aggregation
Application
usr svc
Data
Aggregation
Application
Pub/Sub Composite
Composite Data Service
usr account cart
account svc cart svc
account svc
cart svc
Pub Sub
usr svc
account svc
cart svc
Data
Aggregation
Application
Push
Pull
![Page 37: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/37.jpg)
Aggregation
usr svc
Pull model Push model
Data Aggregation
Application
usr svc
Data
Aggregation
Application
Pub/Sub Composite
Composite Data Service
usr account cart
account svc cart svc
account svc
cart svc
Pub Sub
usr svc
account svc
cart svc
Data
Aggregation
Application
Push
Pull
![Page 38: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/38.jpg)
API Discovery & Management
![Page 39: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/39.jpg)
DiscoveryOption #1 – Convention-based naming
shoppingcart.gamma.example.com
![Page 40: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/40.jpg)
DiscoveryOption #2: Dynamic Discovery
![Page 41: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/41.jpg)
StoreFront UI
Account
Service
Service Registry
Cart Service
Cart Service2) Query
3) Request
1) Register
DiscoveryOption #2: Dynamic Discovery
![Page 42: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/42.jpg)
API Management
• Enforce API consistency
• Monitor key metrics
• Implement read-through caching
• Provide authentication and authorization
• Meter and throttle
![Page 43: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/43.jpg)
Amazon API Gateway
• Enforce API consistency
• Monitor key metrics
• Implement read-through caching
• Provide authentication and authorization
• Meter and throttle
![Page 44: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/44.jpg)
Amazon API Gateway for Microservices
ClientAPI Gateway
Monolith
on EC2
Microservice 1
(Lambda)
Microservice 2
(ELB+EC2)
Microservice 3
(AWS Elastic Beanstalk)
![Page 45: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/45.jpg)
DO DON’T
• Add new methods
• Add optional params
• Deprecate
• Negotiate disruptive
changes
• Delete or rename
• Add required params
• Remove required params
• Mandate disruptive
changes
API Version Management
![Page 46: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/46.jpg)
Deployment
![Page 47: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/47.jpg)
Continuous Delivery & Continuous Deployment
Integration &
perf tests
Build & unit
testsbeta Prod
Monolit
h
Timeline
Cart, UserCart,
Account
Sales,
Account,
User
On the monolith…
![Page 48: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/48.jpg)
Continuous Delivery & Continuous Deployment
Create the right build pipeline for each service
Integration &
perf tests
Build & unit
testsbeta Produser-svc
Integration &
perf tests
Build & unit
testsbeta gamma Prodcart-svc
AWS
CodeDeploy
Elastic
BeanstalkJenkins TravisCI CircleCIAWS
CodePipeline
![Page 49: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/49.jpg)
Deployment Pace
cart-svc
checkout-svc
Timeline
Rollback
![Page 50: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/50.jpg)
Phased Rollout
![Page 51: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/51.jpg)
Elastic Beanstalk Application
Phased Rollout at Gilt Under the HoodBlue-Green Deployments with Elastic Beanstalk
Environment (0.0.1)
Instance Instance Instance
Environment (0.0.2)
Instance Instance Instance
ELB
![Page 52: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/52.jpg)
Elastic Beanstalk Application
Phased Rollout at Gilt Under the HoodBlue-Green Deployments with Elastic Beanstalk
Environment (0.0.1)
Instance Instance Instance
Environment (0.0.2)
Instance Instance Instance
ELB
![Page 53: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/53.jpg)
Elastic Beanstalk Application
Phased Rollout at Gilt Under the HoodBlue-Green Deployments with Elastic Beanstalk
Environment (0.0.1)
Instance Instance Instance
Environment (0.0.2)
Instance Instance Instance
ELB
![Page 54: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/54.jpg)
Elastic Beanstalk Application
Phased Rollout at Gilt Under the HoodBlue-Green Deployments with Elastic Beanstalk
Environment (0.0.1)
Instance Instance Instance
Environment (0.0.2)
Instance Instance Instance
ELB
![Page 55: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/55.jpg)
Elastic Beanstalk Application
Phased Rollout at Gilt Under the HoodBlue-Green Deployments with Elastic Beanstalk
Environment (0.0.2)
Instance Instance Instance
ELB
![Page 56: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/56.jpg)
Phased Rollout at Gilt Under the Hood
CodeDeploy Application
Canary Deployment Group Production Deployment GroupDevelopment Deployment Group
InstanceInstanceInstanceInstance
Production ELBDevelopment ELB
Gilt Production
Users
Production DNSDevelopment DNS
Testing in Production with CodeDeploy
![Page 57: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/57.jpg)
Phased Rollout at Gilt Under the Hood
CodeDeploy Application
Canary Deployment Group Production Deployment GroupDevelopment Deployment Group
InstanceInstanceInstanceInstance
Production ELBDevelopment ELB
Gilt Production
Production DNS
UsersEngineers
Development DNS
Testing in Production with CodeDeploy
Promote Promote
![Page 58: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/58.jpg)
Phased Rollout at Gilt Under the Hood
CodeDeploy Application
Canary Deployment Group Production Deployment GroupDevelopment Deployment Group
InstanceInstanceInstanceInstance
Production ELBDevelopment ELB
Gilt Production
UsersEngineers & QA
Production DNSDevelopment DNS
Testing in Production with CodeDeploy
Promote Promote
Dev, please
![Page 59: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/59.jpg)
Monitoring & Logging
![Page 60: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/60.jpg)
Monitoring
• Instance level: Memory usage, GC Cycles
• Service level: RPMs, Latency, Error rate
• Universe level: Endpoint response times
![Page 61: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/61.jpg)
Monitoring at Gilt
![Page 62: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/62.jpg)
Monitoring at Gilt
Remote calls response time
Submitted orders
CloudWatch
![Page 63: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/63.jpg)
Logging
• Push your logs somewhere
S3 Elasticsearch CloudWatch Logs
![Page 64: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/64.jpg)
Logging
• Push your logs somewhere
• Have visibility on the whole life cycle
Deployment => instance startup => application => termination
S3 Elasticsearch CloudWatch
![Page 65: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/65.jpg)
Logging
• Push your logs somewhere
• Have visibility on the whole life cycle
Deployment => instance startup => application => termination
• Separate your logs by service and by instance
S3 Elasticsearch CloudWatch
![Page 66: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/66.jpg)
Logging At Gilt
Service
EC2 Instance
Service “X” VM
EC2 Instance
Service “X” VM
CloudWatch Log Group
Log Stream
Log Stream
Errors!
![Page 67: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/67.jpg)
Aggregation Layer
Log Aggregation
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
CloudWatch Log Group
Log Stream
Log Stream
+ + + + + =
![Page 68: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/68.jpg)
Cleanup Service
EC2 Instance
Service “X” VM
EC2 Instance
Service “X” VM
CloudWatch Log Group
Log Stream
Log Stream
Service
EC2 Instance
Service “X” VM
EC2 Instance
Service “X” VM
CloudWatch Log Group
Log Stream
Log Stream
Log Aggregation At Gilt
Service
EC2 Instance
Service “X” VM
EC2 Instance
Service “X” VM
CloudWatch Log Group
Log Stream
Log Stream
LambdaAWS Elasticsearch
Kibana
Lambda
Delete!
Index!
Timer
![Page 69: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/69.jpg)
Good Citizenship
![Page 70: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/70.jpg)
Service Consumer Tenets
• Design for failure
• Plan to be throttled
• Plan to retry (w/ exponential backoff)
• Degrade gracefully
• Cache when appropriate
![Page 71: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/71.jpg)
Service Provider Tenets
• Publish standard metrics
• Publish logs for aggregation
• Be prepared to throttle
• Implementation details are private
• Maintain backwards compatibility
![Page 72: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/72.jpg)
Standardize Logging
2016-09-02T15:03:24+00:00 ui-svc INFO [uuid-123] ...
2016-09-02T15:03:25+00:00 catalog-svc INFO [uuid-123] ...
2016-09-02T15:03:26+00:00 checkout-svc ERROR [uuid-123] ...
2016-09-02T15:03:27+00:00 payment-svc INFO [uuid-123] ...
2016-09-02T15:03:27+00:00 shipping-svc INFO [uuid-123] ...
ui-svc catalog-svc checkout-
svc
shipping-
svc
payment-
svc
request correlation id:
“uuid-123”correlation id:
“uuid-123”
![Page 73: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/73.jpg)
Parallelize
Aggregate
Service
Service 1
Service 2
Service 3
Single request parallel request
![Page 74: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/74.jpg)
Parallelize
for {
a <- callServiceA()
b <- callServiceB()
c <- callServiceC(a, b)
} yield c
val futureA = callServiceA()
val futureB = callServiceB()
for {
a <- futureA
b <- futureB
c <- callServiceC(a, b)
} yield c
![Page 75: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/75.jpg)
Degrade Gracefully
checkout-svc
Downstream
Service 1
Downstream
Service 2
Downstream
Service 3
Single request
Request
response
Fast response
![Page 76: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/76.jpg)
Cache Locally
Remote
Service
Application
Runtime
Local
Cache
![Page 77: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/77.jpg)
Cache Externally
Remote
Service
Local
Service
External Cache
![Page 78: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/78.jpg)
Use a Read-Through Cache
Local
Service
Cache
Remote
Service
API Gateway
![Page 79: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/79.jpg)
Private Services
Putting It All Together
Public Services
Web front-end Mobile apps
![Page 80: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/80.jpg)
Recap
• Organisation & Ownership
• Architecture & Decomposition
• Data Management
• Discovery
• API Management
• Deployment
• Logging and Monitoring
• Good citizenship
![Page 81: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/81.jpg)
Thank you!Thank You!
![Page 82: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/82.jpg)
Remember to complete
your evaluations!
![Page 83: AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture Patterns in the Cloud (ARC305)](https://reader034.vdocuments.us/reader034/viewer/2022051709/586f90421a28ab54768b78e5/html5/thumbnails/83.jpg)
Related Sessions