2. EMUSIC
eMusic
is
a
digital
music
service
for
independent-‐minded
music
lovers.
eMusic
Members
sign
up
for
a
monthly
subscrip9on
that
allows
them
to
discover,
download
and
own
music.
eMusic’s
editors
and
writers
put
music
into
context
through
mix
of
new
and
old
music
discovery
tools.
eMusic
is
headquartered
in
New
York
with
an
office
in
London.
• ~400,000 subscribers who pay monthly for downloads
• ~6 million visits a month
• Billions of HTTP requests / Millions of page views
3. EMUSIC IS BUILT ON:
• Java • Day CRX
• Struts 1 • Catalog Service
• Hibernate • Ratings Service
• JBoss • Image Service
• Oracle
• Spring
9. WHAT WORDPRESS OFFERS
• 11 Database Tables
• Custom Post Types
• Taxonomies
• Media Management
• User Management
• Plugin Management
• XML-RPC API
10. DOES WORDPRESS OFFER?
• Scaling
• Complex Data Types
• Complex User Roles
• Complex Marketing Tools
• You aren’t putting your WHOLE website in there, are you?
• Who uses WordPress in the “real world”?
12. LEARN THE VOCABULARY!
• What are Custom Post Types?
• Theming - what flexibility is available to me?
• How can we connect our data using custom Taxonomies?
• Research Plugins
• Read the Codex!
13. MOVING CONTENT TO
WORDPRESS
Do yourself a favor, and do some PLANNING
14. PLANNING
• Make an inventory of your content
• Make a site map
• Agree
on how to export the content - WordPress schema?
XML files?
• Strategize a MODULAR import process
• Don’t import unless you can easily re-import / update (deltas)
• Allow for turbulence / changing requirements
15. THERE WILL BE BLOOD
(GOTCHAS)
• Even
with the best planning, there will be many painful
moments
• Hey, Iforgot to tell you... every piece of content HAS to be
regionalized
• We’re used to doing X, where do I do that in WordPress -
oh wait.... did I not already tell you that?
• Something weird is happening, did something import wrong
- oh, you need to re-import all of the content? Yikes! Ok...
16. NEW FEATURES
• You will probably end up building things that do not exist
already
• Yes, plugins
are awesome, but they are not all A+ quality and
ready to build your business on
• Somebusiness requirements may not have been tackled by
the WordPress community, you can be the first!
19. PLUGINS WE USE
• Batcache - Memcached full-page caching mechanism
• bbPress - Bolt-on message boards (shares users!)
• BuddyPress - Bolt-on social (shares users!)
• Gravity Forms - Customer Service loves it!
• Google Sitemap Generator
• Jetpack - not yet, but I’m sure we will
• Akismet
20. PLUGINS AREN’T PERFECT
• MOST aren’t updated regularly
• MOST don’t take your Custom Post Types into account
• MOST (NONE?) have no (any) clue that you are regionalizing
your entire site
• Plugin authors aren’t required to do security audits
• Most authors don’t take High Availability and Object caching
into account
21. I AM GUILTY OF THIS!
Movies, Audio, Like Buttons, etc...
22. PLUGINS I WROTE OUT OF
NECESSITY
• eMusic Post Types • eMusic Calendar
• eMusic Radio • eMusic XML-RPC
• eMusic Comments • Like Buttons
• eMusic BuddyPress • Minify
• Avatar • Slot Machine
• Cloud • eMusic Shortcodes
23. AVATAR
Gives users an interface to upload an “avatar” / photo right in
the WordPress admin - leverages Cloud
28. REGIONALIZATION
• US, UK, EU, CA or ALL
• Affects 90% of our WordPress database queries
• We use Custom Taxonomies
• Notwithout a cost - caching has to be in place to swallow
expensive queries
• Optimizations had to be done to lower query count
29. BACK TO THOSE QUESTIONS
RAISED / MYTHS ABOUT
WORDPRESS
Does it do X, Y, or Z?
30. SCALING
• Batcache / Memcached
plugins are your conduit to
the Memcached backend for
the WP Object Cache
• APC
• PaulIrish’s HTML5
Boilerplate suggestions with
caveats
• YSlow! / Google Page Speed
31. WE USE A LOT OF AMAZON
WEB SERVICES
• Elastic Load Balancing
• Elastic Compute Cloud (EC2)
• Simple Storage Service (S3)
• Relational Database Service (RDS)
• Downloads and Streams are
served from Amazon
32. COMPLEX DATA TYPES =
METADATA API
• Posts, Users, Comments have built-in Metadata capabilities
• SIMPLE APIs for saving complex objects as meta
• BYOT (Build your own tables) for your custom objects /
data needs, you can still use API functions and $wpdb
abstraction layer
• Metadata = some ID linked to Key / Value pairs
33. WHO USES WORDPRESS IN
THE “REAL WORLD”?
• New York Times
• During the tsunami, the NYTimes was at its height serving
10,000 simultaneous page views of certain articles
• CNN
• TechCrunch
• Kanye West, Katy Perry, Grizzly Bear, the list is endless
35. UNDERSTAND THE COST OF
EVERYTHING
• Plugins add code
• Plugins may add database queries
• Plugins may add CSS and JS unexpectedly
• Use Debug Bar plugin to keep yourself honest
• Learn what benchmarks matter to you and run tests often
36. PREPARE FOR MULTIPLE
ENVIRONMENTS
• Local Dev
• Community Dev
• Staging - multiple
• Production - scales to multiple servers
• “Tools” - we block access to /wp-admin/
• XML-RPC servers
37. XML-RPC IS THE BRIDGE
BETWEEN NEW AND OLD
• Built right into WordPress
• Easily extensible
• In
load-balanced environments, it is a great way to serve fancy
new content to your Legacy UI / back-end
• We send JSON in the responses - a pseudo API for complex
objects
38. WRITE A BUNCH OF PHP /
MYSQL ON TOP OF
WORDPRESS
WordPress is, literally, a bunch of PHP and MySQL code. You can
always write something custom, but leverage what’s inside of
WordPress first - do not reinvent the wheel, WordPress IS the
wheel!
39. WE’RE HIRING
If you live in New York City (or want to live in NYC) and are
really good at all things WordPress - talk to me or Ben Kotch