SlideShare a Scribd company logo
ON-DEMAND IMAGE
RESIZING
FROM PART OF THE MONOLITH
TO CONTAINERIZED
MICROSERVICE
Jonathan Lee
Lead Software Engineer, CNET
@ CBS Interactive
About CNET
● Dedicated to tech
product reviews, news,
price comparisons, free
software downloads,
videos, how-tos, and
podcasts.
● Established in 1994,
created by Halsey Minor
and Shelby Bonnie
● CNET Networks was
acquired by CBS
Interactive in 2008.
Monthly Users ~ 68 M
Monthly Unique Users ~ 45 M
Monthly Image Requests ~ 2.1 B
Agenda
1. Background
2. Testing
3. Monitoring
4. Deployment
5. Swarm mode
6. Roadmap
Agenda
1. Background
2. Testing
3. Monitoring
4. Deployment
5. Swarm mode
6. Roadmap
Legacy Architecture
Load Balancer
Nginx
Image
Resizer
Image
Resizer
Nginx
Server 2
NFS File system
Server 1
Image
Resizer
Nginx
Server 3
CDN
Legacy Architecture
Load Balancer
Nginx
Image
Resizer
Image
Resizer
Nginx
Server 2
NFS File system
Server 1
Image
Resizer
Nginx
Server 3
Legacy Architecture
Nginx
Image
Resizer
Image
Resizer
Nginx
Server 2Server 1
Image
Resizer
Nginx
Server 3
Legacy Architecture
Nginx
Image
Resizer
Server 1
Nginx
Image
Resizer
Server 2
Nginx
Image
Resizer
Server 3
Legacy Image Resizer
● Required a large
number of servers to run
● Large spikes in new
resize requests caused
micro-outages
● New effects for
redesigns (i.e. blur)
● Deploying new effects
required orchestration
● Crop and Resizing
● Various built-in filters
● Image optimization
● Detectors
● Image source loaders
● Community dockerized
version
Thumbor https://store.docker.com/community/images/apsl/thumbor
Agenda
1. Background
2. Testing
3. Monitoring
4. Deployment
5. Swarm mode
6. Roadmap
● Current Image
Resizer
○ Upgrade to
Imagemagick
Testing/Investigation
● Thumbor
single-process
○ Optimizers
on/off
○ Smart-crop
● Thumbor
multi-process
○ Optimizers
on/off
○ Smart-crop
Testing Scenarios:
Load Testing Choices:
• Siege
• AB
• GoBench
• Gatling.io
Decision:
Siege,
based on previous experience and simplicity
Testing/Investigation
Testing/Investigation
Testing/Investigation
Concurrent
Users
Memory CPU Load Requests Hits/s
10 4.8G 92 178 121973 7
20 N/A N/A N/A N/A N/A
30 N/A N/A N/A N/A N/A
... ... ... ... ... ...
10 3.9G 10.3 0.9 122670 21
20 2.4G 12.5 0.9 245340 23
30 2.7G 12.5 0.9 368010 23
LegacyThumbor
Testing/Investigation
Concurrent
Users
Memory CPU Load Requests Hits/s
10 4.8G 92 178 121973 7
20 N/A N/A N/A N/A N/A
30 N/A N/A N/A N/A N/A
... ... ... ... ... ...
10 3.9G 10.3 0.9 122670 21
20 2.4G 12.5 0.9 245340 23
30 2.7G 12.5 0.9 368010 23
LegacyThumbor
Testing/Investigation
Concurrent
Users
Memory CPU Load Requests Hits/s
10 4.8G 92 178 121973 7
20 N/A N/A N/A N/A N/A
30 N/A N/A N/A N/A N/A
... ... ... ... ... ...
10 2.0G 10.3 0.9 122670 21
20 2.4G 12.5 0.9 245340 23
30 2.7G 12.5 0.9 368010 23
LegacyThumbor
Testing/Investigation
Concurrent
Users
Memory CPU Load Requests Hits/s
10 4.8G 92 178 121973 7
20 N/A N/A N/A N/A N/A
30 N/A N/A N/A N/A N/A
... ... ... ... ... ...
10 3.9G 10.3 0.9 122670 21
20 2.4G 12.5 0.9 245340 23
30 2.7G 12.5 0.9 368010 23
LegacyThumbor
Testing/Investigation
Concurrent
Users
Memory CPU Load Requests Hits/s
10 4.8G 92 178 121973 7
20 N/A N/A N/A N/A N/A
30 N/A N/A N/A N/A N/A
... ... ... ... ... ...
10 3.9G 10.3 0.9 122670 21
20 2.4G 12.5 0.9 245340 23
30 2.7G 12.5 0.9 368010 23
LegacyThumbor
Testing/Investigation
Concurrent
Users
Memory CPU Load Requests Hits/s
10 4.8G 92 178 121973 7
20 N/A N/A N/A N/A N/A
30 N/A N/A N/A N/A N/A
... ... ... ... ... ...
10 3.9G 10.3 0.9 122670 21
20 2.4G 12.5 0.9 245340 23
30 2.7G 12.5 0.9 368010 23
LegacyThumbor
Agenda
1. Background
2. Testing
3. Monitoring
4. Deployment
5. Swarm mode
6. Roadmap
● Real-time error tracking
● Support for python
tornado
● Out of the box support
with apsl/thumbor
Sentry
● Time-series DB
● Based on Google’s
Borgmon
● Pull model
● Service Federation
Prometheus
● Graphite is a time
series DB
● Push model
● Statsd is a data
statistics aggregator
● Statsd pushes
aggregate data to
Graphite for long term
storage
Graphite/Statsd
● Metric analytics &
visualization suite
● Multiple data sources
● Alerting
● Custom dashboards
Grafana
The ELK Stack is a collection of
three open-source products from
Elastic.
● Elasticsearch is a NoSQL
database that is based on the
Lucene search engine.
● Logstash accepts and parses
messages and sends them to
Elasticsearch for storage.
● Kibana is a visualization layer
that works on top of
Elasticsearch.
ELK
Agenda
1. Background
2. Testing
3. Monitoring
4. Deployment
5. Swarm mode
6. Roadmap
Docker 1.10.x and 1.11.x
Server 1 Server 2 Server 3
Env fileEnv file Env file
Docker 1.10.x and 1.11.x
Thumbor
Server 1 Server 2 Server 3
Env file
Thumbor
Env file
Thumbor
Env file
Docker 1.10.x and 1.11.x
Thumbor
Server 1 Server 2 Server 3
Env file
Thumbor
Env file
Thumbor
Env file
Docker 1.10.x and 1.11.x
Thumbor
Nginx
Server 1 Server 2 Server 3
Env file
Thumbor
Nginx
Env file
Thumbor
Nginx
Env file
Docker 1.10.x and 1.11.x
Thumbor
Nginx
Server 1 Server 2 Server 3
Env file
Thumbor
Nginx
Env file
Thumbor
Nginx
Env file
Docker 1.10.x and 1.11.x
Thumbor
Nginx
Env
file
Thumbor
Nginx
Env
file
Thumbor
Nginx
Env
file
Load Balancer
NFS File system
CDN
● Rolling deployment strategy
● Path based targeting
○ /news/*, /products/*,
/pictures/*, etc.
● Monitor system performance
and deploy additional servers if
needed
Push It Live!
Previous IMG Tier - 22 servers in rotation
• 96% avg memory usage
• 5.5 avg nginx active connections
• 1.68 nginx requests a second
• 1.88 avg active processes
• 2.27 requests a second
• 280 ms avg resize response time
Thumbor Tier - 3 servers in rotation
• 12.5% avg memory usage
• 13 avg nginx requests a second
• 0.384 avg requests per second
• 255 ms avg resize response time
*Statistics are per box
Results
Agenda
1. Background
2. Testing
3. Monitoring
4. Deployment
5. Swarm mode
6. Roadmap
Docker 1.12.x, 1.13.x, and 17.03
Server 1 Server 2 Server 3
Manager
~ docker swarm init
Swarm initialized: current node (o2lqnophten3ybufd996zxc6m) is now a
manager
To add a worker to this swarm, run the following command:
docker swarm join 
--token
SWMTKN-1-1kw6ht8rie6aeuokaeym2wc2yazb2vqxi6g92rog55o7sok2t8-0lxneopk6
7mto3o6ltuavckb8 
192.168.65.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and
follow the instructions
Docker Swarm Mode
~ docker swarm init
Swarm initialized: current node (o2lqnophten3ybufd996zxc6m) is now a
manager.
To add a worker to this swarm, run the following command:
docker swarm join 
--token
SWMTKN-1-1kw6ht8rie6aeuokaeym2wc2yazb2vqxi6g92rog55o7sok2t8-0lxneopk6
7mto3o6ltuavckb8 
192.168.65.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and
follow the instructions.
Docker Swarm Mode
Docker 1.12.x, 1.13.x, and 17.03
Server 1 Server 2 Server 3
docker swarm join --token
SWMTKN-1-1kw6ht8rie6aeuokaeym2wc2yazb2vqxi6g92rog55o7sok2t8-0lxneopk67mto3
o6ltuavckb8 192.168.65.2:2377
Docker 1.12.x, 1.13.x, and 17.03
Server 1 Server 2 Server 3
docker service create --name thumbor --replicas 3 ... thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Server 1 Server 2 Server 3
ThumborThumbor
Thumbor service
docker service create --name nginx -p 8080:80 --replicas 2 ... nginx
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
ThumborThumbor
Nginx service
Thumbor service
docker service scale thumbor=5
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
docker service update --image <new-image> thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Docker 1.12.x, 1.13.x, and 17.03
Thumbor
Nginx Nginx
Server 1 Server 2 Server 3
Thumbor
Thumbor
Nginx service
Thumbor service
Thumbor
Thumbor
Agenda
1. Background
2. Testing
3. Monitoring
4. Deployment
5. Swarm mode
6. Roadmap
Finished:
● Webp
Upcoming:
● no_upscaling by default
● Gifv
● Smart Cropping
● Prometheus support for runtime metrics
Thumbor
Finished:
● Docker stack deploy
Upcoming:
● Auto Scaling containers
● Prometheus monitoring
● Secrets
● Volume plugins
Docker
Open Source, FTW!
statsd
Prometheus.io
Thank You!
@beenanner #thumborswarm

More Related Content

What's hot

Docker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBMDocker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBM
Docker, Inc.
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment
Arun prasath
 
Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...
Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...
Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...
Docker, Inc.
 
Docker for Developers - Part 1 by David Gageot
Docker for Developers - Part 1 by David GageotDocker for Developers - Part 1 by David Gageot
Docker for Developers - Part 1 by David Gageot
Docker, Inc.
 
Browser Testing with Docker - Craig Huber
Browser Testing with Docker - Craig HuberBrowser Testing with Docker - Craig Huber
Browser Testing with Docker - Craig Huber
Docker, Inc.
 
Docker Security: Are Your Containers Tightly Secured to the Ship?
Docker Security: Are Your Containers Tightly Secured to the Ship?Docker Security: Are Your Containers Tightly Secured to the Ship?
Docker Security: Are Your Containers Tightly Secured to the Ship?
Michael Boelen
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best Practices
Docker, Inc.
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on Kubernetes
Martin Etmajer
 
CI / CD / CS - Continuous Security in Kubernetes
CI / CD / CS - Continuous Security in KubernetesCI / CD / CS - Continuous Security in Kubernetes
CI / CD / CS - Continuous Security in Kubernetes
Sysdig
 
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16 What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
Docker, Inc.
 
LinuxKit Deep Dive
LinuxKit Deep DiveLinuxKit Deep Dive
LinuxKit Deep Dive
Docker, Inc.
 
DockerCon EU 2015: The Glue is the Hard Part: Making a Production-Ready PaaS
DockerCon EU 2015: The Glue is the Hard Part: Making a Production-Ready PaaSDockerCon EU 2015: The Glue is the Hard Part: Making a Production-Ready PaaS
DockerCon EU 2015: The Glue is the Hard Part: Making a Production-Ready PaaS
Docker, Inc.
 
TIAD 2016 : Migrating 100% of your production services to containers
TIAD 2016 : Migrating 100% of your production services to containersTIAD 2016 : Migrating 100% of your production services to containers
TIAD 2016 : Migrating 100% of your production services to containers
The Incredible Automation Day
 
Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 Presentation
Sreenivas Makam
 
Continuous Deployment with Jenkins on Kubernetes
Continuous Deployment with Jenkins on KubernetesContinuous Deployment with Jenkins on Kubernetes
Continuous Deployment with Jenkins on Kubernetes
Matt Baldwin
 
Using docker to develop NAS applications
Using docker to develop NAS applicationsUsing docker to develop NAS applications
Using docker to develop NAS applications
Terry Chen
 
Best Practices for Developing & Deploying Java Applications with Docker
Best Practices for Developing & Deploying Java Applications with DockerBest Practices for Developing & Deploying Java Applications with Docker
Best Practices for Developing & Deploying Java Applications with Docker
Eric Smalling
 
Cloning Running Servers with Docker and CRIU by Ross Boucher
Cloning Running Servers with Docker and CRIU by Ross BoucherCloning Running Servers with Docker and CRIU by Ross Boucher
Cloning Running Servers with Docker and CRIU by Ross Boucher
Docker, Inc.
 
Dockerizing Windows Server Applications by Ender Barillas and Taylor Brown
Dockerizing Windows Server Applications by Ender Barillas and Taylor BrownDockerizing Windows Server Applications by Ender Barillas and Taylor Brown
Dockerizing Windows Server Applications by Ender Barillas and Taylor Brown
Docker, Inc.
 
Dockercon 16 Wrap-up (Docker for Mac and Win, Docker 1.12, Swarm Mode, etc.)
Dockercon 16 Wrap-up (Docker for Mac and Win, Docker 1.12, Swarm Mode, etc.)Dockercon 16 Wrap-up (Docker for Mac and Win, Docker 1.12, Swarm Mode, etc.)
Dockercon 16 Wrap-up (Docker for Mac and Win, Docker 1.12, Swarm Mode, etc.)
Nils De Moor
 

What's hot (20)

Docker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBMDocker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBM
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment
 
Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...
Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...
Orchestration? You Don't Need Orchestration. What You Want Is Choreography by...
 
Docker for Developers - Part 1 by David Gageot
Docker for Developers - Part 1 by David GageotDocker for Developers - Part 1 by David Gageot
Docker for Developers - Part 1 by David Gageot
 
Browser Testing with Docker - Craig Huber
Browser Testing with Docker - Craig HuberBrowser Testing with Docker - Craig Huber
Browser Testing with Docker - Craig Huber
 
Docker Security: Are Your Containers Tightly Secured to the Ship?
Docker Security: Are Your Containers Tightly Secured to the Ship?Docker Security: Are Your Containers Tightly Secured to the Ship?
Docker Security: Are Your Containers Tightly Secured to the Ship?
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best Practices
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on Kubernetes
 
CI / CD / CS - Continuous Security in Kubernetes
CI / CD / CS - Continuous Security in KubernetesCI / CD / CS - Continuous Security in Kubernetes
CI / CD / CS - Continuous Security in Kubernetes
 
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16 What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
 
LinuxKit Deep Dive
LinuxKit Deep DiveLinuxKit Deep Dive
LinuxKit Deep Dive
 
DockerCon EU 2015: The Glue is the Hard Part: Making a Production-Ready PaaS
DockerCon EU 2015: The Glue is the Hard Part: Making a Production-Ready PaaSDockerCon EU 2015: The Glue is the Hard Part: Making a Production-Ready PaaS
DockerCon EU 2015: The Glue is the Hard Part: Making a Production-Ready PaaS
 
TIAD 2016 : Migrating 100% of your production services to containers
TIAD 2016 : Migrating 100% of your production services to containersTIAD 2016 : Migrating 100% of your production services to containers
TIAD 2016 : Migrating 100% of your production services to containers
 
Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 Presentation
 
Continuous Deployment with Jenkins on Kubernetes
Continuous Deployment with Jenkins on KubernetesContinuous Deployment with Jenkins on Kubernetes
Continuous Deployment with Jenkins on Kubernetes
 
Using docker to develop NAS applications
Using docker to develop NAS applicationsUsing docker to develop NAS applications
Using docker to develop NAS applications
 
Best Practices for Developing & Deploying Java Applications with Docker
Best Practices for Developing & Deploying Java Applications with DockerBest Practices for Developing & Deploying Java Applications with Docker
Best Practices for Developing & Deploying Java Applications with Docker
 
Cloning Running Servers with Docker and CRIU by Ross Boucher
Cloning Running Servers with Docker and CRIU by Ross BoucherCloning Running Servers with Docker and CRIU by Ross Boucher
Cloning Running Servers with Docker and CRIU by Ross Boucher
 
Dockerizing Windows Server Applications by Ender Barillas and Taylor Brown
Dockerizing Windows Server Applications by Ender Barillas and Taylor BrownDockerizing Windows Server Applications by Ender Barillas and Taylor Brown
Dockerizing Windows Server Applications by Ender Barillas and Taylor Brown
 
Dockercon 16 Wrap-up (Docker for Mac and Win, Docker 1.12, Swarm Mode, etc.)
Dockercon 16 Wrap-up (Docker for Mac and Win, Docker 1.12, Swarm Mode, etc.)Dockercon 16 Wrap-up (Docker for Mac and Win, Docker 1.12, Swarm Mode, etc.)
Dockercon 16 Wrap-up (Docker for Mac and Win, Docker 1.12, Swarm Mode, etc.)
 

Similar to On-Demand Image Resizing from Part of the monolith to Containerized Microservice - Jonathan Lee

On-Demand Image Resizing
On-Demand Image ResizingOn-Demand Image Resizing
On-Demand Image Resizing
Jonathan Lee
 
On-Demand Image Resizing Extended - External Meet-up
On-Demand Image Resizing Extended - External Meet-upOn-Demand Image Resizing Extended - External Meet-up
On-Demand Image Resizing Extended - External Meet-up
Jonathan Lee
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - Mediafly
Mediafly
 
Dockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and NovaDockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and Nova
clayton_oneill
 
Rolling upgrade OpenStack
Rolling upgrade OpenStackRolling upgrade OpenStack
Rolling upgrade OpenStack
Vietnam Open Infrastructure User Group
 
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Evgeny Antyshev
 
Faq websphere performance
Faq websphere performanceFaq websphere performance
Faq websphere performance
budakia
 
Shifter singularity - june 7, 2018 - bw symposium
Shifter  singularity - june 7, 2018 - bw symposiumShifter  singularity - june 7, 2018 - bw symposium
Shifter singularity - june 7, 2018 - bw symposium
inside-BigData.com
 
Complete-NGINX-Cookbook-2019.pdf
Complete-NGINX-Cookbook-2019.pdfComplete-NGINX-Cookbook-2019.pdf
Complete-NGINX-Cookbook-2019.pdf
TomaszWojciechowski22
 
Virtualization & Network Connectivity
Virtualization & Network Connectivity Virtualization & Network Connectivity
Virtualization & Network Connectivity
itplant
 
论文答辩
论文答辩论文答辩
论文答辩
wensheng wei
 
Kubernetes Docker Forensics & Incident Response.pdf
Kubernetes Docker Forensics & Incident Response.pdfKubernetes Docker Forensics & Incident Response.pdf
Kubernetes Docker Forensics & Incident Response.pdf
Christopher Doman
 
Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5
Keisuke Takahashi
 
Neutron CI Run on Docker
Neutron CI Run on DockerNeutron CI Run on Docker
Neutron CI Run on Docker
Hirofumi Ichihara
 
Check the version with fixes. Link in description
Check the version with fixes. Link in descriptionCheck the version with fixes. Link in description
Check the version with fixes. Link in description
Przemyslaw Koltermann
 
Understanding kube proxy in ipvs mode
Understanding kube proxy in ipvs modeUnderstanding kube proxy in ipvs mode
Understanding kube proxy in ipvs mode
Victor Morales
 
Network performance test plan_v0.3
Network performance test plan_v0.3Network performance test plan_v0.3
Network performance test plan_v0.3
David Pasek
 
SQL Server On SANs
SQL Server On SANsSQL Server On SANs
SQL Server On SANs
Quest Software
 
Continuous Security: From tins to containers - now what!
Continuous Security: From tins to containers - now what!Continuous Security: From tins to containers - now what!
Continuous Security: From tins to containers - now what!
Michael Man
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
Amazon Web Services
 

Similar to On-Demand Image Resizing from Part of the monolith to Containerized Microservice - Jonathan Lee (20)

On-Demand Image Resizing
On-Demand Image ResizingOn-Demand Image Resizing
On-Demand Image Resizing
 
On-Demand Image Resizing Extended - External Meet-up
On-Demand Image Resizing Extended - External Meet-upOn-Demand Image Resizing Extended - External Meet-up
On-Demand Image Resizing Extended - External Meet-up
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - Mediafly
 
Dockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and NovaDockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and Nova
 
Rolling upgrade OpenStack
Rolling upgrade OpenStackRolling upgrade OpenStack
Rolling upgrade OpenStack
 
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
 
Faq websphere performance
Faq websphere performanceFaq websphere performance
Faq websphere performance
 
Shifter singularity - june 7, 2018 - bw symposium
Shifter  singularity - june 7, 2018 - bw symposiumShifter  singularity - june 7, 2018 - bw symposium
Shifter singularity - june 7, 2018 - bw symposium
 
Complete-NGINX-Cookbook-2019.pdf
Complete-NGINX-Cookbook-2019.pdfComplete-NGINX-Cookbook-2019.pdf
Complete-NGINX-Cookbook-2019.pdf
 
Virtualization & Network Connectivity
Virtualization & Network Connectivity Virtualization & Network Connectivity
Virtualization & Network Connectivity
 
论文答辩
论文答辩论文答辩
论文答辩
 
Kubernetes Docker Forensics & Incident Response.pdf
Kubernetes Docker Forensics & Incident Response.pdfKubernetes Docker Forensics & Incident Response.pdf
Kubernetes Docker Forensics & Incident Response.pdf
 
Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5
 
Neutron CI Run on Docker
Neutron CI Run on DockerNeutron CI Run on Docker
Neutron CI Run on Docker
 
Check the version with fixes. Link in description
Check the version with fixes. Link in descriptionCheck the version with fixes. Link in description
Check the version with fixes. Link in description
 
Understanding kube proxy in ipvs mode
Understanding kube proxy in ipvs modeUnderstanding kube proxy in ipvs mode
Understanding kube proxy in ipvs mode
 
Network performance test plan_v0.3
Network performance test plan_v0.3Network performance test plan_v0.3
Network performance test plan_v0.3
 
SQL Server On SANs
SQL Server On SANsSQL Server On SANs
SQL Server On SANs
 
Continuous Security: From tins to containers - now what!
Continuous Security: From tins to containers - now what!Continuous Security: From tins to containers - now what!
Continuous Security: From tins to containers - now what!
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 

More from Docker, Inc.

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
Docker, Inc.
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
Docker, Inc.
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
Docker, Inc.
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
Docker, Inc.
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
Docker, Inc.
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Docker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
Docker, Inc.
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Docker, Inc.
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
Docker, Inc.
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
Docker, Inc.
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
Docker, Inc.
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
Docker, Inc.
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
Docker, Inc.
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
Docker, Inc.
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Docker, Inc.
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
Docker, Inc.
 

More from Docker, Inc. (20)

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
 

Recently uploaded

Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
maazsz111
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 

Recently uploaded (20)

Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 

On-Demand Image Resizing from Part of the monolith to Containerized Microservice - Jonathan Lee

  • 1. ON-DEMAND IMAGE RESIZING FROM PART OF THE MONOLITH TO CONTAINERIZED MICROSERVICE
  • 2. Jonathan Lee Lead Software Engineer, CNET @ CBS Interactive
  • 3. About CNET ● Dedicated to tech product reviews, news, price comparisons, free software downloads, videos, how-tos, and podcasts. ● Established in 1994, created by Halsey Minor and Shelby Bonnie ● CNET Networks was acquired by CBS Interactive in 2008. Monthly Users ~ 68 M Monthly Unique Users ~ 45 M Monthly Image Requests ~ 2.1 B
  • 4. Agenda 1. Background 2. Testing 3. Monitoring 4. Deployment 5. Swarm mode 6. Roadmap
  • 5. Agenda 1. Background 2. Testing 3. Monitoring 4. Deployment 5. Swarm mode 6. Roadmap
  • 6. Legacy Architecture Load Balancer Nginx Image Resizer Image Resizer Nginx Server 2 NFS File system Server 1 Image Resizer Nginx Server 3 CDN
  • 7. Legacy Architecture Load Balancer Nginx Image Resizer Image Resizer Nginx Server 2 NFS File system Server 1 Image Resizer Nginx Server 3
  • 10. Legacy Image Resizer ● Required a large number of servers to run ● Large spikes in new resize requests caused micro-outages ● New effects for redesigns (i.e. blur) ● Deploying new effects required orchestration
  • 11. ● Crop and Resizing ● Various built-in filters ● Image optimization ● Detectors ● Image source loaders ● Community dockerized version Thumbor https://store.docker.com/community/images/apsl/thumbor
  • 12. Agenda 1. Background 2. Testing 3. Monitoring 4. Deployment 5. Swarm mode 6. Roadmap
  • 13. ● Current Image Resizer ○ Upgrade to Imagemagick Testing/Investigation ● Thumbor single-process ○ Optimizers on/off ○ Smart-crop ● Thumbor multi-process ○ Optimizers on/off ○ Smart-crop Testing Scenarios:
  • 14. Load Testing Choices: • Siege • AB • GoBench • Gatling.io Decision: Siege, based on previous experience and simplicity Testing/Investigation
  • 16. Testing/Investigation Concurrent Users Memory CPU Load Requests Hits/s 10 4.8G 92 178 121973 7 20 N/A N/A N/A N/A N/A 30 N/A N/A N/A N/A N/A ... ... ... ... ... ... 10 3.9G 10.3 0.9 122670 21 20 2.4G 12.5 0.9 245340 23 30 2.7G 12.5 0.9 368010 23 LegacyThumbor
  • 17. Testing/Investigation Concurrent Users Memory CPU Load Requests Hits/s 10 4.8G 92 178 121973 7 20 N/A N/A N/A N/A N/A 30 N/A N/A N/A N/A N/A ... ... ... ... ... ... 10 3.9G 10.3 0.9 122670 21 20 2.4G 12.5 0.9 245340 23 30 2.7G 12.5 0.9 368010 23 LegacyThumbor
  • 18. Testing/Investigation Concurrent Users Memory CPU Load Requests Hits/s 10 4.8G 92 178 121973 7 20 N/A N/A N/A N/A N/A 30 N/A N/A N/A N/A N/A ... ... ... ... ... ... 10 2.0G 10.3 0.9 122670 21 20 2.4G 12.5 0.9 245340 23 30 2.7G 12.5 0.9 368010 23 LegacyThumbor
  • 19. Testing/Investigation Concurrent Users Memory CPU Load Requests Hits/s 10 4.8G 92 178 121973 7 20 N/A N/A N/A N/A N/A 30 N/A N/A N/A N/A N/A ... ... ... ... ... ... 10 3.9G 10.3 0.9 122670 21 20 2.4G 12.5 0.9 245340 23 30 2.7G 12.5 0.9 368010 23 LegacyThumbor
  • 20. Testing/Investigation Concurrent Users Memory CPU Load Requests Hits/s 10 4.8G 92 178 121973 7 20 N/A N/A N/A N/A N/A 30 N/A N/A N/A N/A N/A ... ... ... ... ... ... 10 3.9G 10.3 0.9 122670 21 20 2.4G 12.5 0.9 245340 23 30 2.7G 12.5 0.9 368010 23 LegacyThumbor
  • 21. Testing/Investigation Concurrent Users Memory CPU Load Requests Hits/s 10 4.8G 92 178 121973 7 20 N/A N/A N/A N/A N/A 30 N/A N/A N/A N/A N/A ... ... ... ... ... ... 10 3.9G 10.3 0.9 122670 21 20 2.4G 12.5 0.9 245340 23 30 2.7G 12.5 0.9 368010 23 LegacyThumbor
  • 22. Agenda 1. Background 2. Testing 3. Monitoring 4. Deployment 5. Swarm mode 6. Roadmap
  • 23. ● Real-time error tracking ● Support for python tornado ● Out of the box support with apsl/thumbor Sentry
  • 24. ● Time-series DB ● Based on Google’s Borgmon ● Pull model ● Service Federation Prometheus
  • 25. ● Graphite is a time series DB ● Push model ● Statsd is a data statistics aggregator ● Statsd pushes aggregate data to Graphite for long term storage Graphite/Statsd
  • 26. ● Metric analytics & visualization suite ● Multiple data sources ● Alerting ● Custom dashboards Grafana
  • 27. The ELK Stack is a collection of three open-source products from Elastic. ● Elasticsearch is a NoSQL database that is based on the Lucene search engine. ● Logstash accepts and parses messages and sends them to Elasticsearch for storage. ● Kibana is a visualization layer that works on top of Elasticsearch. ELK
  • 28. Agenda 1. Background 2. Testing 3. Monitoring 4. Deployment 5. Swarm mode 6. Roadmap
  • 29. Docker 1.10.x and 1.11.x Server 1 Server 2 Server 3 Env fileEnv file Env file
  • 30. Docker 1.10.x and 1.11.x Thumbor Server 1 Server 2 Server 3 Env file Thumbor Env file Thumbor Env file
  • 31. Docker 1.10.x and 1.11.x Thumbor Server 1 Server 2 Server 3 Env file Thumbor Env file Thumbor Env file
  • 32. Docker 1.10.x and 1.11.x Thumbor Nginx Server 1 Server 2 Server 3 Env file Thumbor Nginx Env file Thumbor Nginx Env file
  • 33. Docker 1.10.x and 1.11.x Thumbor Nginx Server 1 Server 2 Server 3 Env file Thumbor Nginx Env file Thumbor Nginx Env file
  • 34. Docker 1.10.x and 1.11.x Thumbor Nginx Env file Thumbor Nginx Env file Thumbor Nginx Env file Load Balancer NFS File system CDN
  • 35. ● Rolling deployment strategy ● Path based targeting ○ /news/*, /products/*, /pictures/*, etc. ● Monitor system performance and deploy additional servers if needed Push It Live!
  • 36. Previous IMG Tier - 22 servers in rotation • 96% avg memory usage • 5.5 avg nginx active connections • 1.68 nginx requests a second • 1.88 avg active processes • 2.27 requests a second • 280 ms avg resize response time Thumbor Tier - 3 servers in rotation • 12.5% avg memory usage • 13 avg nginx requests a second • 0.384 avg requests per second • 255 ms avg resize response time *Statistics are per box Results
  • 37. Agenda 1. Background 2. Testing 3. Monitoring 4. Deployment 5. Swarm mode 6. Roadmap
  • 38. Docker 1.12.x, 1.13.x, and 17.03 Server 1 Server 2 Server 3 Manager
  • 39. ~ docker swarm init Swarm initialized: current node (o2lqnophten3ybufd996zxc6m) is now a manager To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-1kw6ht8rie6aeuokaeym2wc2yazb2vqxi6g92rog55o7sok2t8-0lxneopk6 7mto3o6ltuavckb8 192.168.65.2:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions Docker Swarm Mode
  • 40. ~ docker swarm init Swarm initialized: current node (o2lqnophten3ybufd996zxc6m) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-1kw6ht8rie6aeuokaeym2wc2yazb2vqxi6g92rog55o7sok2t8-0lxneopk6 7mto3o6ltuavckb8 192.168.65.2:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. Docker Swarm Mode
  • 41. Docker 1.12.x, 1.13.x, and 17.03 Server 1 Server 2 Server 3 docker swarm join --token SWMTKN-1-1kw6ht8rie6aeuokaeym2wc2yazb2vqxi6g92rog55o7sok2t8-0lxneopk67mto3 o6ltuavckb8 192.168.65.2:2377
  • 42. Docker 1.12.x, 1.13.x, and 17.03 Server 1 Server 2 Server 3 docker service create --name thumbor --replicas 3 ... thumbor
  • 43. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Server 1 Server 2 Server 3 ThumborThumbor Thumbor service docker service create --name nginx -p 8080:80 --replicas 2 ... nginx
  • 44. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 ThumborThumbor Nginx service Thumbor service docker service scale thumbor=5
  • 45. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor Thumbor docker service update --image <new-image> thumbor
  • 46. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Nginx service Thumbor service Thumbor Thumbor
  • 47. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor Thumbor
  • 48. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Nginx service Thumbor service Thumbor Thumbor
  • 49. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor Thumbor
  • 50. Docker 1.12.x, 1.13.x, and 17.03 Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor Thumbor
  • 51. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor Thumbor
  • 52. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor
  • 53. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor Thumbor
  • 54. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor
  • 55. Docker 1.12.x, 1.13.x, and 17.03 Thumbor Nginx Nginx Server 1 Server 2 Server 3 Thumbor Thumbor Nginx service Thumbor service Thumbor Thumbor
  • 56. Agenda 1. Background 2. Testing 3. Monitoring 4. Deployment 5. Swarm mode 6. Roadmap
  • 57. Finished: ● Webp Upcoming: ● no_upscaling by default ● Gifv ● Smart Cropping ● Prometheus support for runtime metrics Thumbor
  • 58. Finished: ● Docker stack deploy Upcoming: ● Auto Scaling containers ● Prometheus monitoring ● Secrets ● Volume plugins Docker