← Home

Drupal Multisite on a Dime

or How we Adopted CI/CD for TCA&S’s Drupal Multisite Hosting for Trinity’s 100+ Drupal websites


This presentation:

https://bit.ly/tcas-drupal-multisite

1 / 13

Your presenter


Kyle Skrinak, I.T. Manager

Trinity College of Arts & Sciences

Web Support (now part of OIT), Duke University https://people.duke.edu/~kds38

2 / 13

Meet the team


  • David Palmer, DevOps
  • Andy Smith, Web Dev & Design
  • Gabe Fahl, PHP Programmer
  • Alex Verhoeven, Web Dev & Design
  • John Herr, PHP Programmer
3 / 13

Who We Serve?


4 / 13

Requirements


  • Consistency across all of our websites
  • Rely on Open Source community, and not custom module development
  • Decreased support and discovery time
  • Greatly agility with code updates, website maintenance, and deployment
  • Minimize cost for external tools
5 / 13

Overview: Timeline


  • 2013: Apostrophe → Drupal migration starts
  • 2014: Drupal Multi-site (hosting, version control)
  • 2015: Base + Sub theme (branding, gitorius → gitlab)
  • 2016: FDS → Scholars migration (profile data, membership)
  • 2017: Drupal 8 distribution begins, first D8 website (A→D7 migration ends)
  • 2018: D8 requirements set (hosting, branding, membership)
  • 2019: D8 distribution starts, production begins (CI/CD deployed)
  • 2020: Currently at 27 D8 websites
6 / 13

Innovations


  • 2014: Drupal Multi-site
    • Pantheon discussions and debate over multi-site
    • The DevOps-like dashboard for managing websites
  • 2015: Drupal Omega Base + Sub theme
    • Simplified enforcing our branding across n number of websites
    • Reduced complexity of our support by providing reasonable defaults for content migration
7 / 13

Innovations


  • 2016: Department profile management
    • The “People” section of our websites
    • Faculty Database System (FDS) → Scholars effort
    • Missing: non-faculty membership and our TCA&S-wide directory on trinity.duke.edu
    • Support for Duke’s system of record
    • Solution: design and implement middleware
      • Directory Tool
      • Plenty of Feeds
8 / 13

Drupal 8: Design phase


  • Finished D7 website migration by 2017
  • Goal setting
    • Enforce feature and content denormalization
    • Continue to lean on community, not custom modules
    • Confirm: multi-site
    • Configuration management
    • Exploit DevOps tools: Composer, CI/CD
9 / 13

DevOps becomes a real thing


  • You’ve got developers in my sysadmins?
  • You’ve got sysadmins in my developers?

Mmmm! It’s good!

10 / 13

Our CI/CD Pipeline

Site tasks Pushbuttons Revert Migrate
Enable maintenance mode Production backsync Restore DB Staging to Prod
DB Backup Git pull <branch> Revert code
Git Reset --hard <branch>
Drush entity update
Drush clear caches
Apache OpCache clear
Drush config export
Drush config import
Fix permissions
Disable maintenance mode
Backsync DB from prod
11 / 13

Our Current Workflow


  • Continue to enhance our content editorial experience
  • Weekly meetings with the TCA&S Comm team
  • Tamp down scope creep as we scale
  • Synchronize core features and display across all websites
  • Extend our CI/CD to WordPress and other servers
  • In process: default site content
12 / 13

Q & A


thank you

13 / 13