SlideShare ist ein Scribd-Unternehmen logo
1 von 19
ANATOMY OF A HIGH-VOLUME,
 CLOUD-BASED WORDPRESS
     ARCHITECTURE
      presented by Gabriel Koen
         WordCamp LA 2011
Gabriel Koen

Principle Technical Architect at PMC

@mintindeed

http://gabrielkoen.com
www.pmc.com
REQUIREMENTS
Availability

Performance
AVAILABILITY
System availability
• 2 availability zones
• 2 web servers per zone
• 1 memcached server per
  zone
• Multi-zone RDS master
• Single zone RDS read
  replica
• S3 for user-uploaded
  and generated content
• Akamai CDN
AVAILABILITY
System availability

Data availability
USER-UPLOADED
CONTENT
EBS doesn’t have failover     S3 is designed to provide
nor automatic recovery        99.999999999% durability
                              and 99.99% availability of
EBS can only be attached to   objects over a given year
a single EC2 instance
                              S3 is accessible from any
EBS recovery is limited to    availability zone
restoring a point-in-time
snapshot
USER-UPLOADED Downtime per
 Availability %
                Downtime per Downtime per
 CONTENT           year         month     week

    99.9%
   EBS doesn’t have 8.76 hours
(“three nines”)     failover       43.2 minutes to provide
                                   S3 is designed 10.1 minutes
   nor automatic recovery          99.999999999% durability
                                   and 99.99% availability of
    99.99%
   EBS can only be52.56 minutes
                    attached to    4.32 minutes a given year
                                   objects over     1.01 minutes
 (“four nines”)
   a single EC2 instance

   99.9999% is limited to
    EBS recovery
                    31.5 seconds   2.59 seconds    0.605 seconds
  (“six nines”)point-in-time
    restoring a
   snapshot
99.999999999%
                       WTF            WTF              WTF
(“eleven nines”)
WP_FILESYSTEM
S3 isn’t a filesystem      WP_Filesystem
                           transparently proxies
...wait, what?             filesystem commands

We tries S3FS, it failed   WordPress’s media
miserably                  functions already use
                           WP_Filesystem
Enter WP_Filesystem
                           Plugins customized to use
                           WP_Filesystem will work
                           with any WP install
MAKING WORDPRESS
WORK WITH AUTOSCALING
S3 transport for
WP_Filesystem

Any plugins that interact
with user-uploaded or
generated content need to
use WP_Filesystem

CDN rewrite for frontend

CDN rewrite for admin
AVAILABILITY

System availability

Data availability

Content availability
HYPERDB
Master configured as a failover
         read slave
     Dynamic read slaves
AKAMAI
Worldwide content distribution
    Static content caching
        Page caching
MAKING WORDPRESS
WORK WITH AUTOSCALING
S3 transport for
WP_Filesystem

Any plugins that interact
with user-uploaded or
generated content need to
use WP_Filesystem

CDN rewrite for frontend

CDN rewrite for admin
MAKING WORDPRESS
WORK AT SCALE
S3 transport for            Things normally done
WP_Filesystem               server-side need to be done
                            client-side
Any plugins that interact
with user-uploaded or
generated content need to
use WP_Filesystem

CDN rewrite for frontend

CDN rewrite for admin
DEPLOYMENTS


No FTP

No persistent filesystem

How do you push code?
DEPLOYMENTS




You pull it.
DEPLOYMENTS


Commit to version control

Start build in Jenkins

Jenkins pushes code to S3

Web servers check in to S3,
see new code, pull it

Weitere ähnliche Inhalte

Was ist angesagt?

Don't think about the difficulty Let's try to connect easy to IPv6 network w...
 Don't think about the difficulty Let's try to connect easy to IPv6 network w... Don't think about the difficulty Let's try to connect easy to IPv6 network w...
Don't think about the difficulty Let's try to connect easy to IPv6 network w...Namba Kazuo
 
Kubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platformKubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platformLivePerson
 
1 DevOp vs 1.000 servers - Amazon EC2 and Chef automation intro
1 DevOp vs 1.000 servers - Amazon EC2 and Chef automation intro1 DevOp vs 1.000 servers - Amazon EC2 and Chef automation intro
1 DevOp vs 1.000 servers - Amazon EC2 and Chef automation introThomas Lobinger
 
BlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Seattle 2019 || Kubernetes Practical Attack and DefenseBlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Seattle 2019 || Kubernetes Practical Attack and DefenseBlueHat Security Conference
 
Scaling Jenkins with Kubernetes by Ami Mahloof
Scaling Jenkins with Kubernetes by Ami MahloofScaling Jenkins with Kubernetes by Ami Mahloof
Scaling Jenkins with Kubernetes by Ami MahloofDoiT International
 
20211120 Automating EC2 operations / EC2運用の自動化
20211120 Automating EC2 operations / EC2運用の自動化20211120 Automating EC2 operations / EC2運用の自動化
20211120 Automating EC2 operations / EC2運用の自動化Masaru Ogura
 
Spinnaker 파트 1
Spinnaker 파트 1Spinnaker 파트 1
Spinnaker 파트 1Steven Shim
 
Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017Philipp Garbe
 
Building and Scaling a Containerized Microservice - DevDay Austin 2017
Building and Scaling a Containerized Microservice - DevDay Austin 2017Building and Scaling a Containerized Microservice - DevDay Austin 2017
Building and Scaling a Containerized Microservice - DevDay Austin 2017Amazon Web Services
 
Amazon EC2 Container Service: Deep Dive
Amazon EC2 Container Service: Deep DiveAmazon EC2 Container Service: Deep Dive
Amazon EC2 Container Service: Deep DiveAmazon Web Services
 
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCarlos Sanchez
 
Docker with Selenium by Thirumalai Vignesh
Docker with Selenium by Thirumalai VigneshDocker with Selenium by Thirumalai Vignesh
Docker with Selenium by Thirumalai VigneshSoftware Testing Board
 
Kubernetes @ Nanit by Chen Fisher
Kubernetes @ Nanit by Chen FisherKubernetes @ Nanit by Chen Fisher
Kubernetes @ Nanit by Chen FisherDoiT International
 
Building REA In The Cloud
Building REA In The CloudBuilding REA In The Cloud
Building REA In The CloudOracle
 
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Corley S.r.l.
 
IDI 2020 - Containers Meet Serverless
IDI 2020 - Containers Meet ServerlessIDI 2020 - Containers Meet Serverless
IDI 2020 - Containers Meet ServerlessMassimo Ferre'
 
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv Amazon Web Services
 

Was ist angesagt? (20)

Don't think about the difficulty Let's try to connect easy to IPv6 network w...
 Don't think about the difficulty Let's try to connect easy to IPv6 network w... Don't think about the difficulty Let's try to connect easy to IPv6 network w...
Don't think about the difficulty Let's try to connect easy to IPv6 network w...
 
Kubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platformKubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platform
 
1 DevOp vs 1.000 servers - Amazon EC2 and Chef automation intro
1 DevOp vs 1.000 servers - Amazon EC2 and Chef automation intro1 DevOp vs 1.000 servers - Amazon EC2 and Chef automation intro
1 DevOp vs 1.000 servers - Amazon EC2 and Chef automation intro
 
BlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Seattle 2019 || Kubernetes Practical Attack and DefenseBlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
BlueHat Seattle 2019 || Kubernetes Practical Attack and Defense
 
Scaling Jenkins with Kubernetes by Ami Mahloof
Scaling Jenkins with Kubernetes by Ami MahloofScaling Jenkins with Kubernetes by Ami Mahloof
Scaling Jenkins with Kubernetes by Ami Mahloof
 
20211120 Automating EC2 operations / EC2運用の自動化
20211120 Automating EC2 operations / EC2運用の自動化20211120 Automating EC2 operations / EC2運用の自動化
20211120 Automating EC2 operations / EC2運用の自動化
 
ECS - from 0 to 100
ECS - from 0 to 100ECS - from 0 to 100
ECS - from 0 to 100
 
Spinnaker 파트 1
Spinnaker 파트 1Spinnaker 파트 1
Spinnaker 파트 1
 
Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017
 
Building and Scaling a Containerized Microservice - DevDay Austin 2017
Building and Scaling a Containerized Microservice - DevDay Austin 2017Building and Scaling a Containerized Microservice - DevDay Austin 2017
Building and Scaling a Containerized Microservice - DevDay Austin 2017
 
