SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
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/

Contenu connexe

Tendances

My Contributor Story
My Contributor StoryMy Contributor Story
My Contributor StoryMarko Heijnen
 
Trying Out Tomorrow’s WordPress Today
Trying Out Tomorrow’s WordPress TodayTrying Out Tomorrow’s WordPress Today
Trying Out Tomorrow’s WordPress TodayDrewAPicture
 
Python to go
Python to goPython to go
Python to goWeng Wei
 
It Takes a Village to Make WordPress
It Takes a Village to Make WordPressIt Takes a Village to Make WordPress
It Takes a Village to Make WordPressDrewAPicture
 
Modern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaModern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaGeorge Wilson
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1Derek Jacoby
 
Untangling spring week12
Untangling spring week12Untangling spring week12
Untangling spring week12Derek Jacoby
 
Riak at Posterous
Riak at PosterousRiak at Posterous
Riak at Posterouscapotej
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoWeng Wei
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2Derek Jacoby
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...Gaetano Giunta
 
Unlocking the Magical Powers of WP_Query
Unlocking the Magical Powers of WP_QueryUnlocking the Magical Powers of WP_Query
Unlocking the Magical Powers of WP_QueryDustin Filippini
 
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...Frank van der Linden
 
Merging two big Symfony based applications - SymfonyCon 2017
Merging two big Symfony based applications - SymfonyCon 2017Merging two big Symfony based applications - SymfonyCon 2017
Merging two big Symfony based applications - SymfonyCon 2017Ivo Lukac
 
Managing changes to eZPublish Database
Managing changes to eZPublish DatabaseManaging changes to eZPublish Database
Managing changes to eZPublish DatabaseGaetano Giunta
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11Derek Jacoby
 
Saving Time By Testing With Jest
Saving Time By Testing With JestSaving Time By Testing With Jest
Saving Time By Testing With JestBen McCormick
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Derek Jacoby
 

Tendances (19)

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

En vedette

WordCamp SF 2011: Debugging in WordPress
WordCamp SF 2011: Debugging in WordPressWordCamp SF 2011: Debugging in WordPress
WordCamp SF 2011: Debugging in WordPressandrewnacin
 
WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...
WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...
WordCamp San Francisco 2011: Transients, Caching, and the Complexities of Mul...andrewnacin
 
E-commerce & WordPress: Navigating the Minefield
E-commerce & WordPress: Navigating the MinefieldE-commerce & WordPress: Navigating the Minefield
E-commerce & WordPress: Navigating the MinefieldIngenesis Limited
 
Coding, Scaling, and Deploys... Oh My!
Coding, Scaling, and Deploys... Oh My!Coding, Scaling, and Deploys... Oh My!
Coding, Scaling, and Deploys... Oh My!Mark Jaquith
 
Taking WordPress to the World : Options for a Multilingual Site | WordCamp Sa...
Taking WordPress to the World : Options for a Multilingual Site | WordCamp Sa...Taking WordPress to the World : Options for a Multilingual Site | WordCamp Sa...
Taking WordPress to the World : Options for a Multilingual Site | WordCamp Sa...Shannon Smith
 
Don't Repeat Your Mistakes: JavaScript Unit Testing
Don't Repeat Your Mistakes: JavaScript Unit TestingDon't Repeat Your Mistakes: JavaScript Unit Testing
Don't Repeat Your Mistakes: JavaScript Unit Testingaaronjorbin
 
DNS exfiltration using sqlmap
DNS exfiltration using sqlmapDNS exfiltration using sqlmap
DNS exfiltration using sqlmapMiroslav Stampar
 
State of the Word 2016
State of the Word 2016State of the Word 2016
State of the Word 2016photomatt
 
Pushing Python: Building a High Throughput, Low Latency System
Pushing Python: Building a High Throughput, Low Latency SystemPushing Python: Building a High Throughput, Low Latency System
Pushing Python: Building a High Throughput, Low Latency SystemKevin Ballard
 
State of the Word 2015, WordCamp US
State of the Word 2015, WordCamp USState of the Word 2015, WordCamp US
State of the Word 2015, WordCamp USphotomatt
 
Twitter Presentation: #APIConSF
Twitter Presentation: #APIConSFTwitter Presentation: #APIConSF
Twitter Presentation: #APIConSFRyan Choi
 
Time to climb-- results of national study of disadvantaged entrepreneurs ...
Time to climb-- results of national study of disadvantaged entrepreneurs ...Time to climb-- results of national study of disadvantaged entrepreneurs ...
Time to climb-- results of national study of disadvantaged entrepreneurs ...Richard Swart, PhD
 
ColdFusion for Penetration Testers
ColdFusion for Penetration TestersColdFusion for Penetration Testers
ColdFusion for Penetration TestersChris Gates
 
Ako na rýchly web - WordCamp Žilina 2016 - xKatka
Ako na rýchly web - WordCamp Žilina 2016 - xKatkaAko na rýchly web - WordCamp Žilina 2016 - xKatka
Ako na rýchly web - WordCamp Žilina 2016 - xKatkaKatarina Novotna
 
Customize Your WordPress Theme the Right Way
Customize Your WordPress Theme the Right WayCustomize Your WordPress Theme the Right Way
Customize Your WordPress Theme the Right WayDustin Hartzler
 
