Upload
phase2
View
73
Download
0
Embed Size (px)
Citation preview
© 2015 Phase2
About us
Evan Liebman - Director of MSK Digital
Frank Febbraro - CTO, Phase2
Michael Le Du - Head of Strategic Accounts, Phase2
© 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
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
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
Financial Sustainability
● Gain the long term ROI from the investment, no need to re-platform in a few years
© 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
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
© 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
© 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
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
© 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
© 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