SlideShare a Scribd company logo
1 of 77
Download to read offline
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
From Monolith to Microservices
(And All the Bumps along the Way)
Max Blaze
Staff Operations Engineer
Duolingo
C O N 3 6 0 - R
Brent Langston
Sr. Developer Advocate
Amazon Web Services
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How do I prepare?
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
People
WorkflowTechnical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What are some hurdles to prepare for?
People
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What are some hurdles to prepare for?
Old ways in contrast to new ways
People
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What are some hurdles to prepare for?
Old ways in contrast to new ways
“How can I develop locally?”
People
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What are some hurdles to prepare for?
Old ways in contrast to new ways
“How can I develop locally?”
“Deployments are painful. Will that get worse?”
People
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What are some hurdles to prepare for?
Old ways in contrast to new ways
“How can I develop locally?”
“Deployments are painful. Will that get worse?”
“My config management already handles everything
perfectly!”
People
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What are some hurdles to prepare for?
Old ways in contrast to new ways
“How can I develop locally?”
“Deployments are painful. Will that get worse?”
“My config management already handles everything
perfectly!”
“What do you mean I have to be on call?”
People
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How can AWS help? People
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How does Docker help with the migration?
Workflow
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How does Docker help with the migration?
• Packaging
It becomes the same, no matter the language.
Docker multi-stage builds—tests in one container, copies the final artifact to a newer,
smaller container.
Workflow
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How does Docker help with the migration?
• Packaging
It becomes the same, no matter the language.
Docker multi-stage builds—tests in one container, copies the final artifact to a newer,
smaller container.
• Distribution
It becomes the same, no matter the language.
Docker pulls the desired image tag, and Docker runs the container. Language doesn’t
matter.
Workflow
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How does Docker help with the migration?
• Packaging
It becomes the same, no matter the language.
Docker multi-stage builds—tests in one container, copies the final artifact to a newer,
smaller container.
• Distribution
It becomes the same, no matter the language.
Docker pulls the desired image tag, and Docker runs the container. Language doesn’t
matter.
• Scaling up and down becomes fast
Docker images start quickly, so we can add them and remove them in response to current
demand.
Workflow
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How does Docker help with the migration?
• Packaging
It becomes the same, no matter the language.
Docker multi-stage builds—tests in one container, copies the final artifact to a newer
smaller container.
• Distribution
It becomes the same, no matter the language.
Docker pulls the desired image tag, and Docker runs the container. Language doesn’t
matter.
• Scaling up and down becomes fast.
Docker images start quickly, so we can add them and remove them in response to current
demand.
• Experimenting becomes easier, so it’s encouraged.
Since packaging and distribution are trivially easy, we can experiment with code changes,
and roll them back, or iterate on them with ease, typically without any additional demand
for resources.
Workflow
Workflow
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How can AWS help?
Workflow
Workflow
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
Is the process running?
Replaces monit, supervisord, systemd
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
Is the process healthy?
Include load balancer healthchecks
Include Docker healthcheck
Only healthcheck one layer
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
How do I get traffic to my processes?
Integration with ALB/NLB
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
How does one service find another?
Service discovery
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
When should I scale up (or down)?
Metrics monitoring
TPS calculation
Auto scaling
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
How do I deploy new code?
Docker replaces Fabricator/Chef/Ansible/and the like
No more copying files, moving symlinks, restarting
processes
No custom deploy logic to maintain
tag with git-sha, deploy new tag
Blue green deploys for most things
Some processes should be red/black
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
How do I add, replace, or remove instances?
Instances are now simply resources, nothing special
No “special snowflakes”
Configuration is immutable
Replace, don’t reconfigure
quickly add or drain/replace/remove instances
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What problems does orchestration solve?
How do I save money?
Replace “special snowflakes” with generic instances that are
resource pools
Docker makes it easier to co-locate services
Instances can run at higher utilization
Fewer instances are necessary
Can use instance store for disk space, rather than Amazon EBS
Amazon ECS integrates with spot fleet for even cheaper
instances
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How can AWS help?
Technical
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Introducing:
Max Blaze
Staff Operations Engineer
Duolingo
C O N 3 6 0 - R
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Free and accessible language education for all
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
The most downloaded education app in the world
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
30+ languages/80+ courses
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
300M+ users worldwide
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
150 employees
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Duolingo growth
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
A brief history
Launch
Config
management
AWS Auto Scaling
First microservice
Centralized
dashboards + logging
Infrastructure as code
First microservice on Amazon ECS
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Why move to microservices?
Scalability
Cost savings
Velocity
ReliabilityFlexibility
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How do you decide what to carve out of your monolith first?
• Start with a small, but impactful feature
• Move up in size, complexity, and risk
• Consider dependencies
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
0.99
Monolith
System availability
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Chained microservices
0.99 * 0.99 * 0.99 = 0.97
0.990.990.99
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Independent microservices
1 - (1 - 0.99)3 = 0.999999
0.990.990.99
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Why use Docker for microservices?
• Standardizes the build process and encapsulates dependencies
• Local development environment similar to production
• Quick deployments and rollbacks
• Flexible resource allocation
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Simplifying local development setup (old way)
1. Clone this repository.
2. Set up and activate a virtualenv and install requirements using pip install -r requirements.txt.
3. Download and install Postgres: brew install postgresql
4. Run Postgres locally: postgres -D /usr/local/var/postgres
5. Download pgAdmin3 (not totally necessary, but will make life easier).
6. Using pgAdmin3, create a new login role under your local server with name "admin" and password
"somepassword".
7. Create a DB called “db".
8. Run the migration script in the repo using python manage.py db upgrade.
9. Check that your DB is now populated with tables.
10. Set up and run memcached: brew install memcached
11. Set up and run redis: brew install redis-server
12. Set up and run elasticsearch: brew install elasticsearch
13. Finally, try to run the server using python application.py. You can test if it’s working by going here
(you should see user info) and here (you should see {'data': []}).
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Simplifying local development setup (new way)
$ docker-compose build
$ docker-compose up
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Why use Docker with Amazon ECS?
Task auto scaling
Manageability
Amazon CloudWatch
metrics
Dynamic ALB targetsTask-level AWS IAM
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Microservice abstractions at Duolingo
Web service (internal or external)
Worker service (daemon or cron)
Monitoring
Amazon
Route53 ALB
Amazon
ECS
tasks
Amazon
SQS
Amazon
ECS task
Event
Data stores
Amazon RDS
Amazon DynamoDB
Redis/Memcached
AWS KMS
ELK stack
CloudWatch Grafana
PagerDuty
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Microservice definition in Terraform
module “duolingo-api" {
source = “repo/terraform//modules/ecs_web_service"
environment = “prod"
product = “duolingo"
service = “api"
owner = “Max Blaze"
min_count = 2
max_count = 4
cpu = 512
memory = 256
ecs_cluster = "prod"
internal = "true"
container_port = 5000
version = "${var.version}"
}
Billing tags
Resources
Auto scaling
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Aurora database cluster definition in Terraform
module “duolingo-api—db“ {
source = “repo/terraform//modules/ecs_web_service"
product = “duolingo”
service = “api”
subservice = “db"
owner = “Max Blaze”
cluster_identifier = “duolingo-api-db-cluster"
identifier = “duolingo-api"
engine = "aurora-postgresql"
name = "duolingo"
password = "${data.aws_kms_secret.duolingo_api_db.duolingo_api_db}"
instance_class = "db.r4.large"
num_cluster_instances = 2
}
Billing tags
Instance type
DB engine
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous integration and deployment
Developer
GitHub
Jenkins
Terraform
Deployment
Terraform state
Amazon S3 bucket
Plan/apply with
version string
Amazon ECS
Amazon
ECR repo
Dockerfile build
Docker image push
Docker image pull
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Load balancing
• ALBs and CLBs operate at different network layers
• ALBs are more strict when handling malformed requests
• ALBs default to HTTP/2
• Headers are always passed as lowercase
• There are differences in Amazon CloudWatch metrics
ALB ≠ CLB
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Task-level AWS IAM role permissions
• Apply permissions at the service level
• Do not share permissions across microservices
• Needs to be supported by the AWS client library
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Standardizing microservices
• Develop a common naming scheme for repos and services
• Autogenerate as much of the initial service as possible
• Move core functionality to shared base libraries
• Provide standard alarms and dashboards
• Periodically review microservices for consistency and quality
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Monitoring microservices
Web service dashboard
• Local time and UTC
• Healthy, unhealthy, and
running tasks
• Latency average and
percentiles
• Number of requests
• CPU and memory utilization
(min/avg/max)
• Service errors by AZ
• ALB errors by AZ
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Monitoring microservices
Worker service dashboard
• Local time and UTC
• Running tasks
• CPU and memory
utilization (min/avg/max)
• Visible messages
• Deleted messages
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Monitoring microservices
PagerDuty integration
• Schedules and
rotations are defined
in Terraform
• Emergency alarms
page (high latency)
• Warning alarms go to
e-mail (low memory)
• Include links to
playbooks
• All pages are also
visible in Slack
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Grading microservices
Architecture Documentation Processes Tests
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Grading microservices
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
• Cluster
• Instance type
• Pricing options
• Auto scale
• Add/remove AZs
Web
Worker
API
• Task
• Resource allocation
• Auto scale
Cost reduction options
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Cluster starting point
c3.2xlarge
Reserved instances
On-demand
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
High-CPU instance generations
Speed $/hour Disk
c3.large - 0.105 SSD
c4.large +20% of c3 0.100
None (Amazon EBS-
only)
c5d.large +25% of c4 0.096 NVMe
c5 is 50% faster than c3!
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Moving to a new Amazon EC2 generation
Latest instances are generally faster and cheaper but…
• “cpu” units in Amazon ECS will not be equivalent
• Auto scaling may not work properly between generations
(1 vCPU core = 1024 units)
c5.large
cpu = 1024
c3.large
cpu = 1024
c4.large
cpu = 1024
> >
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Fixed number of instances
c5d.2xlarge
Reserved instances
On-demand
c5d.large…c5d.18xlarge
m5d.large...m5d.24xlarge
Reserved instances
On-demand
Spot
Auto scaling
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Fixed number of instances
c5d.2xlarge
Reserved instances
On-demand
c5d.large…c5d.18xlarge
m5d.large...m5d.24xlarge
Reserved instances
On-demand
Spot
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Spotinst cluster features
• Mixes families + sizes
• Uses RIs before spot
• 15 minute spot notice
• Fits capacity to Amazon ECS
tasks
• AZ capacity heat map
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Spotinst cluster features
• Drains Amazon ECS tasks
• Cluster “headroom”
• Spreads capacity across AZs
• Bills on % of savings
• Terraform support
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Auto scaling with Spotinst
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What about per-microservice costs?
• Audit CPU/memory allocations for each service
• Update auto scaling and/or CPU allocations as needed
Goals
60% CPU
60–80% Memory
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Adjusting allocated CPU for scaling
allocatedCPU * currentUtilization = actualCPU
actualCPU/desiredUtilization = Units to set
Example:
Current utilization: 40%
Desired utilization: 60%
1024 * 40% = 409.6
409.6/60% = 682.67
Set Amazon ECS “cpu” allocation to 683
(1 vCPU core = 1024 units)
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Adjusting allocated memory
• Track memory usage between deployments
• Constantly increasing memory usage points to memory leaks
• Set containers to restart if memory exceeds 100%
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
API costs
ListAllMyBuckets + GetObject > 50% of Amazon S3 cost!
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Cost savings
May July August September October
Amazon EC2 compute costs
> 60% reduction from May to October
> 60% reduction in compute
costs
> 30% reduction in costs per
monthly active user (MAU)
> 25% reduction total AWS bill
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Key results
• Scalability
• Manage ~100 microservices
• Velocity
• Teams deploy to their own services
• Flexibility
• Officially support three different programming languages
• Reliability
• 99.99% availability achieved last quarter
• Cost
• 60% reduction in compute costs
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Resources
• Books
• Building Microservices: Designing Fine-Grained Systems (Sam Newman)
• Microservices in Production (Susan J. Fowler)
• References
• ec2instances.info
• github.com/open-guides/og-aws
• Tools and services
• ansible.com
• docker.com
• elastic.io
• github.com
• grafana.com
• jenkins.io
• pagerduty.com
• spotinst.com
• terraform.io
Thank you!
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Please complete the session
survey in the mobile app.
!
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.

