Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
To a thousand servers and beyond: scaling a mas...
Search
Nikolay Bachiyski
February 25, 2012
Programming
3
1.5k
To a thousand servers and beyond: scaling a massive PHP application
Stories of abstraction and scaling WordPress.com. And what they have in common.
Nikolay Bachiyski
February 25, 2012
Tweet
Share
More Decks by Nikolay Bachiyski
See All by Nikolay Bachiyski
React.js for WordPress Developers
nb
0
280
Building Calypso-like Applications
nb
3
840
Else Considered Harmful
nb
2
1k
On Learning
nb
2
790
WordPress: To OOP or not to OOP
nb
4
8k
On Creeds and Manifestos
nb
2
210
Welcome to the Chaos – The Distributed Workplace
nb
3
200
Взимане на продуктови решения (Making product decisions)
nb
0
150
Other Decks in Programming
See All in Programming
CSC307 Lecture 15
javiergs
PRO
0
220
AI活用のコスパを最大化する方法
ochtum
0
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
390
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
370
Python’s True Superpower
hynek
0
200
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
180
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.5k
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
200
Claude Code、ちょっとした工夫で開発体験が変わる
tigertora7571
0
200
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
220
猫の手も借りたい!ので AIエージェント猫を作って社内に放した話 Claude Code × Container Lambda の Slack Bot "DevNeko"
naramomi7
0
240
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
140
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
79
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
93
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
130
The browser strikes back
jonoalderson
0
760
Side Projects
sachag
455
43k
Balancing Empowerment & Direction
lara
5
930
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
190
エンジニアに許された特別な時間の終わり
watany
106
240k
Exploring anti-patterns in Rails
aemeredith
2
280
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
150
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
950
30 Presentation Tips
portentint
PRO
1
250
Transcript
To 1000 servers and beyond Nikolay Bachiyski PHPUK 2012
http://extrapolate.me/ @nikolayb
None
None
None
Stinson Beach, July 2007
Budapest, Oct 2011
Jul, 2007 65MM Feb, 2011 800MM PV
2 stories
Story #1
Deep Pink Meet
Don’t like?
Beer Beheader =
None
None
Abstraction
None
Beer Theory
None
Want to be better?
Get to know the abstraction below
Servers are below
Story #2 Scaling WordPress.com
None
X
Deep Pink SAD
None
X
Deep Pink SAD
None
None
Users Blogs Blogs
No joins :(
None
SELECT * FROM wp_users WHERE id=43315 SELECT * FROM wp_posts
LIMIT 10
HyperDB
None
SELECT * FROM wp_users WHERE id=43315
Query parsing
add_db_table('user', 'wp_users') Dataset Table name
add_db_server('user', 0, 1, 0,
'db42.wordpress.com',…) Dataset Partition Read Write Slave
Failover X
Can work without
http://wordpress.org/extend/plugins/hyperdb/
None
None
C C C C
$count = wp_cache_get('posts', 'counts'); if ( false !== $count )
return $count; $count = $wpdb-‐>get_results($complex_query);
Output caching
10% 90% reads writes
C C C C
C C C C
Deep Pink SAD
Datacenter
C C sane sane
C C crazy sane Update
C C crazy sane Stale!
C C crazy crazy
Deploy
trunk/
Branch in code
~100 commits a day
~100 deploys a day
to ~1000 servers
One-click
None
Fast!
wpdev@nikolay:~$ deploy wpcom Going to update from 47127 to 47128
Syncing wpcom SVN Mirrors ORD (0s)... LUV (0s)... SAT (0s)... Deploying wpcom revision 47128 ORD (3s)... SAT (5s)... LUV (6s)... Revision 47128 successfully deployed (8s)
None
None
Yeah, immediately!
Push to twitter
Push to Facebok
Stats
Spam checks
Index for search
Invalidate caches
Publish the post
ASYNC JOBS
None
$job_id = queue_async_job($data, 'encode_video');
Priorities
Deferred jobs
None
PHP & MySQL
http://code.trac.wordpress.org/wiki/JobsDocs http://code.trac.wordpress.org/browser/jobs
Integration
Hacking
None