SlideShare a Scribd company logo
© 2015 Phase2
Drupal 8, Don’t Be Late
© 2015 Phase2
About us
Evan Liebman - Director of MSK Digital
Frank Febbraro - CTO, Phase2
Michael Le Du - Head of Strategic Accounts, Phase2
© 2015 Phase2
The time has come
to consider Drupal 8
© 2015 Phase2
Content as we know it, is changing
● Text and images (most websites)
● Multimedia (YouTube, Netflix, Spotify)
● Web Applications (Trello, Basecamp, Salesforce)
● Social Media Streams (Facebook, Twitter, etc)
● IoT (FitBit, Automatic for autos, Echobee)
© 2015 Phase2
Content consumption has changed
● PCs consuming web pages
● Mobile (iPhone, iPad, Android)
● “Over the top” (AppleTV, Xbox/PS, Smart-TV)
● Wearables (Apple Watch, Google Glass)
● IoT (Amazon Echo, Smart appliances, Automotive)
© 2015 Phase2
Dries addressed this in his keynote
● getNextBestExperience()
● Integrating with 3rd party services
● Pushing contextual content to different endpoints
● Personalized content experiences
○ No two experiences are the same
○ 100% dynamic
© 2015 Phase2
Could you be disrupted?
● Does your current CMS allow you to easily distribute
content in these channels?
● In a maintainable and extensible way?
● If you don’t make your content readily accessible
where people consume it, and relevant to their
context, someone else will (or already has).
© 2015 Phase2 Don’t be “LEFT BEHIND”
CONTENT. COLLABORATION. EXPERIENCE.
Drupal 8
Now?
CONTENT. COLLABORATION. EXPERIENCE.
Spoiler Alert!!
Drupal 8 is already being used in
production
© 2015 Phase2
Why now is the time to consider Drupal 8
● It’s being used in production
● Has stack support for all required components
● Less dependence on contrib
● Fully reap the benefits of the platform lifecycle
● Use a tool built for today and the future
● Become part of the solution
● A chance to attract the best talent
© 2015 Phase2
Memorial Sloan Kettering
Drupal 8 Case Study
© 2015 Phase2
-Jacob Rockowitz
“Drupal 8, Don’t Be Late”
© 2015 Phase2
How the MSK Culture Inspired Us to
Become an Early Adopter of Drupal 8
● A culture of innovation
● Relentless pursuit, and unmatched expertise that
results in breakthrough advances
© 2015 Phase2
Collaborative Focus at MSK
● Multi-center studies driving the generation of new
knowledge
● Cross service collaboration to aid the diagnosis and
treatment, and research
© 2015 Phase2
Why is Community important?
● We are all trying to solve similar problems
● People can leverage our work
● Can leverage other people’s work
● Allows bigger problems to be solved
● The community helps drives Innovation
© 2015 Phase2
MSK’s Strategic Priorities
● Patient Experience
● Patient Access
● Innovation and Generation of New Knowledge
● Talent Recruitment
● Financial Sustainability
© 2015 Phase2
Patient Experience and Access
● Easy access to the information the user needs
© 2015 Phase2
Innovation and Generation of New
Knowledge
● D8 cutting edge technology
© 2015 Phase2
Talent Recruitment
● Broader the talent pool
© 2015 Phase2
Financial Sustainability
● Gain the long term ROI from the investment, no need
to re-platform in a few years
© 2015 Phase2
So the Adventure Begins...and
Successfully Launches
● MSKCC.org
● SloanKettering.edu
© 2015 Phase2
This is more than a brochure site
● D6 site with 114 contrib
● D8 with 9 modules
● Serves 7 personas
● Related content
● Faceted search
● Webforms
● Online payment
● MailChimp Integration
● Prediction tools
● Multiple sites
● Multiple layouts
● PDF generation
● Multi server cluster
● LDAP authentication
● Data aggregation
● Data synchronization to
apps
© 2015 Phase2
Drupal 8’s Flexibility Simplified Problems
● Can centralize logic into services (layout logic, override
controllers without hacking core)
● We created YAML Forms because there was no Web forms
● No Panels, we used HTML template expansion
● Many D8 module upgrades were only a few days of work
○ Redis, Memcache, Redirect, Node Order
© 2015 Phase2
What else did we gain from Drupal 8?
● Developer velocity (once past the learning curve)
● MSK was able to participate in making Drupal 8
better
© 2015 Phase2
Were there any surprises?
● Core features weren’t as “done” as most people believe
them to be
● How easy it is to do powerful things with minimal code
● Lack of robust documentation
● The power of using YAML and how clean and readable it is
○ Non-programmers can create YAML docs
© 2015 Phase2
What did we trade off with Drupal 8?
● There weren’t many contrib modules
● Lack of best practices and practical knowledge
● Core wasn’t even feature complete when it started
○ Migration, Views, CMI, APIs
● Core changed very fast, took work to keep up with
breaking changes
● The project went live before a guaranteed upgrade path
© 2015 Phase2
Drupal 8 Lessons Learned
CONTENT. COLLABORATION. EXPERIENCE.
Managing Core & Contrib
© 2015 Phase2
Dedicate a person to core
● Have one person focused primarily on “Core” issues
● The ground needs to be cleared for the team
● Shepherd patches into core
● Re-roll/revive stalled community efforts
● Sometimes you have to code around bugs in core
© 2015 Phase2
Schedule for regular upgrades to core
● Either a known working HEAD or release
● Plan to pin/freeze within sight of launch
● Don’t let it go too long as debt accumulates
● Track the core changelog to understand what could
affect you
© 2015 Phase2
Don’t wait on contrib
● They might not catch up
○ Migration
○ Layout
○ Forms
○ Stack Components (memcache/redis)
○ LDAP
CONTENT. COLLABORATION. EXPERIENCE.
Addressing Risk
© 2015 Phase2
Prototype to mitigate risk
● Get a site up and prototype key features and functionality
● Get your content to migrate and render
● Don’t worry about theming in the beginning (Bartik is
fine)
● You can import using bulk insert
© 2015 Phase2
Account for the learning curve
● Give the team time to navigate the learning curve
○ You’ll make it up later
○ Modern PHP / Services / Symfony / CMI enable more
productivity
○ Teams need to learn new way
■ Learn to do things the right way via Services, etc.
■ They also need to unlearn old Drupal ways
© 2015 Phase2
Don't assume you know what would go well
● Be ready to have a plan B & C (you’ll probably need it)
● Core features may not be as “done” as you think
● Plan for potential stack issues (PHP, Memcache, etc.)
● Be ready to make stack changes if needed
○ Memcache + PHP5.4 => Memcache + PHP 5.5
CONTENT. COLLABORATION. EXPERIENCE.
Pulling It All Together
© 2015 Phase2
Take advantage of the front end separation
● TWIG let’s the front end ramp up quickly
● Leverage grunt, bower, sass and other js tools
● Services and filters make it easier to
“componentize” the frontend
© 2015 Phase2
Front end component example
© 2015 Phase2
Have tight collaboration between teams
● The frontend was built as a standalone prototype
● Once design was approved it was moved into Drupal
● Be flexible both ways
○ sometimes it’s easier to start with Drupal’s
markup
○ Sometimes it better to modify TWIG templates
© 2015 Phase2
Use testing to catch regressions
● Use PHPUnit and Behat to catch regressions
○ Custom code will break during upgrades (API
changes)
○ Make identifying regressions easy and automated
○ Especially before a beta to beta migration path exists
○ Tests are easier to build when you are extending
objects with existing test coverage
© 2015 Phase2
Use build tools
● Automate, automate, automate
● Seriously, don’t wait to do this.
● We used a combination of Drush and Grunt
● Facilitate integration of multiple repos
● Code quality, testing, deployment, migration.
© 2015 Phase2
Manage your dependencies
● Drush Make (now with YAML make file support)
● NPM for JS build dependencies
● Bower for the front end JS
● Grunt was used to materialize the site and build
the frontend
© 2015 Phase2
Make use of YAML where possible
● YAML Forms (webforms configured via YAML)
● Your users can write in YAML, seriously, ours do.
● YAML is a great format for serialization of data
● Install Symfony components to output YAML in D6/7
© 2015 Phase2
Migration shouldn’t be a 2nd class citizen
● You may not use it after launch, but it is certainly not
a throw away
● Constant migration is powerful but tricky
● Expect the migration to break across environments
○ And across core versions
CONTENT. COLLABORATION. EXPERIENCE.
Managing Environments
© 2015 Phase2
Make is easy to get developers setup
● Complex setups can be brittle across developers
● Our dev's needed VPN access, which was brittle
● Dev’s needed to run a long D6 to D8 migration
© 2015 Phase2
Don't neglect your server environments
● Focus on the platform delayed getting our
environments provisioned
● Get your servers up early
● Try to limit additional risk in the stack
● Hard to troubleshoot bugs can creep up here
© 2015 Phase2
Small environmental differences can cause issues
● “Close enough” doesn’t always work to mimic prod
● Use all layers of the stack
○ As soon as you have something testable (or before)
● Even on the same servers, the hostname can change
behavior
● HTTP vs HTTPS can cause differences
© 2015 Phase2
Load testing !== production traffic
● Load tests are great indicators potential problems
● They don't actually guarantee anything
● Production traffic will always be different
○ Even when replaying production traffic logs
● Even “low traffic” times may surprise you
○ A spider started aggressively crawling at 5AM
CONTENT. COLLABORATION. EXPERIENCE.
How can you get started?
© 2015 Phase2
Drupal 8 Considerations
● Pick D8 candidates carefully
● No short timelines
● Have the right team
○ Drupal exp, quick learners, problem solvers, profilers
● Get involved with the community
○ You'll need their help
© 2015 Phase2
Key Resources
● www.mskcc.org
● www.sloankettering.edu
● Adventures in Drupal 8: http://phase.to/1K8rKuX
● Driving Drupal 8 Adoption: http://phase.to/1cxvsQD
● Interview with Evan: http://phase.to/1K8qS9A
● Transforming Enterprises w/ Drupal 8 : http://phase.to/1K8r8Fx
● Phase2 & MSK: http://phase.to/1K8rsUI
CONTENT. COLLABORATION. EXPERIENCE.
Q&A
PHASE2TECHNOLOGY.COM

