SlideShare a Scribd company logo
CASE STUDY: EMUSIC
   WordPress in the Enterprise
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
EMUSIC IS BUILT ON:

• Java                   • Day   CRX

• Struts   1             • Catalog   Service

• Hibernate              • Ratings   Service

• JBoss                  • Image   Service

• Oracle

• Spring
WE’RE MOVING!
(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   definition 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,
 weren’t exciting

• Other
      developers preferred
 WordPress
WORDPRESS WINS!
    But it wasn’t easy...
WHAT WORDPRESS OFFERS
• 11   Database Tables

• Custom    Post Types

• Taxonomies

• Media    Management

• User   Management

• Plugin   Management

• XML-RPC API
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”?
YES!
It does all of these things!
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!
MOVING CONTENT TO
    WORDPRESS
Do yourself a favor, and do some PLANNING
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
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...
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!
EXTEND
Building plugins to suit the needs of your business
PLUGINS ARE AWESOME!
There are hundreds that already exist that you can start using
                       immediately!
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
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
I AM GUILTY OF THIS!
  Movies, Audio, Like Buttons, etc...
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
AVATAR
Gives users an interface to upload an “avatar” / photo right in
          the WordPress admin - leverages Cloud
CLOUD
Just the CDN code from W3 Total Cache
MINIFY
Combine all of your JavaScript and CSS - it just works (in the
                  way I want it to work)!
SLOT MACHINE
Schedule content in specific “slots” on the site
A HYBRID APPROACH
WordPress powered pages / XML-RPC-supplied data
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
BACK TO THOSE QUESTIONS
  RAISED / MYTHS ABOUT
       WORDPRESS
       Does it do X, Y, or Z?
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
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
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
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
WHAT WE LEARNED
   (sometimes painfully!)
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
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
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
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!
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
THANK YOU!
           @wonderboymusic
http://www.facebook.com/scott.c.taylor
        http://www.scotty-t.com
 http://www.emusic.com/author/scott/

More Related Content

PDF
WordPress: Getting Under the Hood
PDF
Live Coverage at The New York Times
PDF
2015 WordCamp Maine Keynote
PDF
REST In Action: The Live Coverage Platform at the New York Times
PDF
A Day of REST
PDF
WordPress 4.4 and Beyond
KEY
WordPress APIs
PPTX
WordPress Rest API
WordPress: Getting Under the Hood
Live Coverage at The New York Times
2015 WordCamp Maine Keynote
REST In Action: The Live Coverage Platform at the New York Times
A Day of REST
WordPress 4.4 and Beyond
WordPress APIs
WordPress Rest API

What's hot (19)

PDF
My Contributor Story
PDF
Trying Out Tomorrow’s WordPress Today
PDF
Python to go
PDF
It Takes a Village to Make WordPress
PDF
Modern websites in 2020 and Joomla
PPTX
Untangling fall2017 week1
PPTX
Untangling spring week12
PDF
Riak at Posterous
PDF
Migrate PHP E-Commerce Site to Go
PPTX
Untangling fall2017 week2
PDF
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
PDF
Unlocking the Magical Powers of WP_Query
PDF
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
PDF
Hello world - intro to node js
PDF
Merging two big Symfony based applications - SymfonyCon 2017
PPTX
Managing changes to eZPublish Database
PPTX
Untangling spring week11
PPTX
Saving Time By Testing With Jest
PPTX
Untangling - fall2017 - week 8
My Contributor Story
Trying Out Tomorrow’s WordPress Today
Python to go
It Takes a Village to Make WordPress
Modern websites in 2020 and Joomla
Untangling fall2017 week1
Untangling spring week12
Riak at Posterous
Migrate PHP E-Commerce Site to Go
Untangling fall2017 week2
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
Unlocking the Magical Powers of WP_Query
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Hello world - intro to node js
Merging two big Symfony based applications - SymfonyCon 2017
Managing changes to eZPublish Database
Untangling spring week11
Saving Time By Testing With Jest
Untangling - fall2017 - week 8
Ad

Viewers also liked (20)

PDF
WordCamp SF 2011: Debugging in WordPress
PDF
WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...
PDF
How Testing Changed My Life
PDF
E-commerce & WordPress: Navigating the Minefield
PDF
Coding, Scaling, and Deploys... Oh My!
PDF
Taking WordPress to the World : Options for a Multilingual Site | WordCamp Sa...
PDF
Don't Repeat Your Mistakes: JavaScript Unit Testing
PDF
DNS exfiltration using sqlmap
PDF
State of the Word 2016
PDF
Pushing Python: Building a High Throughput, Low Latency System
PDF
State of the Word 2015, WordCamp US
PDF
Twitter Presentation: #APIConSF
PPTX
Time to climb-- results of national study of disadvantaged entrepreneurs ...
PDF
ColdFusion for Penetration Testers
PPTX
Ako na rýchly web - WordCamp Žilina 2016 - xKatka
PDF
Customize Your WordPress Theme the Right Way
PPTX
The power of a video library
PDF
Lecture - (WordPress) Usability Issues
PPTX
5-Point Online Marketing Training Regimen
PDF
WordCamp Nashville 2016 "Imposter Syndrome'
WordCamp SF 2011: Debugging in WordPress
WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...
How Testing Changed My Life
E-commerce & WordPress: Navigating the Minefield
Coding, Scaling, and Deploys... Oh My!
Taking WordPress to the World : Options for a Multilingual Site | WordCamp Sa...
Don't Repeat Your Mistakes: JavaScript Unit Testing
DNS exfiltration using sqlmap
State of the Word 2016
Pushing Python: Building a High Throughput, Low Latency System
State of the Word 2015, WordCamp US
Twitter Presentation: #APIConSF
Time to climb-- results of national study of disadvantaged entrepreneurs ...
ColdFusion for Penetration Testers
Ako na rýchly web - WordCamp Žilina 2016 - xKatka
Customize Your WordPress Theme the Right Way
The power of a video library
Lecture - (WordPress) Usability Issues
5-Point Online Marketing Training Regimen
WordCamp Nashville 2016 "Imposter Syndrome'
Ad

Similar to eMusic: WordPress in the Enterprise (20)

PPTX
WordPress: Smart Ideas for Startup - SMW torino 2012
KEY
WordPress - Open Source Overview Presentation
PDF
WordPress Beginners Workshop
PPTX
Business 2.0 with WordPress
PPTX
WordPress DK at DrupalCamp Copenhagen 2009
PPT
Wordpress Beyond A Blog Word Camp Toronto08
PPTX
Part1 learn thelingo
PPTX
WordPress Use Cases
PDF
WordPress: After The Install
PDF
Beginning WordPress Workshop
KEY
WordPress for Beginners | WordCamp Birmingham
PPTX
Meetup which approach to choose?
PPTX
Tampa Bay WordPress Meetup - August 13 2014 - WordPress 4.0
PPTX
PEPY Wordpress workshop-01
PPT
Just dev it presenation modified word press 101
PDF
WordPress: More-than-blog-software
PDF
WordPress 101
PPTX
WORDPRESS
KEY
Empowering Non-Profits with WordPress
WordPress: Smart Ideas for Startup - SMW torino 2012
WordPress - Open Source Overview Presentation
WordPress Beginners Workshop
Business 2.0 with WordPress
WordPress DK at DrupalCamp Copenhagen 2009
Wordpress Beyond A Blog Word Camp Toronto08
Part1 learn thelingo
WordPress Use Cases
WordPress: After The Install
Beginning WordPress Workshop
WordPress for Beginners | WordCamp Birmingham
Meetup which approach to choose?
Tampa Bay WordPress Meetup - August 13 2014 - WordPress 4.0
PEPY Wordpress workshop-01
Just dev it presenation modified word press 101
WordPress: More-than-blog-software
WordPress 101
WORDPRESS
Empowering Non-Profits with WordPress

Recently uploaded (20)

PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Electronic commerce courselecture one. Pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation theory and applications.pdf
PDF
KodekX | Application Modernization Development
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Approach and Philosophy of On baking technology
PPTX
MYSQL Presentation for SQL database connectivity
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPT
Teaching material agriculture food technology
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Electronic commerce courselecture one. Pdf
A Presentation on Artificial Intelligence
Diabetes mellitus diagnosis method based random forest with bat algorithm
Reach Out and Touch Someone: Haptics and Empathic Computing
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
NewMind AI Weekly Chronicles - August'25 Week I
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation theory and applications.pdf
KodekX | Application Modernization Development
The Rise and Fall of 3GPP – Time for a Sabbatical?
Approach and Philosophy of On baking technology
MYSQL Presentation for SQL database connectivity
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Review of recent advances in non-invasive hemoglobin estimation
Teaching material agriculture food technology
“AI and Expert System Decision Support & Business Intelligence Systems”
Agricultural_Statistics_at_a_Glance_2022_0.pdf
The AUB Centre for AI in Media Proposal.docx

eMusic: WordPress in the Enterprise

  • 1. CASE STUDY: EMUSIC WordPress in the Enterprise
  • 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
  • 4. WE’RE MOVING! (Gradually!) to WordPress for all of our CMS needs
  • 5. WEB SERVICES + WORDPRESS A majority of the hardcore business logic will live in services, but the content, UI, and community will live in WordPress
  • 6. GOODBYE, DAY CRX • the definition of Legacy • we couldn’t upgrade • no longer supported • no UI • coding nightmare • we don’t miss it!
  • 7. SORRY, DRUPAL :( • None of us knew it • Thethings we did know, weren’t exciting • Other developers preferred WordPress
  • 8. WORDPRESS WINS! But it wasn’t easy...
  • 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”?
  • 11. YES! It does all of these things!
  • 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!
  • 17. EXTEND Building plugins to suit the needs of your business
  • 18. PLUGINS ARE AWESOME! There are hundreds that already exist that you can start using immediately!
  • 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
  • 24. CLOUD Just the CDN code from W3 Total Cache
  • 25. MINIFY Combine all of your JavaScript and CSS - it just works (in the way I want it to work)!
  • 26. SLOT MACHINE Schedule content in specific “slots” on the site
  • 27. A HYBRID APPROACH WordPress powered pages / XML-RPC-supplied data
  • 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
  • 34. WHAT WE LEARNED (sometimes painfully!)
  • 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
  • 40. THANK YOU! @wonderboymusic http://www.facebook.com/scott.c.taylor http://www.scotty-t.com http://www.emusic.com/author/scott/