Amazon EC2 Container Service: Deep Dive
Amazon EC2 Container Service: Deep DiveAmazon EC2 Container Service: Deep Dive
Amazon EC2 Container Service: Deep Dive
 
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
 
Docker with Selenium by Thirumalai Vignesh
Docker with Selenium by Thirumalai VigneshDocker with Selenium by Thirumalai Vignesh
Docker with Selenium by Thirumalai Vignesh
 
Kubernetes @ Nanit by Chen Fisher
Kubernetes @ Nanit by Chen FisherKubernetes @ Nanit by Chen Fisher
Kubernetes @ Nanit by Chen Fisher
 
Building REA In The Cloud
Building REA In The CloudBuilding REA In The Cloud
Building REA In The Cloud
 
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
 
IDI 2020 - Containers Meet Serverless
IDI 2020 - Containers Meet ServerlessIDI 2020 - Containers Meet Serverless
IDI 2020 - Containers Meet Serverless
 
ECS in action
ECS in actionECS in action
ECS in action
 
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
Docker on AWS with Amazon ECR & ECS - Pop-up Loft Tel Aviv
 
빈스톡 첫인상 with Git
빈스톡 첫인상 with Git빈스톡 첫인상 with Git
빈스톡 첫인상 with Git
 

Ähnlich wie Anatomy of a high-volume, cloud-based WordPress architecture

AWS re:Invent 2016: High Performance Cinematic Production in the Cloud (MAE304)
AWS re:Invent 2016: High Performance Cinematic Production in the Cloud (MAE304)AWS re:Invent 2016: High Performance Cinematic Production in the Cloud (MAE304)
AWS re:Invent 2016: High Performance Cinematic Production in the Cloud (MAE304)Amazon Web Services
 
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and ServerspecVerifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and ServerspecEdmund Dipple
 
ARC302 AWS Cloud Design Patterns - AWS re: Invent 2012
ARC302 AWS Cloud Design Patterns - AWS re: Invent 2012ARC302 AWS Cloud Design Patterns - AWS re: Invent 2012
ARC302 AWS Cloud Design Patterns - AWS re: Invent 2012Amazon Web Services
 
Microsoft SQL Server Dive Deep.pdf
Microsoft SQL Server Dive Deep.pdfMicrosoft SQL Server Dive Deep.pdf
Microsoft SQL Server Dive Deep.pdfAmazon Web Services
 
Codemotion 2020 - Containers Meet Serverless
Codemotion 2020 - Containers Meet ServerlessCodemotion 2020 - Containers Meet Serverless
Codemotion 2020 - Containers Meet ServerlessMassimo Ferre'
 
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...SQLExpert.pl
 
AWS January 2016 Webinar Series - Amazon Aurora for Enterprise Database Appli...
AWS January 2016 Webinar Series - Amazon Aurora for Enterprise Database Appli...AWS January 2016 Webinar Series - Amazon Aurora for Enterprise Database Appli...
AWS January 2016 Webinar Series - Amazon Aurora for Enterprise Database Appli...Amazon Web Services
 
Introduction to EC2
Introduction to EC2Introduction to EC2
Introduction to EC2Mark Squires
 
Debian Cloud - building the Debian AMIs
Debian Cloud - building the Debian AMIsDebian Cloud - building the Debian AMIs
Debian Cloud - building the Debian AMIsJames Bromberger
 
Hybrid Cloud With AWS and Eucalyptus
Hybrid Cloud With AWS and EucalyptusHybrid Cloud With AWS and Eucalyptus
Hybrid Cloud With AWS and EucalyptusPaolo latella
 
Cloud computing & lamp applications
Cloud computing & lamp applicationsCloud computing & lamp applications
Cloud computing & lamp applicationsCorley S.r.l.
 
DPC 2016 - 53 Minutes or Less - Architecting For Failure
DPC 2016 - 53 Minutes or Less - Architecting For FailureDPC 2016 - 53 Minutes or Less - Architecting For Failure
DPC 2016 - 53 Minutes or Less - Architecting For Failurebenwaine
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetesDongwon Kim
 
