Supersize me: Making Drupal go large

47
SUPERSIZE ME Making Drupal go large

description

My talk from Drupalcamp London Business Day on 1st March 2013 When building big websites, you're going to face a lot of problems regardless of your technology choice. This talk unveils some of the common problems, and shows how the Drupal community will help you solve these problems.

Transcript of Supersize me: Making Drupal go large

Page 1: Supersize me: Making Drupal go large

SUPERSIZE MEMaking Drupal go large

Page 2: Supersize me: Making Drupal go large

INTRODUCTION

•Who are we?

• Building BIG Drupal

• Three pillars of scale

• Care in the community

•Q&A

Page 3: Supersize me: Making Drupal go large

WHO ARE WE?

Page 4: Supersize me: Making Drupal go large
Page 5: Supersize me: Making Drupal go large
Page 6: Supersize me: Making Drupal go large

COMMON MISCONCEPTIONS

• “Drupal is slow”

• “Drupal doesn’t scale”

• “It’s only good for a hobby site”

Page 7: Supersize me: Making Drupal go large

WRONG!

Page 8: Supersize me: Making Drupal go large

DEVELOPING BIG WEBSITES WITH DRUPAL IS NO DIFFERENT TO

DEVELOPING THEM WITH ANY OTHER SOFTWARE

Page 9: Supersize me: Making Drupal go large

DEVELOPING BIG WEBSITES WITH DRUPAL IS NO DIFFERENT TO

DEVELOPING THEM WITH ANY OTHER SOFTWARE

Page 10: Supersize me: Making Drupal go large

DRUPAL IS NO DIFFERENT TO

ANY OTHER SOFTWARE

Page 11: Supersize me: Making Drupal go large

SCALING PERFORMANCEThe first pillar-box of scale

Page 12: Supersize me: Making Drupal go large

SCALING COMPLEXITY

• Caching and Reverse proxy caches

•Queues

• Alternative database backends

• Throttling

Page 13: Supersize me: Making Drupal go large

MONITORING

• All the common open source tools...

•Munin, Nagios, etc

• Plus some new ones

•New Relic, Boundary

• Social media

• saved our site...

Page 14: Supersize me: Making Drupal go large

SCALING PEOPLEWe’re going to need a bigger boat

Page 15: Supersize me: Making Drupal go large

COMMUNICATION

Page 16: Supersize me: Making Drupal go large

PRIORITISATION

Page 17: Supersize me: Making Drupal go large

DISTRIBUTED WORKING

Page 18: Supersize me: Making Drupal go large

REDUNDANCY

Page 19: Supersize me: Making Drupal go large

PROJECTS CONSIST OF CODE

Page 20: Supersize me: Making Drupal go large

PROJECTS CONSIST OF CODE

CODE IS WRITTEN BY PEOPLE

Page 21: Supersize me: Making Drupal go large

PEOPLE DELIVER PROJECTS

PROJECTS CONSIST OF CODE

CODE IS WRITTEN BY PEOPLE

Page 22: Supersize me: Making Drupal go large

SCALING PROCESSES

Page 23: Supersize me: Making Drupal go large

YOU STILL NEED TO DO ALL THE THINGS YOU WOULD DO

ON ANY BIG SOFTWARE PROJECT

Page 24: Supersize me: Making Drupal go large

WHAT THINGS?

• Provide clarity of purpose

• Automated and manual testing

• Continuous integration

• Performance testing and benchmarking

• Code review

• Source control

• Release management

• Address technical debt

• Be agile (with a little ‘a’)

Page 25: Supersize me: Making Drupal go large

CLARITY OF PURPOSE

• Your team must know how to “do”

• The definition of “done”

•What “good” looks like

Page 26: Supersize me: Making Drupal go large

TESTING

• Know how you’re going to test, before you write a single line of code

•Do it regularly

•Make it repeatable and consistent

• Automate as much as possible

• Test Driven Development (TDD) or Behaviour Driven Development (BDD) is even better

Page 27: Supersize me: Making Drupal go large

CONTINUOUS INTEGRATION

• Fail fast, Fail early

• Start your project the way you mean to go on

• Provide an environment where developers are allowed to make mistakes (not just dev)

• Automate your environment setup

• Regularly build your environments - including deploying to production

Page 28: Supersize me: Making Drupal go large

“IT DOESN’T MATTER HOW YOUR BUILD SCRIPT WORKS, IT ONLY MATTERS THAT IT

WORKS”

Page 29: Supersize me: Making Drupal go large

PERFORMANCE TESTING

• Know what you’re aiming for