The power of a video library
The power of a video libraryThe power of a video library
The power of a video libraryLauren Jeffcoat
 
Lecture - (WordPress) Usability Issues
Lecture - (WordPress) Usability IssuesLecture - (WordPress) Usability Issues
Lecture - (WordPress) Usability IssuesRadka Nacheva
 
5-Point Online Marketing Training Regimen
5-Point Online Marketing Training Regimen5-Point Online Marketing Training Regimen
5-Point Online Marketing Training RegimenStoney deGeyter
 
WordCamp Nashville 2016 "Imposter Syndrome'
WordCamp Nashville 2016   "Imposter Syndrome'WordCamp Nashville 2016   "Imposter Syndrome'
WordCamp Nashville 2016 "Imposter Syndrome'Beth Downey
 

En vedette (20)

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

Similaire à eMusic: WordPress in the Enterprise

The things we found in your website
The things we found in your websiteThe things we found in your website
The things we found in your websitehernanibf
 
WordCamp 2012 - WordPress Webapps
WordCamp 2012 - WordPress WebappsWordCamp 2012 - WordPress Webapps
WordCamp 2012 - WordPress Webappstjasko
 
Coding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applicationsCoding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applicationsWekoslav Stefanovski
 
Oxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websiteOxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websitehernanibf
 
6.1 GeospatialWeb101.pptx.pptx
6.1 GeospatialWeb101.pptx.pptx6.1 GeospatialWeb101.pptx.pptx
6.1 GeospatialWeb101.pptx.pptxOmidRezaAbbasi1
 
Modern software architectures - PHP UK Conference 2015
Modern software architectures - PHP UK Conference 2015Modern software architectures - PHP UK Conference 2015
Modern software architectures - PHP UK Conference 2015Ricard Clau
 
Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Ricard Clau
 
Web APIs: The future of software
Web APIs: The future of softwareWeb APIs: The future of software
Web APIs: The future of softwareReuven Lerner
 
USG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysUSG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysEric Sembrat
 
Urbanesia - Development History
Urbanesia - Development HistoryUrbanesia - Development History
Urbanesia - Development HistoryBatista Harahap
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swaggerTony Tam
 
Joomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesJoomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesAndy_Gaskell
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's ArchitectureTony Tam
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_phpJeanho Chu
 
How does the Internet Work?
How does the Internet Work?How does the Internet Work?
How does the Internet Work?Dina Goldshtein
 
Mongo DB at Community Engine
Mongo DB at Community EngineMongo DB at Community Engine
Mongo DB at Community EngineCommunity Engine
 
MongoDB at community engine
MongoDB at community engineMongoDB at community engine
MongoDB at community enginemathraq
 
HyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQLHyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQLEvan Volgas
 

Similaire à eMusic: WordPress in the Enterprise (20)

The things we found in your website
The things we found in your websiteThe things we found in your website
The things we found in your website
 
Be faster then rabbits
Be faster then rabbitsBe faster then rabbits
Be faster then rabbits
 
WordCamp 2012 - WordPress Webapps
WordCamp 2012 - WordPress WebappsWordCamp 2012 - WordPress Webapps
WordCamp 2012 - WordPress Webapps
 
Coding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applicationsCoding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applications
 
Oxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websiteOxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your website
 
6.1 GeospatialWeb101.pptx.pptx
6.1 GeospatialWeb101.pptx.pptx6.1 GeospatialWeb101.pptx.pptx
6.1 GeospatialWeb101.pptx.pptx
 
Modern software architectures - PHP UK Conference 2015
Modern software architectures - PHP UK Conference 2015Modern software architectures - PHP UK Conference 2015
Modern software architectures - PHP UK Conference 2015
 
Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014
 
Web APIs: The future of software
Web APIs: The future of softwareWeb APIs: The future of software
Web APIs: The future of software
 
USG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 DaysUSG Rock Eagle 2017 - PWP at 1000 Days
USG Rock Eagle 2017 - PWP at 1000 Days
 
Urbanesia - Development History
Urbanesia - Development HistoryUrbanesia - Development History
Urbanesia - Development History
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
 
Joomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesJoomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiences
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
 
Frontend as a first class citizen
Frontend as a first class citizenFrontend as a first class citizen
Frontend as a first class citizen
 
How does the Internet Work?
How does the Internet Work?How does the Internet Work?
How does the Internet Work?
 
Mongo DB at Community Engine
Mongo DB at Community EngineMongo DB at Community Engine
Mongo DB at Community Engine
 
MongoDB at community engine
MongoDB at community engineMongoDB at community engine
MongoDB at community engine
 
HyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQLHyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQL
 

Dernier

OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
The Kubernetes Gateway API and its role in Cloud Native API Management
The Kubernetes Gateway API and its role in Cloud Native API ManagementThe Kubernetes Gateway API and its role in Cloud Native API Management
The Kubernetes Gateway API and its role in Cloud Native API ManagementNuwan Dias
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdfPaige Cruz
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5DianaGray10
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideHironori Washizaki
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 

Dernier (20)

OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
The Kubernetes Gateway API and its role in Cloud Native API Management
The Kubernetes Gateway API and its role in Cloud Native API ManagementThe Kubernetes Gateway API and its role in Cloud Native API Management
The Kubernetes Gateway API and its role in Cloud Native API Management
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 

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/