SlideShare a Scribd company logo
Scaling PHP to
40 Million Uniques
Northeast PHP 2013
Jonathan Klein
@jonathanklein
Saturday, August 17, 13
Scaling PHP to
40 Million Uniques
Northeast PHP 2013
Jonathan Klein
@jonathanklein
Saturday, August 17, 13
Scaling PHP to
60 Million Uniques
Northeast PHP 2013
Jonathan Klein
@jonathanklein
Saturday, August 17, 13
Who Am I?
Saturday, August 17, 13
Who Am I?
• Performance Engineer at Etsy
Saturday, August 17, 13
Who Am I?
• Performance Engineer at Etsy
• Boston Web Perf Meetup Organizer
Saturday, August 17, 13
Who Am I?
• Performance Engineer at Etsy
• Boston Web Perf Meetup Organizer
• Previously at Wayfair
Saturday, August 17, 13
Who Am I?
• Performance Engineer at Etsy
• Boston Web Perf Meetup Organizer
• Previously at Wayfair
• Led team that converted to PHP
Saturday, August 17, 13
Slides, Links:
jkle.in/nephp
Saturday, August 17, 13
codeascraft.com
Saturday, August 17, 13
Some Etsy Stats
Saturday, August 17, 13
Some Etsy Stats
• 1.5 billion page views/month
Saturday, August 17, 13
Some Etsy Stats
• 1.5 billion page views/month
• Almost $1B in sales last year
Saturday, August 17, 13
Some Etsy Stats
• 1.5 billion page views/month
• Almost $1B in sales last year
• Over 1M lines of PHP
Saturday, August 17, 13
Some Etsy Stats
• 1.5 billion page views/month
• Almost $1B in sales last year
• Over 1M lines of PHP
• 60M+ unique visitors/month
Saturday, August 17, 13
2012 Traffic
Saturday, August 17, 13
August
2012 Traffic
Saturday, August 17, 13
August
2012 Traffic
50% Higher
Saturday, August 17, 13
Holidays:
~90M Uniques
Saturday, August 17, 13
Saturday, August 17, 13
Saturday, August 17, 13
A few others...
Saturday, August 17, 13
A few others...
• Search (Solr)
Saturday, August 17, 13
A few others...
• Search (Solr)
• Gearman
Saturday, August 17, 13
A few others...
• Search (Solr)
• Gearman
• Redis
Saturday, August 17, 13
A few others...
• Search (Solr)
• Gearman
• Redis
• Postgres (legacy)
Saturday, August 17, 13
Saturday, August 17, 13
Hardware (Supermicro)
Saturday, August 17, 13
Hardware (Supermicro)
2x 8-core Intel E5-2960 CPUs
Saturday, August 17, 13
Hardware (Supermicro)
2x 8-core Intel E5-2960 CPUs
24GB of RAM
Saturday, August 17, 13
Hardware (Supermicro)
2x 8-core Intel E5-2960 CPUs
24GB of RAM
160GB SSD
Saturday, August 17, 13
Apache
Saturday, August 17, 13
Apache
• Apache 2.2
Saturday, August 17, 13
Apache
• Apache 2.2
• Prefork MPM
Saturday, August 17, 13
Apache
• Apache 2.2
• Prefork MPM
• mod_php5
Saturday, August 17, 13
Apache
• Apache 2.2
• Prefork MPM
• mod_php5
StartServers 30
MinSpareServers 30
MaxSpareServers 60
ServerLimit 60
MaxClients 60
MaxRequestsPerChild 0
Saturday, August 17, 13
PHP
Saturday, August 17, 13
PHP
• PHP 5.4
Saturday, August 17, 13
PHP
• PHP 5.4
• Zend OPCache (3GB Memory Segment)
Saturday, August 17, 13
PHP
• PHP 5.4
• Zend OPCache (3GB Memory Segment)
• memory_limit: 128M
Saturday, August 17, 13
PHP
• PHP 5.4
• Zend OPCache (3GB Memory Segment)
• memory_limit: 128M
• max_execution_time: 30
Saturday, August 17, 13
Optimizing PHP
http://www.slideshare.net/jnklein/northeast-php-high-performance-php
Saturday, August 17, 13
Optimizing PHP
• See last year’s talk
http://www.slideshare.net/jnklein/northeast-php-high-performance-php
Saturday, August 17, 13
Optimizing PHP
• See last year’s talk
• Use an Opcode Cache
http://www.slideshare.net/jnklein/northeast-php-high-performance-php
Saturday, August 17, 13
Optimizing PHP
• See last year’s talk
• Use an Opcode Cache
• xhprof
http://www.slideshare.net/jnklein/northeast-php-high-performance-php
Saturday, August 17, 13
Optimizing PHP
• See last year’s talk
• Use an Opcode Cache
• xhprof
• StatsD/Graphite
http://www.slideshare.net/jnklein/northeast-php-high-performance-php
Saturday, August 17, 13
Optimizing PHP
• See last year’s talk
• Use an Opcode Cache
• xhprof
• StatsD/Graphite
• Find hotspots
http://www.slideshare.net/jnklein/northeast-php-high-performance-php
Saturday, August 17, 13
Optimizing PHP
• See last year’s talk
• Use an Opcode Cache
• xhprof
• StatsD/Graphite
• Find hotspots
• Upgrade it
http://www.slideshare.net/jnklein/northeast-php-high-performance-php
Saturday, August 17, 13
Static Arrays
Saturday, August 17, 13
Translations
class language_de {
static $translations = array(
"<hash>" => array("content" => 'Accessoires', "file" => "TAXONOMY"),
"<hash>" => array("content" => 'Keramik', "file" => "CATEGORY"),
"<hash>" => array("content" => 'Dekorieren', "file" => "CATEGORY"),
"<hash>" => array("content" => 'Getaggt %s', "file" => "Foo.php"),
"<hash>" => array("content" => 'Badezusatz', "file" => "CATEGORY"),
"<hash>" => array("content" => 'Datum:{% $date %}', "file" => "bar.tpl")
... snip ...
);
}
Saturday, August 17, 13
Saturday, August 17, 13
Saturday, August 17, 13
Atomic Deploys
Saturday, August 17, 13
Deploying PHP
http://codeascraft.com/2013/07/01/atomic-deploys-at-etsy/
Saturday, August 17, 13
Deploying PHP
• mod_realdoc - Apache module
http://codeascraft.com/2013/07/01/atomic-deploys-at-etsy/
Saturday, August 17, 13
Deploying PHP
• mod_realdoc - Apache module
• incpath - PHP Extension
http://codeascraft.com/2013/07/01/atomic-deploys-at-etsy/
Saturday, August 17, 13
Deploying PHP
• mod_realdoc - Apache module
• incpath - PHP Extension
• A/B symlink swap
http://codeascraft.com/2013/07/01/atomic-deploys-at-etsy/
Saturday, August 17, 13
Deploying PHP
• mod_realdoc - Apache module
• incpath - PHP Extension
• A/B symlink swap
• Avoid recompilation to opcodes
http://codeascraft.com/2013/07/01/atomic-deploys-at-etsy/
Saturday, August 17, 13
Upgrading PHP
Saturday, August 17, 13
PHP 5.4 vs. 5.3 - CPU
PHP 5.3
PHP 5.4
Saturday, August 17, 13
PHP 5.4 vs. 5.3 - Memory
PHP 5.3
PHP 5.4
Saturday, August 17, 13
Saturday, August 17, 13
Understand
Framework
Overhead
Saturday, August 17, 13
http://systemsarchitect.net/performance-benchmark-of-popular-php-frameworks/
Saturday, August 17, 13
Saturday, August 17, 13
Saturday, August 17, 13
Saturday, August 17, 13
Frameworks are
Harder to Scale
Saturday, August 17, 13
Saturday, August 17, 13
Memcached
Saturday, August 17, 13
Memcached
• Roughly same hardware as webs
Saturday, August 17, 13
Memcached
• Roughly same hardware as webs
• More memory (48GB)
Saturday, August 17, 13
Memcached
• Roughly same hardware as webs
• More memory (48GB)
• Shard keys across servers
Saturday, August 17, 13
Memcached
• Roughly same hardware as webs
• More memory (48GB)
• Shard keys across servers
• mctop - https://github.com/etsy/mctop
Saturday, August 17, 13
Saturday, August 17, 13
MySQL
Saturday, August 17, 13
MySQL
• MySQL 5.5 (http://jkle.in/nephp)
Saturday, August 17, 13
MySQL
• MySQL 5.5 (http://jkle.in/nephp)
• ~20 master/master pairs
Saturday, August 17, 13
MySQL
• MySQL 5.5 (http://jkle.in/nephp)
• ~20 master/master pairs
• innodb
Saturday, August 17, 13
MySQL
• MySQL 5.5 (http://jkle.in/nephp)
• ~20 master/master pairs
• innodb
• thread_cache=800
Saturday, August 17, 13
MySQL
• MySQL 5.5 (http://jkle.in/nephp)
• ~20 master/master pairs
• innodb
• thread_cache=800
• max_connections=2500
Saturday, August 17, 13
MySQL
• MySQL 5.5 (http://jkle.in/nephp)
• ~20 master/master pairs
• innodb
• thread_cache=800
• max_connections=2500
• [Almost] no joins
Saturday, August 17, 13
Theoretically we can
serve ~9000 req/sec
Saturday, August 17, 13
Saturday, August 17, 13
Static Content
Saturday, August 17, 13
Saturday, August 17, 13
~500 Million Images
Saturday, August 17, 13
Offloading Requests
Saturday, August 17, 13
Offloading Requests
• Multiple CDNs
Saturday, August 17, 13
Offloading Requests
• Multiple CDNs
• Img hit rate > 90%
Saturday, August 17, 13
Offloading Requests
• Multiple CDNs
• Img hit rate > 90%
• CSS/JS hit rate ~100%
Saturday, August 17, 13
Offloading Requests
• Multiple CDNs
• Img hit rate > 90%
• CSS/JS hit rate ~100%
• Edge serves ~7000 reqs/sec
Saturday, August 17, 13
What about misses?
Saturday, August 17, 13
Saturday, August 17, 13
Change Management
Saturday, August 17, 13
Feature Flags
Saturday, August 17, 13
Saturday, August 17, 13
// Owner: Username
$server_config['foo']['bar'] = array(
'users' => array('jsmith', 'jdoe'),
);
// Owner: Username
$server_config['baz'] = [
'enabled' => [
'variant1' => 0,
'variant2' => 0,
'variant3' => 50
],
];
// Owner: Username
$server_config['qux'] = array(
'enabled' => 100,
'data' => array(
'somedata'
)
);
Saturday, August 17, 13
if (Feature::isEnabled('foo.bar')) {
// Code
}
Saturday, August 17, 13
Ramp-up:
1%, 5%, 25%, 100%
Saturday, August 17, 13
Deployinator
Saturday, August 17, 13
Saturday, August 17, 13
Schemanator
Saturday, August 17, 13
Saturday, August 17, 13
Recent Improvements
Saturday, August 17, 13
Saturday, August 17, 13
Sandy Bridge
Saturday, August 17, 13
Baseline Performance (median)
Saturday, August 17, 13
Small code change
Baseline Performance (median)
Saturday, August 17, 13
Small code change
PHP 5.4
Baseline Performance (median)
Saturday, August 17, 13
Small code change
PHP 5.4
Disabled
Hyperthreading
Baseline Performance (median)
Saturday, August 17, 13
Challenges
Saturday, August 17, 13
Saturday, August 17, 13
Options
Saturday, August 17, 13
Options
• Scale Horizontally (more shards)
Saturday, August 17, 13
Options
• Scale Horizontally (more shards)
• Scale Vertically (SSD, bigger drives)
Saturday, August 17, 13
Options
• Scale Horizontally (more shards)
• Scale Vertically (SSD, bigger drives)
• Change architecture
Saturday, August 17, 13
Saturday, August 17, 13
Architecture Changes
Saturday, August 17, 13
Architecture Changes
• Ongoing conversation
Saturday, August 17, 13
Architecture Changes
• Ongoing conversation
• Separate logical/physical shards
Saturday, August 17, 13
Architecture Changes
• Ongoing conversation
• Separate logical/physical shards
• Complex
Saturday, August 17, 13
Architecture Changes
• Ongoing conversation
• Separate logical/physical shards
• Complex
• Server failure
Saturday, August 17, 13
Architecture Changes
• Ongoing conversation
• Separate logical/physical shards
• Complex
• Server failure
• Migrating data
Saturday, August 17, 13
Architecture Changes
• Ongoing conversation
• Separate logical/physical shards
• Complex
• Server failure
• Migrating data
• Consistency
Saturday, August 17, 13
Monitoring
Saturday, August 17, 13
Graphite
Saturday, August 17, 13
Stacked Search Timers
Saturday, August 17, 13
Ganglia
Saturday, August 17, 13
Saturday, August 17, 13
Nagios
Saturday, August 17, 13
Saturday, August 17, 13
Saturday, August 17, 13
Takeaways
Saturday, August 17, 13
K.I.S.S.
Saturday, August 17, 13
Use Proven
Technologies
Saturday, August 17, 13
Saturday, August 17, 13
Understand Your Stack
Saturday, August 17, 13
Measure Everything
Saturday, August 17, 13
Work at Etsy ;-)
Saturday, August 17, 13
Connect
http://www.meetup.com/Web-Performance-Boston/
www.etsy.com/careers
jonathan@etsy.com
@jonathanklein
Saturday, August 17, 13

More Related Content

What's hot

Going crazy with Varnish and Symfony
Going crazy with Varnish and SymfonyGoing crazy with Varnish and Symfony
Going crazy with Varnish and Symfony
David de Boer
 
A reviravolta do desenvolvimento web
A reviravolta do desenvolvimento webA reviravolta do desenvolvimento web
A reviravolta do desenvolvimento web
Wallace Reis
 
Single page apps with drupal 7
Single page apps with drupal 7Single page apps with drupal 7
Single page apps with drupal 7
Chris Tankersley
 
Php through the eyes of a hoster
Php through the eyes of a hosterPhp through the eyes of a hoster
Php through the eyes of a hoster
Combell NV
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
Shengyou Fan
 
PyCon Russia 2014 - Auto Scale in the Cloud
PyCon Russia 2014 - Auto Scale in the CloudPyCon Russia 2014 - Auto Scale in the Cloud
PyCon Russia 2014 - Auto Scale in the Cloud
Simone Soldateschi
 
My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009
Cosimo Streppone
 
A rough guide to JavaScript Performance
A rough guide to JavaScript PerformanceA rough guide to JavaScript Performance
A rough guide to JavaScript Performance
allmarkedup
 
HTTP caching with Varnish
HTTP caching with VarnishHTTP caching with Varnish
HTTP caching with Varnish
David de Boer
 
Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011
Wim Godden
 
Scalable talk notes
Scalable talk notesScalable talk notes
Scalable talk notes
Perrin Harkins
 
Mojolicious and REST
Mojolicious and RESTMojolicious and REST
Mojolicious and REST
Jonas Brømsø
 
Mojolicious
MojoliciousMojolicious
Mojolicious
Marcus Ramberg
 
Php internal architecture
Php internal architecturePhp internal architecture
Php internal architecture
Elizabeth Smith
 
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Alberto Perdomo
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notes
Perrin Harkins
 
Встраиваем python для появления аналитики в проекте на С++. Александр Боргард...
Встраиваем python для появления аналитики в проекте на С++. Александр Боргард...Встраиваем python для появления аналитики в проекте на С++. Александр Боргард...
Встраиваем python для появления аналитики в проекте на С++. Александр Боргард...
corehard_by
 
Varnish Cache and its usage in the real world!
Varnish Cache and its usage in the real world!Varnish Cache and its usage in the real world!
Varnish Cache and its usage in the real world!
Ivan Chepurnyi
 

What's hot (20)

Going crazy with Varnish and Symfony
Going crazy with Varnish and SymfonyGoing crazy with Varnish and Symfony
Going crazy with Varnish and Symfony
 
A reviravolta do desenvolvimento web
A reviravolta do desenvolvimento webA reviravolta do desenvolvimento web
A reviravolta do desenvolvimento web
 
Single page apps with drupal 7
Single page apps with drupal 7Single page apps with drupal 7
Single page apps with drupal 7
 
DevOps for Developers
DevOps for DevelopersDevOps for Developers
DevOps for Developers
 
Php through the eyes of a hoster
Php through the eyes of a hosterPhp through the eyes of a hoster
Php through the eyes of a hoster
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
 
Dev ops for developers
Dev ops for developersDev ops for developers
Dev ops for developers
 
PyCon Russia 2014 - Auto Scale in the Cloud
PyCon Russia 2014 - Auto Scale in the CloudPyCon Russia 2014 - Auto Scale in the Cloud
PyCon Russia 2014 - Auto Scale in the Cloud
 
My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009
 
A rough guide to JavaScript Performance
A rough guide to JavaScript PerformanceA rough guide to JavaScript Performance
A rough guide to JavaScript Performance
 
HTTP caching with Varnish
HTTP caching with VarnishHTTP caching with Varnish
HTTP caching with Varnish
 
Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011
 
Scalable talk notes
Scalable talk notesScalable talk notes
Scalable talk notes
 
Mojolicious and REST
Mojolicious and RESTMojolicious and REST
Mojolicious and REST
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Php internal architecture
Php internal architecturePhp internal architecture
Php internal architecture
 
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
Strangers In The Night: Ruby, Rack y Sinatra - Herramientas potentes para con...
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notes
 
Встраиваем python для появления аналитики в проекте на С++. Александр Боргард...
Встраиваем python для появления аналитики в проекте на С++. Александр Боргард...Встраиваем python для появления аналитики в проекте на С++. Александр Боргард...
Встраиваем python для появления аналитики в проекте на С++. Александр Боргард...
 
Varnish Cache and its usage in the real world!
Varnish Cache and its usage in the real world!Varnish Cache and its usage in the real world!
Varnish Cache and its usage in the real world!
 

Viewers also liked

PHP High Availability High Performance
PHP High Availability High PerformancePHP High Availability High Performance
PHP High Availability High Performance
Amazee Labs
 
How to scale PHP applications
How to scale PHP applicationsHow to scale PHP applications
How to scale PHP applications
Enrico Zimuel
 
Architechture of a social network for 30M users
Architechture of a social network for 30M usersArchitechture of a social network for 30M users
Architechture of a social network for 30M users
Fotostrana
 
MOSC2012 - Building High-Performance Web-Application with PHP & MongoDB
MOSC2012 - Building High-Performance Web-Application with PHP & MongoDBMOSC2012 - Building High-Performance Web-Application with PHP & MongoDB
MOSC2012 - Building High-Performance Web-Application with PHP & MongoDBr1dotmy
 
High Performance Php My Sql Scaling Techniques
High Performance Php My Sql Scaling TechniquesHigh Performance Php My Sql Scaling Techniques
High Performance Php My Sql Scaling Techniques
ZendCon
 
Scaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHPScaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHP
120bi
 
Slide Seminar PHP Indonesia - NoSQL Redis
Slide Seminar PHP Indonesia - NoSQL RedisSlide Seminar PHP Indonesia - NoSQL Redis
Slide Seminar PHP Indonesia - NoSQL Redis
rifqi alfian
 
Redis in Practice: Scenarios, Performance and Practice with PHP
Redis in Practice: Scenarios, Performance and Practice with PHPRedis in Practice: Scenarios, Performance and Practice with PHP
Redis in Practice: Scenarios, Performance and Practice with PHP
Chen Huang
 
Redis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRedis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRicard Clau
 
Beyond relational database - Building high performance websites using Redis a...
Beyond relational database - Building high performance websites using Redis a...Beyond relational database - Building high performance websites using Redis a...
Beyond relational database - Building high performance websites using Redis a...Dinh Pham
 
Riding rails for 10 years
Riding rails for 10 yearsRiding rails for 10 years
Riding rails for 10 yearsjduff
 
EscConf - Deep Dive Frontend Optimization
EscConf - Deep Dive Frontend OptimizationEscConf - Deep Dive Frontend Optimization
EscConf - Deep Dive Frontend Optimization
Jonathan Klein
 
UXFest - RUM Distillation 101
UXFest - RUM Distillation 101UXFest - RUM Distillation 101
UXFest - RUM Distillation 101
Jonathan Klein
 
JSDay 2013 - Practical Responsive Web Design
JSDay 2013 - Practical Responsive Web DesignJSDay 2013 - Practical Responsive Web Design
JSDay 2013 - Practical Responsive Web Design
Jonathan Klein
 
Edge Conf Rendering Performance Panel
Edge Conf Rendering Performance PanelEdge Conf Rendering Performance Panel
Edge Conf Rendering Performance Panel
Jonathan Klein
 
DIY Synthetic: Private WebPagetest Magic
DIY Synthetic: Private WebPagetest MagicDIY Synthetic: Private WebPagetest Magic
DIY Synthetic: Private WebPagetest Magic
Jonathan Klein
 
PHP On Steroids
PHP On SteroidsPHP On Steroids
PHP On Steroids
Jonathan Oxer
 
BTV PHP - Building Fast Websites
BTV PHP - Building Fast WebsitesBTV PHP - Building Fast Websites
BTV PHP - Building Fast Websites
Jonathan Klein
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?
Ravi Raj
 
Scaling php applications with redis
Scaling php applications with redisScaling php applications with redis
Scaling php applications with redis
jimbojsb
 

Viewers also liked (20)

PHP High Availability High Performance
PHP High Availability High PerformancePHP High Availability High Performance
PHP High Availability High Performance
 
How to scale PHP applications
How to scale PHP applicationsHow to scale PHP applications
How to scale PHP applications
 
Architechture of a social network for 30M users
Architechture of a social network for 30M usersArchitechture of a social network for 30M users
Architechture of a social network for 30M users
 
MOSC2012 - Building High-Performance Web-Application with PHP & MongoDB
MOSC2012 - Building High-Performance Web-Application with PHP & MongoDBMOSC2012 - Building High-Performance Web-Application with PHP & MongoDB
MOSC2012 - Building High-Performance Web-Application with PHP & MongoDB
 
High Performance Php My Sql Scaling Techniques
High Performance Php My Sql Scaling TechniquesHigh Performance Php My Sql Scaling Techniques
High Performance Php My Sql Scaling Techniques
 
Scaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHPScaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHP
 
Slide Seminar PHP Indonesia - NoSQL Redis
Slide Seminar PHP Indonesia - NoSQL RedisSlide Seminar PHP Indonesia - NoSQL Redis
Slide Seminar PHP Indonesia - NoSQL Redis
 
Redis in Practice: Scenarios, Performance and Practice with PHP
Redis in Practice: Scenarios, Performance and Practice with PHPRedis in Practice: Scenarios, Performance and Practice with PHP
Redis in Practice: Scenarios, Performance and Practice with PHP
 
Redis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRedis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHP
 
Beyond relational database - Building high performance websites using Redis a...
Beyond relational database - Building high performance websites using Redis a...Beyond relational database - Building high performance websites using Redis a...
Beyond relational database - Building high performance websites using Redis a...
 
Riding rails for 10 years
Riding rails for 10 yearsRiding rails for 10 years
Riding rails for 10 years
 
EscConf - Deep Dive Frontend Optimization
EscConf - Deep Dive Frontend OptimizationEscConf - Deep Dive Frontend Optimization
EscConf - Deep Dive Frontend Optimization
 
UXFest - RUM Distillation 101
UXFest - RUM Distillation 101UXFest - RUM Distillation 101
UXFest - RUM Distillation 101
 
JSDay 2013 - Practical Responsive Web Design
JSDay 2013 - Practical Responsive Web DesignJSDay 2013 - Practical Responsive Web Design
JSDay 2013 - Practical Responsive Web Design
 
Edge Conf Rendering Performance Panel
Edge Conf Rendering Performance PanelEdge Conf Rendering Performance Panel
Edge Conf Rendering Performance Panel
 
DIY Synthetic: Private WebPagetest Magic
DIY Synthetic: Private WebPagetest MagicDIY Synthetic: Private WebPagetest Magic
DIY Synthetic: Private WebPagetest Magic
 
PHP On Steroids
PHP On SteroidsPHP On Steroids
PHP On Steroids
 
BTV PHP - Building Fast Websites
BTV PHP - Building Fast WebsitesBTV PHP - Building Fast Websites
BTV PHP - Building Fast Websites
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?
 
Scaling php applications with redis
Scaling php applications with redisScaling php applications with redis
Scaling php applications with redis
 

Similar to Scaling PHP to 40 Million Uniques

Node Tools For Your Grails Toolbox - Gr8Conf 2013
Node Tools For Your Grails Toolbox - Gr8Conf 2013Node Tools For Your Grails Toolbox - Gr8Conf 2013
Node Tools For Your Grails Toolbox - Gr8Conf 2013
zanthrash
 
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...PatrickCrompton
 
Front end-performance
Front end-performanceFront end-performance
Front end-performance
Richard Powell
 
High Performance WordPress - WordCamp Jerusalem 2010
High Performance WordPress - WordCamp Jerusalem 2010High Performance WordPress - WordCamp Jerusalem 2010
High Performance WordPress - WordCamp Jerusalem 2010Barry Abrahamson
 
Bkbiet day1
Bkbiet day1Bkbiet day1
Bkbiet day1
mihirio
 
Use drupal 8 as a framework the romance recalibration
Use drupal 8 as a framework   the romance recalibrationUse drupal 8 as a framework   the romance recalibration
Use drupal 8 as a framework the romance recalibration
Kevin Wenger
 
Ab(Using) the MetaCPAN API for Fun and Profit v2013
Ab(Using) the MetaCPAN API for Fun and Profit v2013Ab(Using) the MetaCPAN API for Fun and Profit v2013
Ab(Using) the MetaCPAN API for Fun and Profit v2013
Olaf Alders
 
Rapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoop
Raymond Camden
 
Phpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and MinkPhpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and MinkRichard Tuin
 
Hammering Responsive Web Design Into Shape
Hammering Responsive Web Design Into ShapeHammering Responsive Web Design Into Shape
Hammering Responsive Web Design Into Shape
Ken Tabor
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
Pablo Godel
 
Writing infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLWriting infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQL
Gabriele Bartolini
 
Become Master of Your Own Universe - DIBI 2013
Become Master of Your Own Universe - DIBI 2013Become Master of Your Own Universe - DIBI 2013
Become Master of Your Own Universe - DIBI 2013
Phil Sturgeon
 
PHP Output Buffering
PHP Output BufferingPHP Output Buffering
PHP Output BufferingDave Ross
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Pablo Godel
 
HTML5 is the future of mobile
 HTML5 is the future of mobile HTML5 is the future of mobile
HTML5 is the future of mobile
Sergi Mansilla
 
Why and How to integrate Hadoop and NoSQL?
Why and How to integrate Hadoop and NoSQL?Why and How to integrate Hadoop and NoSQL?
Why and How to integrate Hadoop and NoSQL?
Tugdual Grall
 
One Page, One App -or- How to Write a Crawlable Single Page Web App
One Page, One App -or- How to Write a Crawlable Single Page Web AppOne Page, One App -or- How to Write a Crawlable Single Page Web App
One Page, One App -or- How to Write a Crawlable Single Page Web App
technicolorenvy
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Fabio Akita
 
WebRTC: What? How? Why? - ClueCon 2013
WebRTC: What? How? Why? - ClueCon 2013WebRTC: What? How? Why? - ClueCon 2013
WebRTC: What? How? Why? - ClueCon 2013
Mojo Lingo
 

Similar to Scaling PHP to 40 Million Uniques (20)

Node Tools For Your Grails Toolbox - Gr8Conf 2013
Node Tools For Your Grails Toolbox - Gr8Conf 2013Node Tools For Your Grails Toolbox - Gr8Conf 2013
Node Tools For Your Grails Toolbox - Gr8Conf 2013
 
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
 
Front end-performance
Front end-performanceFront end-performance
Front end-performance
 
High Performance WordPress - WordCamp Jerusalem 2010
High Performance WordPress - WordCamp Jerusalem 2010High Performance WordPress - WordCamp Jerusalem 2010
High Performance WordPress - WordCamp Jerusalem 2010
 
Bkbiet day1
Bkbiet day1Bkbiet day1
Bkbiet day1
 
Use drupal 8 as a framework the romance recalibration
Use drupal 8 as a framework   the romance recalibrationUse drupal 8 as a framework   the romance recalibration
Use drupal 8 as a framework the romance recalibration
 
Ab(Using) the MetaCPAN API for Fun and Profit v2013
Ab(Using) the MetaCPAN API for Fun and Profit v2013Ab(Using) the MetaCPAN API for Fun and Profit v2013
Ab(Using) the MetaCPAN API for Fun and Profit v2013
 
Rapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoopRapid API Development with LoopBack/StrongLoop
Rapid API Development with LoopBack/StrongLoop
 
Phpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and MinkPhpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and Mink
 
Hammering Responsive Web Design Into Shape
Hammering Responsive Web Design Into ShapeHammering Responsive Web Design Into Shape
Hammering Responsive Web Design Into Shape
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
 
Writing infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLWriting infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQL
 
Become Master of Your Own Universe - DIBI 2013
Become Master of Your Own Universe - DIBI 2013Become Master of Your Own Universe - DIBI 2013
Become Master of Your Own Universe - DIBI 2013
 
PHP Output Buffering
PHP Output BufferingPHP Output Buffering
PHP Output Buffering
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
 
HTML5 is the future of mobile
 HTML5 is the future of mobile HTML5 is the future of mobile
HTML5 is the future of mobile
 
Why and How to integrate Hadoop and NoSQL?
Why and How to integrate Hadoop and NoSQL?Why and How to integrate Hadoop and NoSQL?
Why and How to integrate Hadoop and NoSQL?
 
One Page, One App -or- How to Write a Crawlable Single Page Web App
One Page, One App -or- How to Write a Crawlable Single Page Web AppOne Page, One App -or- How to Write a Crawlable Single Page Web App
One Page, One App -or- How to Write a Crawlable Single Page Web App
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
 
WebRTC: What? How? Why? - ClueCon 2013
WebRTC: What? How? Why? - ClueCon 2013WebRTC: What? How? Why? - ClueCon 2013
WebRTC: What? How? Why? - ClueCon 2013
 

Recently uploaded

Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 

Recently uploaded (20)

Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 

Scaling PHP to 40 Million Uniques