AWS Webcast - How to Migrate On-premise NAS Storage to Cloud NAS Storage
AWS Webcast - How to Migrate On-premise NAS Storage to Cloud NAS StorageAWS Webcast - How to Migrate On-premise NAS Storage to Cloud NAS Storage
AWS Webcast - How to Migrate On-premise NAS Storage to Cloud NAS StorageAmazon Web Services
 
Distributed automation selcamp2016
Distributed automation selcamp2016Distributed automation selcamp2016
Distributed automation selcamp2016aragavan
 
Containerization: The DevOps Revolution
Containerization: The DevOps Revolution Containerization: The DevOps Revolution
Containerization: The DevOps Revolution SoftServe
 
Running your First Application on AWS
Running your First Application on AWSRunning your First Application on AWS
Running your First Application on AWSAmazon Web Services
 
(DAT312) Using Amazon Aurora for Enterprise Workloads
(DAT312) Using Amazon Aurora for Enterprise Workloads(DAT312) Using Amazon Aurora for Enterprise Workloads
(DAT312) Using Amazon Aurora for Enterprise WorkloadsAmazon Web Services
 
Amazon Aurora for the Enterprise - August 2016 Monthly Webinar Series
Amazon Aurora for the Enterprise - August 2016 Monthly Webinar SeriesAmazon Aurora for the Enterprise - August 2016 Monthly Webinar Series
Amazon Aurora for the Enterprise - August 2016 Monthly Webinar SeriesAmazon Web Services
 
(CMP404) Cloud Rendering at Walt Disney Animation Studios
(CMP404) Cloud Rendering at Walt Disney Animation Studios(CMP404) Cloud Rendering at Walt Disney Animation Studios
(CMP404) Cloud Rendering at Walt Disney Animation StudiosAmazon Web Services
 

Ähnlich wie Anatomy of a high-volume, cloud-based WordPress architecture (20)

AWS re:Invent 2016: High Performance Cinematic Production in the Cloud (MAE304)
AWS re:Invent 2016: High Performance Cinematic Production in the Cloud (MAE304)AWS re:Invent 2016: High Performance Cinematic Production in the Cloud (MAE304)
AWS re:Invent 2016: High Performance Cinematic Production in the Cloud (MAE304)
 
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and ServerspecVerifying your Ansible Roles using Docker, Test Kitchen and Serverspec
Verifying your Ansible Roles using Docker, Test Kitchen and Serverspec
 
ARC302 AWS Cloud Design Patterns - AWS re: Invent 2012
ARC302 AWS Cloud Design Patterns - AWS re: Invent 2012ARC302 AWS Cloud Design Patterns - AWS re: Invent 2012
ARC302 AWS Cloud Design Patterns - AWS re: Invent 2012
 
Microsoft SQL Server Dive Deep.pdf
Microsoft SQL Server Dive Deep.pdfMicrosoft SQL Server Dive Deep.pdf
Microsoft SQL Server Dive Deep.pdf
 
Codemotion 2020 - Containers Meet Serverless
Codemotion 2020 - Containers Meet ServerlessCodemotion 2020 - Containers Meet Serverless
Codemotion 2020 - Containers Meet Serverless
 
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
Always On - Wydajność i bezpieczeństwo naszych danych - High Availability SQL...
 
AWS January 2016 Webinar Series - Amazon Aurora for Enterprise Database Appli...
AWS January 2016 Webinar Series - Amazon Aurora for Enterprise Database Appli...AWS January 2016 Webinar Series - Amazon Aurora for Enterprise Database Appli...
AWS January 2016 Webinar Series - Amazon Aurora for Enterprise Database Appli...
 
Introduction to EC2
Introduction to EC2Introduction to EC2
Introduction to EC2
 
Debian Cloud - building the Debian AMIs
Debian Cloud - building the Debian AMIsDebian Cloud - building the Debian AMIs
Debian Cloud - building the Debian AMIs
 
Hybrid Cloud With AWS and Eucalyptus
Hybrid Cloud With AWS and EucalyptusHybrid Cloud With AWS and Eucalyptus
Hybrid Cloud With AWS and Eucalyptus
 
Cloud computing & lamp applications
Cloud computing & lamp applicationsCloud computing & lamp applications
Cloud computing & lamp applications
 