More Related Content

Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)

  • 1. © 2015 Phase2 Drupal 8, Don’t Be Late
  • 2. © 2015 Phase2 About us Evan Liebman - Director of MSK Digital Frank Febbraro - CTO, Phase2 Michael Le Du - Head of Strategic Accounts, Phase2
  • 3. © 2015 Phase2 The time has come to consider Drupal 8
  • 4. © 2015 Phase2 Content as we know it, is changing ● Text and images (most websites) ● Multimedia (YouTube, Netflix, Spotify) ● Web Applications (Trello, Basecamp, Salesforce) ● Social Media Streams (Facebook, Twitter, etc) ● IoT (FitBit, Automatic for autos, Echobee)
  • 5. © 2015 Phase2 Content consumption has changed ● PCs consuming web pages ● Mobile (iPhone, iPad, Android) ● “Over the top” (AppleTV, Xbox/PS, Smart-TV) ● Wearables (Apple Watch, Google Glass) ● IoT (Amazon Echo, Smart appliances, Automotive)
  • 6. © 2015 Phase2 Dries addressed this in his keynote ● getNextBestExperience() ● Integrating with 3rd party services ● Pushing contextual content to different endpoints ● Personalized content experiences ○ No two experiences are the same ○ 100% dynamic
  • 7. © 2015 Phase2 Could you be disrupted? ● Does your current CMS allow you to easily distribute content in these channels? ● In a maintainable and extensible way? ● If you don’t make your content readily accessible where people consume it, and relevant to their context, someone else will (or already has).
  • 8. © 2015 Phase2 Don’t be “LEFT BEHIND”
  • 10. CONTENT. COLLABORATION. EXPERIENCE. Spoiler Alert!! Drupal 8 is already being used in production
  • 11. © 2015 Phase2 Why now is the time to consider Drupal 8 ● It’s being used in production ● Has stack support for all required components ● Less dependence on contrib ● Fully reap the benefits of the platform lifecycle ● Use a tool built for today and the future ● Become part of the solution ● A chance to attract the best talent
  • 12. © 2015 Phase2 Memorial Sloan Kettering Drupal 8 Case Study
  • 13. © 2015 Phase2 -Jacob Rockowitz “Drupal 8, Don’t Be Late”
  • 14. © 2015 Phase2 How the MSK Culture Inspired Us to Become an Early Adopter of Drupal 8 ● A culture of innovation ● Relentless pursuit, and unmatched expertise that results in breakthrough advances
  • 15. © 2015 Phase2 Collaborative Focus at MSK ● Multi-center studies driving the generation of new knowledge ● Cross service collaboration to aid the diagnosis and treatment, and research
  • 16. © 2015 Phase2 Why is Community important? ● We are all trying to solve similar problems ● People can leverage our work ● Can leverage other people’s work ● Allows bigger problems to be solved ● The community helps drives Innovation
  • 17. © 2015 Phase2 MSK’s Strategic Priorities ● Patient Experience ● Patient Access ● Innovation and Generation of New Knowledge ● Talent Recruitment ● Financial Sustainability
  • 18. © 2015 Phase2 Patient Experience and Access ● Easy access to the information the user needs
  • 19. © 2015 Phase2 Innovation and Generation of New Knowledge ● D8 cutting edge technology
  • 20. © 2015 Phase2 Talent Recruitment ● Broader the talent pool
  • 21. © 2015 Phase2 Financial Sustainability ● Gain the long term ROI from the investment, no need to re-platform in a few years
  • 22. © 2015 Phase2 So the Adventure Begins...and Successfully Launches ● MSKCC.org ● SloanKettering.edu
  • 23. © 2015 Phase2 This is more than a brochure site ● D6 site with 114 contrib ● D8 with 9 modules ● Serves 7 personas ● Related content ● Faceted search ● Webforms ● Online payment ● MailChimp Integration ● Prediction tools ● Multiple sites ● Multiple layouts ● PDF generation ● Multi server cluster ● LDAP authentication ● Data aggregation ● Data synchronization to apps
  • 24. © 2015 Phase2 Drupal 8’s Flexibility Simplified Problems ● Can centralize logic into services (layout logic, override controllers without hacking core) ● We created YAML Forms because there was no Web forms ● No Panels, we used HTML template expansion ● Many D8 module upgrades were only a few days of work ○ Redis, Memcache, Redirect, Node Order
  • 25. © 2015 Phase2 What else did we gain from Drupal 8? ● Developer velocity (once past the learning curve) ● MSK was able to participate in making Drupal 8 better
  • 26. © 2015 Phase2 Were there any surprises? ● Core features weren’t as “done” as most people believe them to be ● How easy it is to do powerful things with minimal code ● Lack of robust documentation ● The power of using YAML and how clean and readable it is ○ Non-programmers can create YAML docs
  • 27. © 2015 Phase2 What did we trade off with Drupal 8? ● There weren’t many contrib modules ● Lack of best practices and practical knowledge ● Core wasn’t even feature complete when it started ○ Migration, Views, CMI, APIs ● Core changed very fast, took work to keep up with breaking changes ● The project went live before a guaranteed upgrade path
  • 28. © 2015 Phase2 Drupal 8 Lessons Learned
  • 30. © 2015 Phase2 Dedicate a person to core ● Have one person focused primarily on “Core” issues ● The ground needs to be cleared for the team ● Shepherd patches into core ● Re-roll/revive stalled community efforts ● Sometimes you have to code around bugs in core
  • 31. © 2015 Phase2 Schedule for regular upgrades to core ● Either a known working HEAD or release ● Plan to pin/freeze within sight of launch ● Don’t let it go too long as debt accumulates ● Track the core changelog to understand what could affect you
  • 32. © 2015 Phase2 Don’t wait on contrib ● They might not catch up ○ Migration ○ Layout ○ Forms ○ Stack Components (memcache/redis) ○ LDAP
  • 34. © 2015 Phase2 Prototype to mitigate risk ● Get a site up and prototype key features and functionality ● Get your content to migrate and render ● Don’t worry about theming in the beginning (Bartik is fine) ● You can import using bulk insert
  • 35. © 2015 Phase2 Account for the learning curve ● Give the team time to navigate the learning curve ○ You’ll make it up later ○ Modern PHP / Services / Symfony / CMI enable more productivity ○ Teams need to learn new way ■ Learn to do things the right way via Services, etc. ■ They also need to unlearn old Drupal ways
  • 36. © 2015 Phase2 Don't assume you know what would go well ● Be ready to have a plan B & C (you’ll probably need it) ● Core features may not be as “done” as you think ● Plan for potential stack issues (PHP, Memcache, etc.) ● Be ready to make stack changes if needed ○ Memcache + PHP5.4 => Memcache + PHP 5.5
  • 38. © 2015 Phase2 Take advantage of the front end separation ● TWIG let’s the front end ramp up quickly ● Leverage grunt, bower, sass and other js tools ● Services and filters make it easier to “componentize” the frontend
  • 39. © 2015 Phase2 Front end component example
  • 40. © 2015 Phase2 Have tight collaboration between teams ● The frontend was built as a standalone prototype ● Once design was approved it was moved into Drupal ● Be flexible both ways ○ sometimes it’s easier to start with Drupal’s markup ○ Sometimes it better to modify TWIG templates
  • 41. © 2015 Phase2 Use testing to catch regressions ● Use PHPUnit and Behat to catch regressions ○ Custom code will break during upgrades (API changes) ○ Make identifying regressions easy and automated ○ Especially before a beta to beta migration path exists ○ Tests are easier to build when you are extending objects with existing test coverage
  • 42. © 2015 Phase2 Use build tools ● Automate, automate, automate ● Seriously, don’t wait to do this. ● We used a combination of Drush and Grunt ● Facilitate integration of multiple repos ● Code quality, testing, deployment, migration.
  • 43. © 2015 Phase2 Manage your dependencies ● Drush Make (now with YAML make file support) ● NPM for JS build dependencies ● Bower for the front end JS ● Grunt was used to materialize the site and build the frontend
  • 44. © 2015 Phase2 Make use of YAML where possible ● YAML Forms (webforms configured via YAML) ● Your users can write in YAML, seriously, ours do. ● YAML is a great format for serialization of data ● Install Symfony components to output YAML in D6/7
  • 45. © 2015 Phase2 Migration shouldn’t be a 2nd class citizen ● You may not use it after launch, but it is certainly not a throw away ● Constant migration is powerful but tricky ● Expect the migration to break across environments ○ And across core versions
  • 47. © 2015 Phase2 Make is easy to get developers setup ● Complex setups can be brittle across developers ● Our dev's needed VPN access, which was brittle ● Dev’s needed to run a long D6 to D8 migration
  • 48. © 2015 Phase2 Don't neglect your server environments ● Focus on the platform delayed getting our environments provisioned ● Get your servers up early ● Try to limit additional risk in the stack ● Hard to troubleshoot bugs can creep up here
  • 49. © 2015 Phase2 Small environmental differences can cause issues ● “Close enough” doesn’t always work to mimic prod ● Use all layers of the stack ○ As soon as you have something testable (or before) ● Even on the same servers, the hostname can change behavior ● HTTP vs HTTPS can cause differences
  • 50. © 2015 Phase2 Load testing !== production traffic ● Load tests are great indicators potential problems ● They don't actually guarantee anything ● Production traffic will always be different ○ Even when replaying production traffic logs ● Even “low traffic” times may surprise you ○ A spider started aggressively crawling at 5AM
  • 52. © 2015 Phase2 Drupal 8 Considerations ● Pick D8 candidates carefully ● No short timelines ● Have the right team ○ Drupal exp, quick learners, problem solvers, profilers ● Get involved with the community ○ You'll need their help
  • 53. © 2015 Phase2 Key Resources ● www.mskcc.org ● www.sloankettering.edu ● Adventures in Drupal 8: http://phase.to/1K8rKuX ● Driving Drupal 8 Adoption: http://phase.to/1cxvsQD ● Interview with Evan: http://phase.to/1K8qS9A ● Transforming Enterprises w/ Drupal 8 : http://phase.to/1K8r8Fx ● Phase2 & MSK: http://phase.to/1K8rsUI