More Related Content

What's hot

NFL and Forwood Safety Deploy Business Analytics at Scale with Amazon QuickSi...
NFL and Forwood Safety Deploy Business Analytics at Scale with Amazon QuickSi...NFL and Forwood Safety Deploy Business Analytics at Scale with Amazon QuickSi...
NFL and Forwood Safety Deploy Business Analytics at Scale with Amazon QuickSi...Amazon Web Services
 
Building and Moving Live Broadcasting to AWS (CTD305) - AWS re:Invent 2018
Building and Moving Live Broadcasting to AWS (CTD305) - AWS re:Invent 2018Building and Moving Live Broadcasting to AWS (CTD305) - AWS re:Invent 2018
Building and Moving Live Broadcasting to AWS (CTD305) - AWS re:Invent 2018Amazon Web Services
 
DevSecOps: Instituting Cultural Transformation for Public Sector Organization...
DevSecOps: Instituting Cultural Transformation for Public Sector Organization...DevSecOps: Instituting Cultural Transformation for Public Sector Organization...
DevSecOps: Instituting Cultural Transformation for Public Sector Organization...Amazon Web Services
 
Serverless Architectural Patterns and Best Practices (ARC305-R2) - AWS re:Inv...
Serverless Architectural Patterns and Best Practices (ARC305-R2) - AWS re:Inv...Serverless Architectural Patterns and Best Practices (ARC305-R2) - AWS re:Inv...
Serverless Architectural Patterns and Best Practices (ARC305-R2) - AWS re:Inv...Amazon Web Services
 
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018Amazon Web Services
 