DPC 2016 - 53 Minutes or Less - Architecting For Failure
DPC 2016 - 53 Minutes or Less - Architecting For FailureDPC 2016 - 53 Minutes or Less - Architecting For Failure
DPC 2016 - 53 Minutes or Less - Architecting For Failure
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
 
AWS Webcast - How to Migrate On-premise NAS Storage to Cloud NAS Storage
AWS Webcast - How to Migrate On-premise NAS Storage to Cloud NAS StorageAWS Webcast - How to Migrate On-premise NAS Storage to Cloud NAS Storage
AWS Webcast - How to Migrate On-premise NAS Storage to Cloud NAS Storage
 
Distributed automation selcamp2016
Distributed automation selcamp2016Distributed automation selcamp2016
Distributed automation selcamp2016
 
Containerization: The DevOps Revolution
Containerization: The DevOps Revolution Containerization: The DevOps Revolution
Containerization: The DevOps Revolution
 
Running your First Application on AWS
Running your First Application on AWSRunning your First Application on AWS
Running your First Application on AWS
 
(DAT312) Using Amazon Aurora for Enterprise Workloads
(DAT312) Using Amazon Aurora for Enterprise Workloads(DAT312) Using Amazon Aurora for Enterprise Workloads
(DAT312) Using Amazon Aurora for Enterprise Workloads
 
Amazon Aurora for the Enterprise - August 2016 Monthly Webinar Series
Amazon Aurora for the Enterprise - August 2016 Monthly Webinar SeriesAmazon Aurora for the Enterprise - August 2016 Monthly Webinar Series
Amazon Aurora for the Enterprise - August 2016 Monthly Webinar Series
 
(CMP404) Cloud Rendering at Walt Disney Animation Studios
(CMP404) Cloud Rendering at Walt Disney Animation Studios(CMP404) Cloud Rendering at Walt Disney Animation Studios
(CMP404) Cloud Rendering at Walt Disney Animation Studios
 

Kürzlich hochgeladen

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 

