Managing multiple websites

From DevSummit
Jump to: navigation, search
  • Drupal, Backdrop, WordPress, static sites; some folks at agencies,

some folks solo, some folks at larger orgs

  • Previous experience: at an agency, did builds and support contracts;

now inhouse at a nonprofit org, managing 10 WordPress multisite networks, 10-200 sites on each.

  • "Short stack developer" -- learns to do a little bit of everything out

of necessity, but not architecting software

  • Using WPEngine for hosting; a few people use it. Some folks also use

Pantheon and Platform.sh (the latter gives most flexibility).

  • Components of managing websites: hosting, domain name/DNS, maintenance

& updates, backups, content delivery networks (CDNs), SMTP/email, monitoring

  • One person manages actual hardware, a whole rack of servers; also

develops websites, uses git for workflow

  • Websites you didn't build are harder to maintain
  • WP multisite: when you log into WPEngine dashboard, go into each

install and run the updates. Another too, WPMudev, plugin suite and dashboard for managing multiple WP installs, gives you one button, updates all live sites directly (!)

  • WP recently added an auto-update feature; enabling it is creating a

security hole in the system.

  • Need to weigh risks: staying up to date by making the code writable by

the web process, escalating

  • When to apply updates? Only when they apply to you? Some people do

core updates immediately, contrib updates quarterly

  • Support = client requests, supporting, development etc. Runs gamut

from super functional "let's keep site secure."

  • Write down a standard operating procedure for running updates
  • Use Teamwork as a ticketing system for both professional

services/project management.

  • Another shop: Jira for agency work, ZenDesk for support side of

things. They're a bit more integrated now, things that synthesize stuff, bring stuff from Jira to ZenDesk. Looked at ServiceDesk a while back; no clear way to escalate things from that to Jira.

  • Need tools to help manage, organize, escalate.
  • Train clients on how to use the ticketing systems, how to submit good

tickets.

  • Monitoring
    • New Relic (they come with Pantheon accounts): runtime, performance

monitoring, slow queries, etc. But your hosting platform has to have it built in. There's a free version but it's really hard to set up.

    • Monit -- open source
    • Nagios/Icinga
  • Documentation
    • Looking for a ticketing system that allows someone to take a ticket,

scrub it, turn it into a knowledge base/FAQ thing.

    • Having documentation per site--quirks, customizations, the things

that make the site special/funky.

    • Inheriting sites that aren't well documented, eek.
    • Checklist: baseline checks for sites that are being inherited so they

know where they're starting from.

  • Nice having standardization across the board for all managed Websites
  • Maintaining themes and plugins across websites: GitHub Theme Plugin

Updater, allows you in styles.css to specify the GitHub/BitBucket/etc URL for your theme; if you commit a change and up the version number on your theme, your site gets notified, you can roll things out more easily.

  • Drush, wp-cli, cv for CiviCRM -- all the command-line tools can really

speed things up

  • You can automate testing, but it's impossible to have complete

coverage. Time and money make it impossible. Also multiplicity--so many websites to be testing.

  • Swiss cheese model of testing: each piece of cheese has holes, but if

you pile up the different tests you cover all the holes.

  • Use a lot of Pantheon's new multi-dev stuff, have everything go

through pull requests.

  • Testing
    • Favorite clients are the ones willing to do their own QA; they know

the most important things that they need to test.

    • Very hard to deliver full testing for every little thing
    • Codacy: checks for best practices in coding standards in Drupal
    • Peer review is also important!
    • Civi puts out release candidates out; they need testing. They know

some shops have some tests; theory is that there's a lot of coverage out there, just not coordinated enough. How do we coordinate channels so all the testing gets done before the release is deployed.

    • Selenium
  • Reporting protocol or reporting tools -- give ways for people to come

back with their feedback

  • Backdrop runs tests on every release, but there's some stuff that

slips through cracks or just isn't tested

  • Backdrop has developer check-ins every two weeks, also have open QA

time, office hours. Chat channel that anyone can join.

  • Can't incorporate Behat tests into the infrastructure.
  • Panopoly has a lot of tests built in.
  • Back in the day used something called Foreman, any time an app was

fired up it would record the OS, report any kind of bugs that happened; error reporting; you get info about the issues that have happened with OS/browser specific info.

  • Humans are the variable, even if there are systems in place. How do

you help people avoid the problems?

  • "Take small bites" to get to a better place with the managing,

maintenance, support.

  • Different models for different sites: some sites need updates

immediately, some people

  • Lower requirements for documentation: choose a level of documentation

that you can consistently meet, start there, get it into your workflow.

  • Consolidate your documentation!
  • Write inline documentation in your own code!
  • How do you keep track of all the clients' accounts/info? How do you

have your own access to those accounts.

    • Lots of folks say: get the client to set up those accounts using

their own email addresses, share account access with you securely, they stay in control of the account.

    • Folks are using LastPass and similar to keep track of that
    • Standardize how accounts are created, named, tracked.
  • DNS/domain names:
    • Use Namecheap, they're less evil, but now have access to TONS of

Namecheap accounts.

    • Make sure clients handle their domains directly!