Drupal in the Enterprise, IBM and Norwegian Cruise Line


Published on

Building an enterprise web site presents a unique set of challenges. In this session, we’ll review IBM’s development of the NCL.com site, focusing on challenges and solutions. We will discuss using open source in the enterprise, the impact of open source support contracts, integrating with enterprise systems such as itinerary data, pricing, reservations, shore excursions, geotargeting, and search, integrating with technologies such as Endeca and Flash, defining a complex content model in Drupal and migrating legacy CMS data, staging and deploying content, structuring and being efficient with large development teams (up to 30 team members), working with many content contributors, hosting within an enterprise infrastructure, caching and content delivery networks, code deployments, monitoring, load testing and integrating Agile practices.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Working on NCL from pre-production, thru development thru support Number of differences between Drupal in the Enterprise “ Conventional” Drupal implementations
  • IBM known for BIG IRON
  • And big challenges
  • IBM Interactive, a digital agency within IBM Not just developing solutions with IBM software, such as WebSphere Portal Use open source, such as Drupal and Ruby, mobile apps
  • NCL 3rd largest cruise line 11 cruise ships
  • 8% estimated market share worldwide $2.25b estimated 2011 revenue
  • NCL.com Revenue generating – booking cruises and excursions, making reservations High availability High performance 4m visitors/month 32m page views/month Higher waves of traffic during promotions
  • From mid-west Wife thinks I spend my time in Miami doing this.
  • Kids this
  • Friends this
  • More like this
  • And sometimes like this
  • Used by the enterprise for decades Enterprise purchases software license from vendor. Enterprise perspective: Legal ownership of code is well-defined. Software backed by established entity.
  • OSS Licensing - Software distributed under open source (GPL) license. Enterprise perspective: Who “owns” the license? Who “owns” the code? Who backs the software? Community Who is the community???
  • Conversations like this result from differing perspectives even within the IBM Team.
  • Support must be addressed before project, not after. Support is critical in the enterprise. While people may come and go, support needs to remain consistent.
  • Enterprise purchases support contract from vendor. (maybe same as license) Enterprise engages IT (internal or contract) for regular maintenance. Enterprise engages support vendor for escalated support. Enterprise perspective: Well defined escalation procedures Accountability
  • Great for developers Google.com Drupal.org IRC Enterprise perspective: No accountability No escalation path
  • Content model critical many content types many integration points
  • Inputs to content model
  • Process driven by documentation in enterprise Interview content owners Document content model Define content types Export legacy content Import legacy content Tweak content types repeatedly to address changing import and template needs
  • Legacy CMS – One time import, daily import via cron Endeca Search Index – XML from Drupal on demand + cache data = index JSON back to Drupal Geotargeting – IP address on demand Flash XML content nodeapi Many potential points of failure Many drivers of content model
  • Many challenges
  • Staging – Full preview with Drupal, Flash and Endeca Deploy module Not widely used No upgrade path to D7 D8?
  • Pre-production – small team Build – large team Maintenance – small team
  • Lack of team lead can result in diff modules being used for same tasks.
  • Sample infrastructure Potential issues Load balancing – HTTP headers Intrusion detection - DOS Firewall - load
  • Cache everywhere Drupal caching – 30 minutes to 3 hours
  • Monitoring is critical quickly identify issues track issues to their source Don’t depend on infrastructure team
  • Agile isn’t faster. Agile is faster.
  • Drupal in the Enterprise, IBM and Norwegian Cruise Line

    1. 1. Drupal in the Enterprise IBM and Norwegian Cruise Line Rob Shea
    2. 7. NCL.com
    3. 13. Software Licensing
    4. 14. Proprietary Licensing
    5. 15. flickr.com/photos/79117087@N00/1716249985/ OSS Licensing
    6. 16. <ul><li>Developer </li></ul><ul><li>Why aren’t the servers setup yet? </li></ul><ul><li>Architect </li></ul><ul><li>We are waiting for the licenses to be purchased. </li></ul><ul><li>Developer </li></ul><ul><li>So, we can’t install freely distributed open source software until we purchase a license? </li></ul><ul><li>Architect </li></ul><ul><li>Correct </li></ul>
    7. 17. OSS Licensing in the Enterprise <ul><li>What can you do? </li></ul><ul><li>Educate decision makers </li></ul><ul><ul><li>OSS vs. proprietary licensing </li></ul></ul><ul><li>Work with legal, contracts </li></ul><ul><li>Define relationships with code </li></ul><ul><ul><li>Who owns the code? </li></ul></ul><ul><ul><li>Who owns custom code? </li></ul></ul><ul><ul><ul><li>Enterprise, development contractor, GPL? </li></ul></ul></ul><ul><ul><li>Can contrib modules and patches be shared with the community? </li></ul></ul>
    8. 18. Support
    9. 19. Proprietary Support
    10. 20. OSS Support
    11. 21. OSS Support in the Enterprise <ul><li>Needs to be same as proprietary </li></ul><ul><ul><li>Support contracts </li></ul></ul><ul><ul><li>Defined maintenance and escalated support </li></ul></ul><ul><ul><li>Required for enterprise adoption </li></ul></ul><ul><li>Support contract vendors are critical! </li></ul><ul><ul><li>Not just development contractors </li></ul></ul><ul><li>Red Hat support made Linux viable in the Enterprise </li></ul>
    12. 22. Content Model
    13. 23. Business Needs Integration Legacy Data Template Needs
    14. 25. Content model lessons learned <ul><li>Start Agile </li></ul><ul><li>Prototype </li></ul><ul><li>Documentation </li></ul><ul><ul><li>Painful to keep accurate </li></ul></ul><ul><ul><li>If required, automatically generate from CCK </li></ul></ul>
    15. 26. Integration
    16. 28. Content Deployment
    17. 29. Content deployment
    18. 30. Large development teams flickr.com/photos/33948692@N00/539413957/
    19. 31. Large team best practices <ul><li>Team leads </li></ul><ul><ul><li>Identify and involve early </li></ul></ul><ul><ul><li>Prototype </li></ul></ul><ul><ul><li>Contrib vs. custom </li></ul></ul><ul><ul><li>Contrib module selection </li></ul></ul><ul><ul><li>Approve all modules & tools </li></ul></ul><ul><li>Communications </li></ul><ul><li>Don't modify core </li></ul><ul><li>Don’t modify contrib modules </li></ul>
    20. 32. Infrastructure
    21. 33. Infrastructure
    22. 34. Caching Strategy
    23. 35. Caching Strategy <ul><li>Cache, cache, cache </li></ul><ul><li>Design infrastructure to cache </li></ul><ul><li>Create development mindset for caching </li></ul><ul><li>Manage content scheduling expectations </li></ul>
    24. 36. Caching Strategy <ul><li>CDN or reverse proxy </li></ul><ul><li>Drupal </li></ul><ul><li>Memory </li></ul><ul><li>PHP </li></ul><ul><li>Views </li></ul><ul><li>Query </li></ul>
    25. 37. Code Deployment
    26. 38. Code Deployments <ul><li>Subversion </li></ul><ul><li>Git - simplifies branching and merging </li></ul><ul><li>Capistrano </li></ul><ul><ul><li>Deploys code from git </li></ul></ul><ul><ul><li>Compass compile CSS </li></ul></ul><ul><ul><li>Environmental settings </li></ul></ul><ul><ul><li>Script other tasks </li></ul></ul><ul><ul><li>Unit tests </li></ul></ul><ul><ul><li>Patches applied at deploy time </li></ul></ul><ul><ul><li>Clear Drupal cache </li></ul></ul>
    27. 39. Monitoring
    28. 40. Monitoring <ul><li>ganglia </li></ul><ul><li>nagios </li></ul><ul><li>email </li></ul><ul><li>sms </li></ul>
    29. 41. Agile Practices
    30. 42. Agile Practices <ul><li>2 week iterations/sprints </li></ul><ul><ul><li>code </li></ul></ul><ul><ul><li>integration testing </li></ul></ul><ul><ul><li>user acceptance testing </li></ul></ul><ul><ul><li>deployment </li></ul></ul><ul><li>Rational Team Concert (jazz.net) </li></ul><ul><ul><li>issues </li></ul></ul><ul><ul><li>estimating </li></ul></ul><ul><ul><li>iterations </li></ul></ul><ul><li>Cross functional </li></ul><ul><li>Self-organizing </li></ul><ul><li>Scrum </li></ul><ul><li>Velocity tracking </li></ul><ul><li>Pair programming </li></ul><ul><li>Open work space </li></ul>
    31. 43. What did you think? Locate this session on the DCC website: http://chicago2011.drupal.org/sessions Click the “Take the Survey” link. Thanks!