• Test early, test regularly

• Benchmark common journeys and monitor changes over time

•Memory usage, Page execution time etc

• Acknowledge that Production is your only real test

Page 30: Supersize me: Making Drupal go large

KNOW YOUR PEAKS

Page 31: Supersize me: Making Drupal go large

CODE REVIEW

Page 32: Supersize me: Making Drupal go large

TECHNICAL DEBT

Page 33: Supersize me: Making Drupal go large

CARE IN THE COMMUNITYThe good news

Page 34: Supersize me: Making Drupal go large

YOU DON’T NEED TO REINVENT THE WHEEL

Page 35: Supersize me: Making Drupal go large

YOU’RE NOT THE FIRST

• Pressflow

• Published approaches to solving performance problems

• Catch’s Github page

•Drupal.org documented performance improvements

•Drupal 7 Fields optimisation (ported from Drupal 8)

• Porting performance improvements from newer versions

Page 36: Supersize me: Making Drupal go large

EXPERTS ARE OUT THERE

•Drupal issue queues

•Drupal High Performance Group

• IRC

•Meet-ups

•DrupalCamps and DrupalCons

• Large Scale Drupal (LSD) programme

Page 37: Supersize me: Making Drupal go large

DRUPAL PLAYS WELL WITH OTHERS

Page 38: Supersize me: Making Drupal go large

CONTRIBUTION

• Contribution encourages good developer practice

•Testing: core changes always accompanied by a test

•Review: minimum of 2 people will review any change to core

•Technical debt: critical issue thresholds block new features

Page 39: Supersize me: Making Drupal go large

SHARE AND SHARE ALIKE

• Route

• STOMP

• SQL No Revisions

• Drupal 8 Configuration Management Initiative (CMI)

• Test and Target

• Panels Filter Cache

• Various core and contrib patches

Page 40: Supersize me: Making Drupal go large

CONTRIBUTION CYCLE

Page 41: Supersize me: Making Drupal go large

WRAPPING UP

Page 42: Supersize me: Making Drupal go large

DRUPAL IS NO DIFFERENT TO

ANY OTHER SOFTWARE

Page 43: Supersize me: Making Drupal go large

THE COMMUNITY IS

Page 44: Supersize me: Making Drupal go large

WRAPPING UP

• If you’re building big, a lot of problems exist regardless of the technology

•Drupal provides ways to solve these problems

• The Drupal community is one of the best communities to have a problem in

•Drupal does scale, in performance, in people, in process

Page 45: Supersize me: Making Drupal go large

QUESTIONS?

Tweet: @tsphetheanDrupal.org: tsphethean

IRC: tsphethean

Tweet: @alexpottDrupal.org: alexpott

IRC: alexpott

Page 46: Supersize me: Making Drupal go large

WE’RE HERE ALL WEEKENDCome visit us on our stand

and see our other presentations

• Drupal 8 Configuration system for coders - Alex Pott (Sunday 10:30am)

• Please hold: your call is in a queue - Tom Phethean (Sunday 10:30am)

• zip-BDD-do-dah zip-BDD-ay! - Graham Taylor and Andrew Larcombe (Sunday 11:30am)

Page 47: Supersize me: Making Drupal go large

IMAGE ATTRIBUTIONS

• The Elephants are coming - http://www.fromthewilderness.com/free/ww3/011905_university_washington.shtml

• Pillar Box - http://www.oxfordhistory.org.uk/streets/post_boxes/edward_vii/index.html

• Jaws - http://edge.ascd.org/_Youre-Gonna-Need-a-Bigger-Boat/blog/6287739/127586.html

• Communication - http://familybugs.wordpress.com/2012/04/30/communication-part-1/

• Prioritisation - http://neilkillick.com/2011/12/17/tips-on-speedy-product-backlog-prioritisationordering/

• Remote working - http://www.wolfden.co.uk/RemoteWorking.html

• Redundancy - http://blog.800hosting.com/2011/07/workstation-backup-solutions-pt-3-redundancy/

• Scaling rock face - http://www.flickr.com/photos/alexindigo/2571638877

• Christmas - http://www.tunisia-live.net/2011/12/23/christmas-celebrations-in-tunisia-tis-the-season/

• Volcanic ash cloud - http://www.guardian.co.uk/world/blog/2010/apr/15/volcano-airport-disruption-iceland

• Technical debt - http://agileandbeyond.blogspot.co.uk/2011/05/velocity-handle-with-care.html

• Reinventing the wheel - http://www.sbi-conferences.com/dont-reinvent-the-wheel.html