Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
• ~400,000 subscribers who pay monthly for downloads
• ~6 million visits a month
• Billions of HTTP requests / Millions of page views
EMUSIC IS BUILT ON:
• Java • Day CRX
• Struts 1 • Catalog Service
• Hibernate • Ratings Service
• JBoss • Image Service
(Gradually!) to WordPress for all of our CMS needs
WEB SERVICES + WORDPRESS
A majority of the hardcore business logic will live in services, but
the content, UI, and community will live in WordPress
GOODBYE, DAY CRX
• the deﬁnition of Legacy
• we couldn’t upgrade
• no longer supported
• no UI
• coding nightmare
• we don’t miss it!
SORRY, DRUPAL :(
• None of us knew it
• Thethings we did know,
WHAT WORDPRESS OFFERS
• 11 Database Tables
• Custom Post Types
• Media Management
• User Management
• Plugin Management
• XML-RPC API
DOES WORDPRESS OFFER?
• 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”?
LEARN THE VOCABULARY!
• What are Custom Post Types?
• Theming - what ﬂexibility is available to me?
• How can we connect our data using custom Taxonomies?
• Research Plugins
• Read the Codex!
MOVING CONTENT TO
Do yourself a favor, and do some PLANNING
• Make an inventory of your content
• Make a site map
on how to export the content - WordPress schema?
• Strategize a MODULAR import process
• Don’t import unless you can easily re-import / update (deltas)
• Allow for turbulence / changing requirements
THERE WILL BE BLOOD
with the best planning, there will be many painful
• Hey, Iforgot to tell you... every piece of content HAS to be
• 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...
• You will probably end up building things that do not exist
• 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 ﬁrst!
Building plugins to suit the needs of your business
PLUGINS ARE AWESOME!
There are hundreds that already exist that you can start using
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
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
I AM GUILTY OF THIS!
Movies, Audio, Like Buttons, etc...
PLUGINS I WROTE OUT OF
• eMusic Post Types • eMusic Calendar
• eMusic Radio • eMusic XML-RPC
• eMusic Comments • Like Buttons
• eMusic BuddyPress • Minify
• Avatar • Slot Machine
• Cloud • eMusic Shortcodes
Gives users an interface to upload an “avatar” / photo right in
the WordPress admin - leverages Cloud
way I want it to work)!
Schedule content in speciﬁc “slots” on the site
A HYBRID APPROACH
WordPress powered pages / XML-RPC-supplied data
• 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
• Optimizations had to be done to lower query count
BACK TO THOSE QUESTIONS
RAISED / MYTHS ABOUT
Does it do X, Y, or Z?
• Batcache / Memcached
plugins are your conduit to
the Memcached backend for
the WP Object Cache
• PaulIrish’s HTML5
Boilerplate suggestions with
• YSlow! / Google Page Speed
WE USE A LOT OF AMAZON
• Elastic Load Balancing
• Elastic Compute Cloud (EC2)
• Simple Storage Service (S3)
• Relational Database Service (RDS)
• Downloads and Streams are
served from Amazon
COMPLEX DATA TYPES =
• 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
• Metadata = some ID linked to Key / Value pairs
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
• Kanye West, Katy Perry, Grizzly Bear, the list is endless
UNDERSTAND THE COST OF
• 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
PREPARE FOR MULTIPLE
• Local Dev
• Community Dev
• Staging - multiple
• Production - scales to multiple servers
• “Tools” - we block access to /wp-admin/
• XML-RPC servers
XML-RPC IS THE BRIDGE
BETWEEN NEW AND OLD
• Built right into WordPress
• Easily extensible
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
WRITE A BUNCH OF PHP /
MYSQL ON TOP OF
WordPress is, literally, a bunch of PHP and MySQL code. You can
always write something custom, but leverage what’s inside of
WordPress ﬁrst - do not reinvent the wheel, WordPress IS the
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