Kürzlich hochgeladen (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Anatomy of a high-volume, cloud-based WordPress architecture

  • 1. ANATOMY OF A HIGH-VOLUME, CLOUD-BASED WORDPRESS ARCHITECTURE presented by Gabriel Koen WordCamp LA 2011
  • 2. Gabriel Koen Principle Technical Architect at PMC @mintindeed http://gabrielkoen.com
  • 6. • 2 availability zones • 2 web servers per zone • 1 memcached server per zone • Multi-zone RDS master • Single zone RDS read replica • S3 for user-uploaded and generated content • Akamai CDN
  • 8. USER-UPLOADED CONTENT EBS doesn’t have failover S3 is designed to provide nor automatic recovery 99.999999999% durability and 99.99% availability of EBS can only be attached to objects over a given year a single EC2 instance S3 is accessible from any EBS recovery is limited to availability zone restoring a point-in-time snapshot
  • 9. USER-UPLOADED Downtime per Availability % Downtime per Downtime per CONTENT year month week 99.9% EBS doesn’t have 8.76 hours (“three nines”) failover 43.2 minutes to provide S3 is designed 10.1 minutes nor automatic recovery 99.999999999% durability and 99.99% availability of 99.99% EBS can only be52.56 minutes attached to 4.32 minutes a given year objects over 1.01 minutes (“four nines”) a single EC2 instance 99.9999% is limited to EBS recovery 31.5 seconds 2.59 seconds 0.605 seconds (“six nines”)point-in-time restoring a snapshot 99.999999999% WTF WTF WTF (“eleven nines”)
  • 10. WP_FILESYSTEM S3 isn’t a filesystem WP_Filesystem transparently proxies ...wait, what? filesystem commands We tries S3FS, it failed WordPress’s media miserably functions already use WP_Filesystem Enter WP_Filesystem Plugins customized to use WP_Filesystem will work with any WP install
  • 11. MAKING WORDPRESS WORK WITH AUTOSCALING S3 transport for WP_Filesystem Any plugins that interact with user-uploaded or generated content need to use WP_Filesystem CDN rewrite for frontend CDN rewrite for admin
  • 13. HYPERDB Master configured as a failover read slave Dynamic read slaves
  • 14. AKAMAI Worldwide content distribution Static content caching Page caching
  • 15. MAKING WORDPRESS WORK WITH AUTOSCALING S3 transport for WP_Filesystem Any plugins that interact with user-uploaded or generated content need to use WP_Filesystem CDN rewrite for frontend CDN rewrite for admin
  • 16. MAKING WORDPRESS WORK AT SCALE S3 transport for Things normally done WP_Filesystem server-side need to be done client-side Any plugins that interact with user-uploaded or generated content need to use WP_Filesystem CDN rewrite for frontend CDN rewrite for admin
  • 17. DEPLOYMENTS No FTP No persistent filesystem How do you push code?
  • 19. DEPLOYMENTS Commit to version control Start build in Jenkins Jenkins pushes code to S3 Web servers check in to S3, see new code, pull it

Hinweis der Redaktion

  1. \n
  2. \n
  3. PMC, started by Jay Penske in 2004. \n
  4. PMC, started by Jay Penske in 2004. \n
  5. PMC, started by Jay Penske in 2004. \n
  6. PMC, started by Jay Penske in 2004. \n
  7. PMC, started by Jay Penske in 2004. \n
  8. PMC, started by Jay Penske in 2004. \n
  9. PMC, started by Jay Penske in 2004. \n
  10. PMC, started by Jay Penske in 2004. \n
  11. PMC, started by Jay Penske in 2004. \nPageviews\nPer month64,078,691\nPer day2,135,956\nPer hour88,998\nPer minute1,483\nPer second25\n
  12. \n
  13. But really, what are the requirements? Systems vs. Software. AWS is systems, and what how can systems address these issues?\n
  14. \n
  15. Independent environments\nIf one server or site goes down, the other sites are uneffected. \nAbility to easily scale to meet demand. Suddenly we can run a small number of servers, they will automatically grow to meet bursts. For large events like the Oscars and Apple product announcements we could ramp up in advance.\n
  16. Independent environments\nIf one server or site goes down, the other sites are uneffected. \nAbility to easily scale to meet demand. Suddenly we can run a small number of servers, they will automatically grow to meet bursts. For large events like the Oscars and Apple product announcements we could ramp up in advance.\n
  17. Independent environments\nIf one server or site goes down, the other sites are uneffected. \nAbility to easily scale to meet demand. Suddenly we can run a small number of servers, they will automatically grow to meet bursts. For large events like the Oscars and Apple product announcements we could ramp up in advance.\n
  18. Independent environments\nIf one server or site goes down, the other sites are uneffected. \nAbility to easily scale to meet demand. Suddenly we can run a small number of servers, they will automatically grow to meet bursts. For large events like the Oscars and Apple product announcements we could ramp up in advance.\n
  19. Independent environments\nIf one server or site goes down, the other sites are uneffected. \nAbility to easily scale to meet demand. Suddenly we can run a small number of servers, they will automatically grow to meet bursts. For large events like the Oscars and Apple product announcements we could ramp up in advance.\n
  20. Independent environments\nIf one server or site goes down, the other sites are uneffected. \nAbility to easily scale to meet demand. Suddenly we can run a small number of servers, they will automatically grow to meet bursts. For large events like the Oscars and Apple product announcements we could ramp up in advance.\n
  21. Independent environments\nIf one server or site goes down, the other sites are uneffected. \nAbility to easily scale to meet demand. Suddenly we can run a small number of servers, they will automatically grow to meet bursts. For large events like the Oscars and Apple product announcements we could ramp up in advance.\n
  22. Independent environments\nIf one server or site goes down, the other sites are uneffected. \nAbility to easily scale to meet demand. Suddenly we can run a small number of servers, they will automatically grow to meet bursts. For large events like the Oscars and Apple product announcements we could ramp up in advance.\n
  23. Low latency across availability zones\n\n
  24. - What are the pieces of content that really change on your server?\n- Themes and site assets don't change often. Not on their own, at least: you roll out a deployment. \n- WordPress core files and plugins don't change often. They're the same: you're going to test them out in your dev environment, make sure they're good, and then deploy the update in a scheduled release. \n- Content changes all the time -- new stories, widget updates, etc. But those are all served through a database, those changes don't affect the filesystem. \n- All these things you have control over, and really, they don't change from request to request, they don't change from server to server or WordPress install to WordPress install.\n- So what changes?\n- User-uploaded content.\n- Generated content.\n
  25. \n
  26. \n
  27. There are solutions for interacting with S3 as a filesystem. But one of our requirements is availability. \n- What is user-uploaded content? Media -- PDFs and images. (Video is a different animal for us, it's not uploaded or managed through WordPress.)\n- It all goes in the wp-content/uploads folder. \n- We already use a CDN domain for delivering static content; there's no law that says because a file was uploaded to your web server it has to stay there or be delivered from there. It's just convenience. But even the URL of our static content is rewritten via W3TC to our CDN domain. \n- The answer is simple: treat the web servers as stateless, non-persistent application servers. Then we're left with a dynamic content data store -- the mysql server -- and a static content data store -- the file server. User-uploaded content gets transferred to the static file store. \n- WordPress already provides a mechanism for this: WP Filesystem. This is the part of WordPress that handles moving, downloading, and copying files when installing plugins, upgrading WordPress, etc., through the admin. You get a persistent interface similar to your normal copy, move, mkdir, and put_content commands but depending on your system WP Filesystem will transparently use FTP, SFTP, or local system commands. (Like that stupid message to enter your FTP credentials when file permissions aren't set right on your server.)\n- So all we had to do was write a WP Filesystem class to handle S3 uploads, and make sure our plugins and themes were set to use them, and voila -- WordPress now supported anon-persistent filesystem. Files would be transparently uploaded to an S3 bucket and served via our CDN domain, and WordPress still acted the same as before.\n
  28. Recap.\n- Make system-generated files into dynamically-generated pages (turn static sitemap files into dynamic page requests).\n- Make sure plugins use WP Filesystem\n- CDN class to handle cachebusters on filenames, and show/use the CDN domain when viewing/inserting content in WP Admin\n- Simple to explain, but took us a lot of work to figure out and find all the "gotchas"\n
  29. \n
  30. \n
  31. Read slaves are defined in a custom environment variable. Since RDS doesn’t auto-scale, this allows us to scale up database capacity as needed -- just boot up more RDS instances and add their IPs to the list. Development environments typically have 0 read slaves, they can use this configuration too without any customization.\nSharding? No multiuser blogs, no user signups, ~15k+ posts per site, no need for sharding yet. Have had some issues with comments performance.\n
  32. \n
  33. \n
  34. Comments, mobile redirects, etc., all need to be done clientside.\n
  35. \n
  36. \n
  37. \n
  38. Nuances: servers check in at a scheduled time, minor variance due to network time sync. Code is deployed simultaneously due to symlink swap.\n
  39. \n
  40. - We want to be able to withstand a PHP or database failure and still have the last good cached page show up. Akamai provides this capability, but we want to implement it on our server stack too. As we do this, we can make sure our application is smart -- only caching good content, fully-rendered pages and always returning error headers if there's something wrong with the content. Right now we face an issue where a partially-rendered page (e.g., a PHP fatal error partway through execution) can store broken content in cache and return a 200 response. That should never happen, if our app goes down regular visitors should not know about it. This has an added benefit where we can protect against a thundering herd -- when the cache expires, every page request is going to try and generate a new cache of the page and go through the whole page render process. Many such requests simultaneously can bog down a server, and overall makes the site response slow for everybody. Essentially, where we want to be is: a request comes to the web server, the web server will always throw back a cached response. If the cache is expired, it will let one single request through and continue serving the last good cache to everybody else. Since only one request is generating the cache, and since we don't have a whole herd of simultaneous requests bogging down the server, that person priming the cache with his/her request will also get a speedy response -- but it will take 1-2 seconds, instead of 50-200ms. \n- After a day or two, published content never changes on a news blog. We want to cache post archives once and never have to re-generate those pages again unless part of their content is updated. To do this, we'll need to use some kind of edge-side include-type mecahnism to render fresh sidebars and headers, but not have to re-generate the whole page. One of the things that kills our site performance is when we start getting crawled and the crawler hits a lot of our archives in a short period of time. \n
  41. \n