Accelerate ML Training on Amazon SageMaker Using GPU-Based EC2 P3 Instances (...
Accelerate ML Training on Amazon SageMaker Using GPU-Based EC2 P3 Instances (...Accelerate ML Training on Amazon SageMaker Using GPU-Based EC2 P3 Instances (...
Accelerate ML Training on Amazon SageMaker Using GPU-Based EC2 P3 Instances (...Amazon Web Services
 
AWS and Symantec: Cyber Defense at Scale (SEC311-S) - AWS re:Invent 2018
AWS and Symantec: Cyber Defense at Scale (SEC311-S) - AWS re:Invent 2018AWS and Symantec: Cyber Defense at Scale (SEC311-S) - AWS re:Invent 2018
AWS and Symantec: Cyber Defense at Scale (SEC311-S) - AWS re:Invent 2018Amazon Web Services
 
Drive Customer Value with Data-Driven Decisions (GPSBUS206) - AWS re:Invent 2018
Drive Customer Value with Data-Driven Decisions (GPSBUS206) - AWS re:Invent 2018Drive Customer Value with Data-Driven Decisions (GPSBUS206) - AWS re:Invent 2018
Drive Customer Value with Data-Driven Decisions (GPSBUS206) - AWS re:Invent 2018Amazon Web Services
 
[REPEAT 1] Confidently Execute Your Cloud Audit: Expert Advice (SEC205-R1) - ...
[REPEAT 1] Confidently Execute Your Cloud Audit: Expert Advice (SEC205-R1) - ...[REPEAT 1] Confidently Execute Your Cloud Audit: Expert Advice (SEC205-R1) - ...
[REPEAT 1] Confidently Execute Your Cloud Audit: Expert Advice (SEC205-R1) - ...Amazon Web Services
 
DevOps Concepts for Data Science (DEV347-R2) - AWS re:Invent 2018
DevOps Concepts for Data Science (DEV347-R2) - AWS re:Invent 2018DevOps Concepts for Data Science (DEV347-R2) - AWS re:Invent 2018
DevOps Concepts for Data Science (DEV347-R2) - AWS re:Invent 2018Amazon Web Services
 
Vonage & Aspect: Transform Real-Time Communications & Customer Engagement (TL...
Vonage & Aspect: Transform Real-Time Communications & Customer Engagement (TL...Vonage & Aspect: Transform Real-Time Communications & Customer Engagement (TL...
Vonage & Aspect: Transform Real-Time Communications & Customer Engagement (TL...Amazon Web Services
 
Best Practices for Securing an Amazon VPC (NET318) - AWS re:Invent 2018
Best Practices for Securing an Amazon VPC (NET318) - AWS re:Invent 2018Best Practices for Securing an Amazon VPC (NET318) - AWS re:Invent 2018
Best Practices for Securing an Amazon VPC (NET318) - AWS re:Invent 2018Amazon Web Services
 
Build Deep Learning Applications Using Apache MXNet - Featuring Chick-fil-A (...
Build Deep Learning Applications Using Apache MXNet - Featuring Chick-fil-A (...Build Deep Learning Applications Using Apache MXNet - Featuring Chick-fil-A (...
Build Deep Learning Applications Using Apache MXNet - Featuring Chick-fil-A (...Amazon Web Services
 
Hollywood's Cloud-Based Content Lakes: Modernized Media Archives (MAE203) - A...
Hollywood's Cloud-Based Content Lakes: Modernized Media Archives (MAE203) - A...Hollywood's Cloud-Based Content Lakes: Modernized Media Archives (MAE203) - A...
Hollywood's Cloud-Based Content Lakes: Modernized Media Archives (MAE203) - A...Amazon Web Services
 
Deep Dive on Amazon Rekognition, ft. Tinder & News UK (AIM307-R) - AWS re:Inv...
Deep Dive on Amazon Rekognition, ft. Tinder & News UK (AIM307-R) - AWS re:Inv...Deep Dive on Amazon Rekognition, ft. Tinder & News UK (AIM307-R) - AWS re:Inv...
Deep Dive on Amazon Rekognition, ft. Tinder & News UK (AIM307-R) - AWS re:Inv...Amazon Web Services
 
Serverless:It All Started in Vegas (DVC306) - AWS re:Invent 2018
Serverless:It All Started in Vegas (DVC306) - AWS re:Invent 2018Serverless:It All Started in Vegas (DVC306) - AWS re:Invent 2018
Serverless:It All Started in Vegas (DVC306) - AWS re:Invent 2018Amazon Web Services
 
Proven Methodologies for Accelerating Your Cloud Journey (ENT308-S) - AWS re:...
Proven Methodologies for Accelerating Your Cloud Journey (ENT308-S) - AWS re:...Proven Methodologies for Accelerating Your Cloud Journey (ENT308-S) - AWS re:...
Proven Methodologies for Accelerating Your Cloud Journey (ENT308-S) - AWS re:...Amazon Web Services
 
M&E Leadership Session: The State of the Industry, What's New from AWS for M&...
M&E Leadership Session: The State of the Industry, What's New from AWS for M&...M&E Leadership Session: The State of the Industry, What's New from AWS for M&...
M&E Leadership Session: The State of the Industry, What's New from AWS for M&...Amazon Web Services
 
Rapid Innovation: The Business Case for Modern Application Development (SRV20...
Rapid Innovation: The Business Case for Modern Application Development (SRV20...Rapid Innovation: The Business Case for Modern Application Development (SRV20...
Rapid Innovation: The Business Case for Modern Application Development (SRV20...Amazon Web Services
 
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...Amazon Web Services
 

What's hot (20)

NFL and Forwood Safety Deploy Business Analytics at Scale with Amazon QuickSi...
NFL and Forwood Safety Deploy Business Analytics at Scale with Amazon QuickSi...NFL and Forwood Safety Deploy Business Analytics at Scale with Amazon QuickSi...
NFL and Forwood Safety Deploy Business Analytics at Scale with Amazon QuickSi...
 
Building and Moving Live Broadcasting to AWS (CTD305) - AWS re:Invent 2018
Building and Moving Live Broadcasting to AWS (CTD305) - AWS re:Invent 2018Building and Moving Live Broadcasting to AWS (CTD305) - AWS re:Invent 2018
Building and Moving Live Broadcasting to AWS (CTD305) - AWS re:Invent 2018
 
DevSecOps: Instituting Cultural Transformation for Public Sector Organization...
DevSecOps: Instituting Cultural Transformation for Public Sector Organization...DevSecOps: Instituting Cultural Transformation for Public Sector Organization...
DevSecOps: Instituting Cultural Transformation for Public Sector Organization...
 
Serverless Architectural Patterns and Best Practices (ARC305-R2) - AWS re:Inv...
Serverless Architectural Patterns and Best Practices (ARC305-R2) - AWS re:Inv...Serverless Architectural Patterns and Best Practices (ARC305-R2) - AWS re:Inv...
Serverless Architectural Patterns and Best Practices (ARC305-R2) - AWS re:Inv...
 
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
 
Accelerate ML Training on Amazon SageMaker Using GPU-Based EC2 P3 Instances (...
Accelerate ML Training on Amazon SageMaker Using GPU-Based EC2 P3 Instances (...Accelerate ML Training on Amazon SageMaker Using GPU-Based EC2 P3 Instances (...
Accelerate ML Training on Amazon SageMaker Using GPU-Based EC2 P3 Instances (...
 
AWS and Symantec: Cyber Defense at Scale (SEC311-S) - AWS re:Invent 2018
AWS and Symantec: Cyber Defense at Scale (SEC311-S) - AWS re:Invent 2018AWS and Symantec: Cyber Defense at Scale (SEC311-S) - AWS re:Invent 2018
AWS and Symantec: Cyber Defense at Scale (SEC311-S) - AWS re:Invent 2018
 
Drive Customer Value with Data-Driven Decisions (GPSBUS206) - AWS re:Invent 2018
Drive Customer Value with Data-Driven Decisions (GPSBUS206) - AWS re:Invent 2018Drive Customer Value with Data-Driven Decisions (GPSBUS206) - AWS re:Invent 2018
Drive Customer Value with Data-Driven Decisions (GPSBUS206) - AWS re:Invent 2018
 
[REPEAT 1] Confidently Execute Your Cloud Audit: Expert Advice (SEC205-R1) - ...
[REPEAT 1] Confidently Execute Your Cloud Audit: Expert Advice (SEC205-R1) - ...[REPEAT 1] Confidently Execute Your Cloud Audit: Expert Advice (SEC205-R1) - ...
[REPEAT 1] Confidently Execute Your Cloud Audit: Expert Advice (SEC205-R1) - ...
 
DevOps Concepts for Data Science (DEV347-R2) - AWS re:Invent 2018
DevOps Concepts for Data Science (DEV347-R2) - AWS re:Invent 2018DevOps Concepts for Data Science (DEV347-R2) - AWS re:Invent 2018
DevOps Concepts for Data Science (DEV347-R2) - AWS re:Invent 2018
 
Vonage & Aspect: Transform Real-Time Communications & Customer Engagement (TL...
Vonage & Aspect: Transform Real-Time Communications & Customer Engagement (TL...Vonage & Aspect: Transform Real-Time Communications & Customer Engagement (TL...
Vonage & Aspect: Transform Real-Time Communications & Customer Engagement (TL...
 
Best Practices for Securing an Amazon VPC (NET318) - AWS re:Invent 2018
Best Practices for Securing an Amazon VPC (NET318) - AWS re:Invent 2018Best Practices for Securing an Amazon VPC (NET318) - AWS re:Invent 2018
Best Practices for Securing an Amazon VPC (NET318) - AWS re:Invent 2018
 
Build Deep Learning Applications Using Apache MXNet - Featuring Chick-fil-A (...
Build Deep Learning Applications Using Apache MXNet - Featuring Chick-fil-A (...Build Deep Learning Applications Using Apache MXNet - Featuring Chick-fil-A (...
Build Deep Learning Applications Using Apache MXNet - Featuring Chick-fil-A (...
 
Hollywood's Cloud-Based Content Lakes: Modernized Media Archives (MAE203) - A...
Hollywood's Cloud-Based Content Lakes: Modernized Media Archives (MAE203) - A...Hollywood's Cloud-Based Content Lakes: Modernized Media Archives (MAE203) - A...
Hollywood's Cloud-Based Content Lakes: Modernized Media Archives (MAE203) - A...
 
Deep Dive on Amazon Rekognition, ft. Tinder & News UK (AIM307-R) - AWS re:Inv...
Deep Dive on Amazon Rekognition, ft. Tinder & News UK (AIM307-R) - AWS re:Inv...Deep Dive on Amazon Rekognition, ft. Tinder & News UK (AIM307-R) - AWS re:Inv...
Deep Dive on Amazon Rekognition, ft. Tinder & News UK (AIM307-R) - AWS re:Inv...
 
Serverless:It All Started in Vegas (DVC306) - AWS re:Invent 2018
Serverless:It All Started in Vegas (DVC306) - AWS re:Invent 2018Serverless:It All Started in Vegas (DVC306) - AWS re:Invent 2018
Serverless:It All Started in Vegas (DVC306) - AWS re:Invent 2018
 
Proven Methodologies for Accelerating Your Cloud Journey (ENT308-S) - AWS re:...
Proven Methodologies for Accelerating Your Cloud Journey (ENT308-S) - AWS re:...Proven Methodologies for Accelerating Your Cloud Journey (ENT308-S) - AWS re:...
Proven Methodologies for Accelerating Your Cloud Journey (ENT308-S) - AWS re:...
 
M&E Leadership Session: The State of the Industry, What's New from AWS for M&...
M&E Leadership Session: The State of the Industry, What's New from AWS for M&...M&E Leadership Session: The State of the Industry, What's New from AWS for M&...
M&E Leadership Session: The State of the Industry, What's New from AWS for M&...
 
Rapid Innovation: The Business Case for Modern Application Development (SRV20...
Rapid Innovation: The Business Case for Modern Application Development (SRV20...Rapid Innovation: The Business Case for Modern Application Development (SRV20...
Rapid Innovation: The Business Case for Modern Application Development (SRV20...
 
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
 

Similar to From Monolith to Microservices (And All the Bumps along the Way) (CON360-R1) - AWS re:Invent 2018

Moving to DevOps the Amazon Way (DEV210-R1) - AWS re:Invent 2018
Moving to DevOps the Amazon Way (DEV210-R1) - AWS re:Invent 2018Moving to DevOps the Amazon Way (DEV210-R1) - AWS re:Invent 2018
Moving to DevOps the Amazon Way (DEV210-R1) - AWS re:Invent 2018Amazon Web Services
 
Lessons Learned from a Large-Scale Legacy Migration with Sysco (STG311) - AWS...
Lessons Learned from a Large-Scale Legacy Migration with Sysco (STG311) - AWS...Lessons Learned from a Large-Scale Legacy Migration with Sysco (STG311) - AWS...
Lessons Learned from a Large-Scale Legacy Migration with Sysco (STG311) - AWS...Amazon Web Services
 
Remove Undifferentiated Heavy Lifting from CI/CD Toolsets with Corteva Agrisc...
Remove Undifferentiated Heavy Lifting from CI/CD Toolsets with Corteva Agrisc...Remove Undifferentiated Heavy Lifting from CI/CD Toolsets with Corteva Agrisc...
Remove Undifferentiated Heavy Lifting from CI/CD Toolsets with Corteva Agrisc...Amazon Web Services
 
AWS 기반 Microservice 운영을 위한 데브옵스 사례와 Spinnaker 소개::김영욱::AWS Summit Seoul 2018
AWS 기반 Microservice 운영을 위한 데브옵스 사례와 Spinnaker 소개::김영욱::AWS Summit Seoul 2018AWS 기반 Microservice 운영을 위한 데브옵스 사례와 Spinnaker 소개::김영욱::AWS Summit Seoul 2018
AWS 기반 Microservice 운영을 위한 데브옵스 사례와 Spinnaker 소개::김영욱::AWS Summit Seoul 2018Amazon Web Services Korea
 
Getting Started with Containers in the Cloud: AWS Developer Workshop at Web S...
Getting Started with Containers in the Cloud: AWS Developer Workshop at Web S...Getting Started with Containers in the Cloud: AWS Developer Workshop at Web S...
Getting Started with Containers in the Cloud: AWS Developer Workshop at Web S...Amazon Web Services
 
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...Amazon Web Services
 
Modernizing Media Supply Chains with AWS Serverless (API301) - AWS re:Invent ...
Modernizing Media Supply Chains with AWS Serverless (API301) - AWS re:Invent ...Modernizing Media Supply Chains with AWS Serverless (API301) - AWS re:Invent ...
Modernizing Media Supply Chains with AWS Serverless (API301) - AWS re:Invent ...Amazon Web Services
 
Orchestrating containers on AWS | AWS Summit Tel Aviv 2019
Orchestrating containers on AWS  | AWS Summit Tel Aviv 2019Orchestrating containers on AWS  | AWS Summit Tel Aviv 2019
Orchestrating containers on AWS | AWS Summit Tel Aviv 2019AWS Summits
 
Orchestrating containers on AWS | AWS Summit Tel Aviv 2019
Orchestrating containers on AWS  | AWS Summit Tel Aviv 2019Orchestrating containers on AWS  | AWS Summit Tel Aviv 2019
Orchestrating containers on AWS | AWS Summit Tel Aviv 2019Amazon Web Services
 
More Containers Less Operations
More Containers Less OperationsMore Containers Less Operations
More Containers Less OperationsDonnie Prakoso
 
From Code to a Running Container | AWS Floor28
From Code to a Running Container | AWS Floor28From Code to a Running Container | AWS Floor28
From Code to a Running Container | AWS Floor28Amazon Web Services
 
Serverless and DevOps
Serverless and DevOpsServerless and DevOps
Serverless and DevOpsChris Munns
 
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...Amazon Web Services
 
Come scalare da zero ai tuoi primi 10 milioni di utenti.pdf
Come scalare da zero ai tuoi primi 10 milioni di utenti.pdfCome scalare da zero ai tuoi primi 10 milioni di utenti.pdf
Come scalare da zero ai tuoi primi 10 milioni di utenti.pdfAmazon Web Services
 
Deploying Microservices using AWS Fargate (CON315-R1) - AWS re:Invent 2018
Deploying Microservices using AWS Fargate (CON315-R1) - AWS re:Invent 2018Deploying Microservices using AWS Fargate (CON315-R1) - AWS re:Invent 2018
Deploying Microservices using AWS Fargate (CON315-R1) - AWS re:Invent 2018Amazon Web Services
 
Driving DevOps Transformation in Enterprises (DEV320) - AWS re:Invent 2018
Driving DevOps Transformation in Enterprises (DEV320) - AWS re:Invent 2018Driving DevOps Transformation in Enterprises (DEV320) - AWS re:Invent 2018
Driving DevOps Transformation in Enterprises (DEV320) - AWS re:Invent 2018Amazon Web Services
 

Similar to From Monolith to Microservices (And All the Bumps along the Way) (CON360-R1) - AWS re:Invent 2018 (20)

Moving to DevOps the Amazon Way (DEV210-R1) - AWS re:Invent 2018
Moving to DevOps the Amazon Way (DEV210-R1) - AWS re:Invent 2018Moving to DevOps the Amazon Way (DEV210-R1) - AWS re:Invent 2018
Moving to DevOps the Amazon Way (DEV210-R1) - AWS re:Invent 2018
 
Lessons Learned from a Large-Scale Legacy Migration with Sysco (STG311) - AWS...
Lessons Learned from a Large-Scale Legacy Migration with Sysco (STG311) - AWS...Lessons Learned from a Large-Scale Legacy Migration with Sysco (STG311) - AWS...
Lessons Learned from a Large-Scale Legacy Migration with Sysco (STG311) - AWS...
 
Containers for Startups
Containers for StartupsContainers for Startups
Containers for Startups
 
Remove Undifferentiated Heavy Lifting from CI/CD Toolsets with Corteva Agrisc...
Remove Undifferentiated Heavy Lifting from CI/CD Toolsets with Corteva Agrisc...Remove Undifferentiated Heavy Lifting from CI/CD Toolsets with Corteva Agrisc...
Remove Undifferentiated Heavy Lifting from CI/CD Toolsets with Corteva Agrisc...
 
AWS 기반 Microservice 운영을 위한 데브옵스 사례와 Spinnaker 소개::김영욱::AWS Summit Seoul 2018
AWS 기반 Microservice 운영을 위한 데브옵스 사례와 Spinnaker 소개::김영욱::AWS Summit Seoul 2018AWS 기반 Microservice 운영을 위한 데브옵스 사례와 Spinnaker 소개::김영욱::AWS Summit Seoul 2018
AWS 기반 Microservice 운영을 위한 데브옵스 사례와 Spinnaker 소개::김영욱::AWS Summit Seoul 2018
 
Getting Started with Containers in the Cloud: AWS Developer Workshop at Web S...
Getting Started with Containers in the Cloud: AWS Developer Workshop at Web S...Getting Started with Containers in the Cloud: AWS Developer Workshop at Web S...
Getting Started with Containers in the Cloud: AWS Developer Workshop at Web S...
 
Cheat your Way into the Cloud
Cheat your Way into the CloudCheat your Way into the Cloud
Cheat your Way into the Cloud
 
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
 
Modernizing Media Supply Chains with AWS Serverless (API301) - AWS re:Invent ...
Modernizing Media Supply Chains with AWS Serverless (API301) - AWS re:Invent ...Modernizing Media Supply Chains with AWS Serverless (API301) - AWS re:Invent ...
Modernizing Media Supply Chains with AWS Serverless (API301) - AWS re:Invent ...
 
Orchestrating containers on AWS | AWS Summit Tel Aviv 2019
Orchestrating containers on AWS  | AWS Summit Tel Aviv 2019Orchestrating containers on AWS  | AWS Summit Tel Aviv 2019
Orchestrating containers on AWS | AWS Summit Tel Aviv 2019
 
Orchestrating containers on AWS | AWS Summit Tel Aviv 2019
Orchestrating containers on AWS  | AWS Summit Tel Aviv 2019Orchestrating containers on AWS  | AWS Summit Tel Aviv 2019
Orchestrating containers on AWS | AWS Summit Tel Aviv 2019
 
More Containers Less Operations
More Containers Less OperationsMore Containers Less Operations
More Containers Less Operations
 
From Code to a Running Container | AWS Floor28
From Code to a Running Container | AWS Floor28From Code to a Running Container | AWS Floor28
From Code to a Running Container | AWS Floor28
 
Serverless and DevOps
Serverless and DevOpsServerless and DevOps
Serverless and DevOps
 
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
 
Come scalare da zero ai tuoi primi 10 milioni di utenti.pdf
Come scalare da zero ai tuoi primi 10 milioni di utenti.pdfCome scalare da zero ai tuoi primi 10 milioni di utenti.pdf
Come scalare da zero ai tuoi primi 10 milioni di utenti.pdf
 
Deploying Microservices using AWS Fargate (CON315-R1) - AWS re:Invent 2018
Deploying Microservices using AWS Fargate (CON315-R1) - AWS re:Invent 2018Deploying Microservices using AWS Fargate (CON315-R1) - AWS re:Invent 2018
Deploying Microservices using AWS Fargate (CON315-R1) - AWS re:Invent 2018
 
Driving DevOps Transformation in Enterprises (DEV320) - AWS re:Invent 2018
Driving DevOps Transformation in Enterprises (DEV320) - AWS re:Invent 2018Driving DevOps Transformation in Enterprises (DEV320) - AWS re:Invent 2018
Driving DevOps Transformation in Enterprises (DEV320) - AWS re:Invent 2018
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 

More from Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

More from Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

From Monolith to Microservices (And All the Bumps along the Way) (CON360-R1) - AWS re:Invent 2018

  • 1.
  • 2. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. From Monolith to Microservices (And All the Bumps along the Way) Max Blaze Staff Operations Engineer Duolingo C O N 3 6 0 - R Brent Langston Sr. Developer Advocate Amazon Web Services
  • 3. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How do I prepare?
  • 4. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. People WorkflowTechnical
  • 5. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What are some hurdles to prepare for? People
  • 6. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What are some hurdles to prepare for? Old ways in contrast to new ways People
  • 7. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What are some hurdles to prepare for? Old ways in contrast to new ways “How can I develop locally?” People
  • 8. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What are some hurdles to prepare for? Old ways in contrast to new ways “How can I develop locally?” “Deployments are painful. Will that get worse?” People
  • 9. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What are some hurdles to prepare for? Old ways in contrast to new ways “How can I develop locally?” “Deployments are painful. Will that get worse?” “My config management already handles everything perfectly!” People
  • 10. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What are some hurdles to prepare for? Old ways in contrast to new ways “How can I develop locally?” “Deployments are painful. Will that get worse?” “My config management already handles everything perfectly!” “What do you mean I have to be on call?” People
  • 11. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How can AWS help? People
  • 12. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How does Docker help with the migration? Workflow
  • 13. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How does Docker help with the migration? • Packaging It becomes the same, no matter the language. Docker multi-stage builds—tests in one container, copies the final artifact to a newer, smaller container. Workflow
  • 14. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How does Docker help with the migration? • Packaging It becomes the same, no matter the language. Docker multi-stage builds—tests in one container, copies the final artifact to a newer, smaller container. • Distribution It becomes the same, no matter the language. Docker pulls the desired image tag, and Docker runs the container. Language doesn’t matter. Workflow
  • 15. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How does Docker help with the migration? • Packaging It becomes the same, no matter the language. Docker multi-stage builds—tests in one container, copies the final artifact to a newer, smaller container. • Distribution It becomes the same, no matter the language. Docker pulls the desired image tag, and Docker runs the container. Language doesn’t matter. • Scaling up and down becomes fast Docker images start quickly, so we can add them and remove them in response to current demand. Workflow
  • 16. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How does Docker help with the migration? • Packaging It becomes the same, no matter the language. Docker multi-stage builds—tests in one container, copies the final artifact to a newer smaller container. • Distribution It becomes the same, no matter the language. Docker pulls the desired image tag, and Docker runs the container. Language doesn’t matter. • Scaling up and down becomes fast. Docker images start quickly, so we can add them and remove them in response to current demand. • Experimenting becomes easier, so it’s encouraged. Since packaging and distribution are trivially easy, we can experiment with code changes, and roll them back, or iterate on them with ease, typically without any additional demand for resources. Workflow Workflow
  • 17. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How can AWS help? Workflow Workflow
  • 18. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? Technical
  • 19. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? Is the process running? Replaces monit, supervisord, systemd Technical
  • 20. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? Is the process healthy? Include load balancer healthchecks Include Docker healthcheck Only healthcheck one layer Technical
  • 21. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? How do I get traffic to my processes? Integration with ALB/NLB Technical
  • 22. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? How does one service find another? Service discovery Technical
  • 23. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? When should I scale up (or down)? Metrics monitoring TPS calculation Auto scaling Technical
  • 24. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? How do I deploy new code? Docker replaces Fabricator/Chef/Ansible/and the like No more copying files, moving symlinks, restarting processes No custom deploy logic to maintain tag with git-sha, deploy new tag Blue green deploys for most things Some processes should be red/black Technical
  • 25. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? How do I add, replace, or remove instances? Instances are now simply resources, nothing special No “special snowflakes” Configuration is immutable Replace, don’t reconfigure quickly add or drain/replace/remove instances Technical
  • 26. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What problems does orchestration solve? How do I save money? Replace “special snowflakes” with generic instances that are resource pools Docker makes it easier to co-locate services Instances can run at higher utilization Fewer instances are necessary Can use instance store for disk space, rather than Amazon EBS Amazon ECS integrates with spot fleet for even cheaper instances Technical
  • 27. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How can AWS help? Technical
  • 28. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Introducing: Max Blaze Staff Operations Engineer Duolingo C O N 3 6 0 - R
  • 29. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 30. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Free and accessible language education for all
  • 31. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. The most downloaded education app in the world
  • 32. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. 30+ languages/80+ courses
  • 33. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 34. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. 300M+ users worldwide
  • 35. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. 150 employees
  • 36. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Duolingo growth
  • 37. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. A brief history Launch Config management AWS Auto Scaling First microservice Centralized dashboards + logging Infrastructure as code First microservice on Amazon ECS
  • 38. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Why move to microservices? Scalability Cost savings Velocity ReliabilityFlexibility
  • 39. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How do you decide what to carve out of your monolith first? • Start with a small, but impactful feature • Move up in size, complexity, and risk • Consider dependencies
  • 40. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. 0.99 Monolith System availability
  • 41. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Chained microservices 0.99 * 0.99 * 0.99 = 0.97 0.990.990.99
  • 42. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Independent microservices 1 - (1 - 0.99)3 = 0.999999 0.990.990.99
  • 43. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Why use Docker for microservices? • Standardizes the build process and encapsulates dependencies • Local development environment similar to production • Quick deployments and rollbacks • Flexible resource allocation
  • 44. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Simplifying local development setup (old way) 1. Clone this repository. 2. Set up and activate a virtualenv and install requirements using pip install -r requirements.txt. 3. Download and install Postgres: brew install postgresql 4. Run Postgres locally: postgres -D /usr/local/var/postgres 5. Download pgAdmin3 (not totally necessary, but will make life easier). 6. Using pgAdmin3, create a new login role under your local server with name "admin" and password "somepassword". 7. Create a DB called “db". 8. Run the migration script in the repo using python manage.py db upgrade. 9. Check that your DB is now populated with tables. 10. Set up and run memcached: brew install memcached 11. Set up and run redis: brew install redis-server 12. Set up and run elasticsearch: brew install elasticsearch 13. Finally, try to run the server using python application.py. You can test if it’s working by going here (you should see user info) and here (you should see {'data': []}).
  • 45. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Simplifying local development setup (new way) $ docker-compose build $ docker-compose up
  • 46. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Why use Docker with Amazon ECS? Task auto scaling Manageability Amazon CloudWatch metrics Dynamic ALB targetsTask-level AWS IAM
  • 47. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Microservice abstractions at Duolingo Web service (internal or external) Worker service (daemon or cron) Monitoring Amazon Route53 ALB Amazon ECS tasks Amazon SQS Amazon ECS task Event Data stores Amazon RDS Amazon DynamoDB Redis/Memcached AWS KMS ELK stack CloudWatch Grafana PagerDuty
  • 48. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Microservice definition in Terraform module “duolingo-api" { source = “repo/terraform//modules/ecs_web_service" environment = “prod" product = “duolingo" service = “api" owner = “Max Blaze" min_count = 2 max_count = 4 cpu = 512 memory = 256 ecs_cluster = "prod" internal = "true" container_port = 5000 version = "${var.version}" } Billing tags Resources Auto scaling
  • 49. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Aurora database cluster definition in Terraform module “duolingo-api—db“ { source = “repo/terraform//modules/ecs_web_service" product = “duolingo” service = “api” subservice = “db" owner = “Max Blaze” cluster_identifier = “duolingo-api-db-cluster" identifier = “duolingo-api" engine = "aurora-postgresql" name = "duolingo" password = "${data.aws_kms_secret.duolingo_api_db.duolingo_api_db}" instance_class = "db.r4.large" num_cluster_instances = 2 } Billing tags Instance type DB engine
  • 50. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous integration and deployment Developer GitHub Jenkins Terraform Deployment Terraform state Amazon S3 bucket Plan/apply with version string Amazon ECS Amazon ECR repo Dockerfile build Docker image push Docker image pull
  • 51. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Load balancing • ALBs and CLBs operate at different network layers • ALBs are more strict when handling malformed requests • ALBs default to HTTP/2 • Headers are always passed as lowercase • There are differences in Amazon CloudWatch metrics ALB ≠ CLB
  • 52. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Task-level AWS IAM role permissions • Apply permissions at the service level • Do not share permissions across microservices • Needs to be supported by the AWS client library
  • 53. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Standardizing microservices • Develop a common naming scheme for repos and services • Autogenerate as much of the initial service as possible • Move core functionality to shared base libraries • Provide standard alarms and dashboards • Periodically review microservices for consistency and quality
  • 54. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Monitoring microservices Web service dashboard • Local time and UTC • Healthy, unhealthy, and running tasks • Latency average and percentiles • Number of requests • CPU and memory utilization (min/avg/max) • Service errors by AZ • ALB errors by AZ
  • 55. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Monitoring microservices Worker service dashboard • Local time and UTC • Running tasks • CPU and memory utilization (min/avg/max) • Visible messages • Deleted messages
  • 56. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Monitoring microservices PagerDuty integration • Schedules and rotations are defined in Terraform • Emergency alarms page (high latency) • Warning alarms go to e-mail (low memory) • Include links to playbooks • All pages are also visible in Slack
  • 57. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Grading microservices Architecture Documentation Processes Tests
  • 58. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Grading microservices
  • 59. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. • Cluster • Instance type • Pricing options • Auto scale • Add/remove AZs Web Worker API • Task • Resource allocation • Auto scale Cost reduction options
  • 60. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Cluster starting point c3.2xlarge Reserved instances On-demand
  • 61. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. High-CPU instance generations Speed $/hour Disk c3.large - 0.105 SSD c4.large +20% of c3 0.100 None (Amazon EBS- only) c5d.large +25% of c4 0.096 NVMe c5 is 50% faster than c3!
  • 62. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Moving to a new Amazon EC2 generation Latest instances are generally faster and cheaper but… • “cpu” units in Amazon ECS will not be equivalent • Auto scaling may not work properly between generations (1 vCPU core = 1024 units) c5.large cpu = 1024 c3.large cpu = 1024 c4.large cpu = 1024 > >
  • 63. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Fixed number of instances c5d.2xlarge Reserved instances On-demand c5d.large…c5d.18xlarge m5d.large...m5d.24xlarge Reserved instances On-demand Spot Auto scaling
  • 64. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Fixed number of instances c5d.2xlarge Reserved instances On-demand c5d.large…c5d.18xlarge m5d.large...m5d.24xlarge Reserved instances On-demand Spot
  • 65. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Spotinst cluster features • Mixes families + sizes • Uses RIs before spot • 15 minute spot notice • Fits capacity to Amazon ECS tasks • AZ capacity heat map
  • 66. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Spotinst cluster features • Drains Amazon ECS tasks • Cluster “headroom” • Spreads capacity across AZs • Bills on % of savings • Terraform support
  • 67. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Auto scaling with Spotinst
  • 68. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What about per-microservice costs? • Audit CPU/memory allocations for each service • Update auto scaling and/or CPU allocations as needed Goals 60% CPU 60–80% Memory
  • 69. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Adjusting allocated CPU for scaling allocatedCPU * currentUtilization = actualCPU actualCPU/desiredUtilization = Units to set Example: Current utilization: 40% Desired utilization: 60% 1024 * 40% = 409.6 409.6/60% = 682.67 Set Amazon ECS “cpu” allocation to 683 (1 vCPU core = 1024 units)
  • 70. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Adjusting allocated memory • Track memory usage between deployments • Constantly increasing memory usage points to memory leaks • Set containers to restart if memory exceeds 100%
  • 71. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. API costs ListAllMyBuckets + GetObject > 50% of Amazon S3 cost!
  • 72. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Cost savings May July August September October Amazon EC2 compute costs > 60% reduction from May to October > 60% reduction in compute costs > 30% reduction in costs per monthly active user (MAU) > 25% reduction total AWS bill
  • 73. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Key results • Scalability • Manage ~100 microservices • Velocity • Teams deploy to their own services • Flexibility • Officially support three different programming languages • Reliability • 99.99% availability achieved last quarter • Cost • 60% reduction in compute costs
  • 74. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 75. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Resources • Books • Building Microservices: Designing Fine-Grained Systems (Sam Newman) • Microservices in Production (Susan J. Fowler) • References • ec2instances.info • github.com/open-guides/og-aws • Tools and services • ansible.com • docker.com • elastic.io • github.com • grafana.com • jenkins.io • pagerduty.com • spotinst.com • terraform.io
  • 76. Thank you! © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 77. Please complete the session survey in the mobile app. ! © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.