Más contenido relacionado La actualidad más candente (20) Similar a Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You) (20) Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)2. © 2015 Phase2
About us
Evan Liebman - Director of MSK Digital
Frank Febbraro - CTO, Phase2
Michael Le Du - Head of Strategic Accounts, Phase2
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).
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
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
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
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
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