SlideShare a Scribd company logo
PHASE2TECHNOLOGY.COM
Drupal is Not
Your Web Site
!
Develop for high-scale, fragmented sites
DrupalCon Austin - June 3, 2014
!
Tobby Hagler
@thagler d.o: tobby
Presumptions and Expectations
• Beginner level discussion, but still familiar and
comfortable with site building with Drupal
• Passing familiarity with topics presented here, but not
significant experience with them
• Will be an overview of concepts; an introduction designed
to lead you to thinking about your site build approach
• Suggested modules
Overview
• What a Web site really is
• How does Drupal fit into the stack that is your Web site?
• Other elements of a Web site to consider
• Removing things from Drupal to help overall performance
• Real-time content updates on your Web site
The Web site
A location connected to the Internet that
maintains one or more pages on the
World Wide Web.
Merriam-Webster
“ ”
Drupal is not your Website
Common Page Assembly Methods
• Static (flat) HTML files
• Server-side Includes (SSI)
• CGI
• Scripting and template languages
• Content Management Systems (CMS)
• Edge-side Includes (ESI)
Server-Side Includes (SSI)
• HTTP/Web server parses files (.shtml) for commands
• <!--#include file="/path/to/file.txt" -->
• <!--#include virtual="menu.cgi" —>
• <!--#if expr="${SomeBoolean}" --> … <!--#endif -->
;
Image courtesy drupal.org
Drupal Theming & Page Assembly
• User makes request for a Web page “/node/123”
• Drupal bootstrap process begins, callback function
executed, hooks invoked, etc.
• Content is dynamically rendered to HTML via theme
functions *
• HTML document is delivered to the user
* Ignore cache and other steps for now
How the page is ultimately generated, it matters not to the Web
browser requesting the page. In the end, it will receive HTML that it
will parse, and make requests for additional elements (images, CSS
files, JavaScript files, etc.) and deliver the final presentation to the
end user.
How the page is ultimately generated, it matters not to the Web
browser requesting the page. In the end, it will receive HTML that it
will parse, and make requests for additional elements (images, CSS
files, JavaScript files, etc.) and deliver the final presentation to the
end user.
!
What the browser displays may be different than the HTML it
receives. i.e., JavaScript may hide content or make additional
requests for more things to display.
Why is Drupal
not my Web site?
A Typical Drupal Implementation
• Nodes contain articles, stories, blog posts, etc.
• Blocks provide ancillary content that can be repeated
• Views lists pages of related or similar content
• Panels allows the arrangement of content pieces
• Theme provides design and user experience
So Drupal is my Web site?
With this simple implementation, what Drupal generates and the
HTML documents the user receives are essentially the same.
!
!
2 + 2 = 4 and 2 + x* = 4 are also essentially the same.
* Where x = 2
Performance
Considerations
Document delivery costs
• Static HTML costs (practically) nothing, file I/O; difficult to
maintain (even with a CMS)
• SSI is largely file I/O and somewhat CPU intensive
• PHP code execution is memory intensive and CPU bound
• MySQL uses CPU, memory, and I/O heavily
• Resources limit the number of simultaneous users (traffic)
PHP execution is costly
Having the Web server invoke PHP, and having PHP retrieve
content and render a full HTML document on every page request is
resource intensive.
!
Drupal employs a number of caching systems and optimization to
reduce server stress.
Image courtesy drupal.org
Scaling Drupal
To be able to handle traffic, introduce multiple Web servers that all
serve Drupal’s content.
!
Employ various caching schemes in front and behind Drupal.
Drupal is not your Website
Drupal is the back-end
When behind Varnish or a CDN, the (unauthenticated) Web user
does not interact with Drupal directly*. The request is handled by
delivering content from cache, returning the same HTML document
sent to any other user requesting the same path. Drupal does not
and cannot return something different since the request is not sent
to Drupal.
* Assuming cache is already primed
Fragmentation
Drupal and Fragmentation
Drupal is already doing enough. It doesn’t need to do additional
processing to fetch content and ingest it. Offload some of the work
to other services. It’s OK to decentralize.
!
Use 3rd-party services because that’s where the content originates.
!
Sometimes Drupal isn’t the best thing to handle all of your content
Assembling Fragments
• Client-side Javascript
• AJAX
• WebSockets
• Varnish/CDN Edge-Side Includes
• Include content into a Varnish-cached page
Drupal is not your Website
Typical 3rd-Party Content
• User comments (Facebook, Disqus, LiveFyre)
• Twitter
• Real-time scores or standings
• Web pages hosted on legacy systems
• Breaking news alerts
• Analytics
Externally Hosted Comments
Externally Hosted Comments
Most commenting systems provide code (HTML, JavaScript, etc.)
that can be placed on the page.
!
Simply adding code and simple references to the parent page are
all that is needed. Drupal is otherwise unaware of that content.
Implementing Real-Time Updates
• WebSocket specification
• WebSocket JavaScript Interface
• Socket.IO — Node.js project
• JavaScript framework and WebSocket API with long
polling
• Jetty — Java servlets and HTTP server
Live Scoring & Real-Time Updates
Socket.io
<script	
  src="/socket.io/socket.io.js"></script>	
  
<script>	
  
	
  	
  var	
  socket	
  =	
  io.connect('http://localhost');	
  
	
  	
  socket.on('scores',	
  function	
  (data)	
  {	
  
	
  	
  	
  	
  console.log(data);	
  
	
  	
  	
  	
  socket.emit('score	
  event',	
  {	
  my:	
  'data'	
  });	
  
	
  	
  });	
  
</script>
Live Scoring & Real-Time Updates
• The node template places a placeholder with a token for
the score block
• Browser makes asynchronous HTTP request to the scoring
server, establishing a web socket between server and client
• Score changes are pushed to browser without polling or
updating the page
• Drupal is unaware of the content of that placeholder
Edge-Side Includes
Varnish and many CDNs established the ESI specification.
!
Allows for fragments of content to reside elsewhere and be
assembled on the Edge.
!
Allows for mixing of unauthenticated (cached) content with
authenticated elements (i.e., “Welcome user”).
ESI Fragments
• Register a menu callback in Drupal to generate content
with an abbreviated callback
• /esi/user/welcome/f1667cc8f3f9f55a
• <esi:include src=“/path/to/callback”/>
• <esi:include src="http://example.com/some/path"/>
Drupal is not your Website
Authenticated/Unauthenticated
• Authenticated traffic bypasses much of the caching layer
• Use ESI to provide customized service on an otherwise
unauthenticated, cached page
• An unauthenticated page is heavily cached; ESI provides
the customization users are used to seeing
Drupal Modules and Resources
• drupal.org/project/cdn
• drupal.org/project/esi
• socket.io
• www.varnish-cache.org/docs/3.0/tutorial/esi.html
• www.akamai.com/html/support/esi.html
Questions?
Software Architect
Email: thagler@phase2technology.com
Tobby Hagler
Twitter: @thagler
Drupal.org: tobby
PHASE2TECHNOLOGY.COM

More Related Content

What's hot (20)

SilverStripe From a Developer's Perspective
SilverStripe From a Developer's PerspectiveSilverStripe From a Developer's Perspective
SilverStripe From a Developer's Perspective
ajshort
 
HTML 5
HTML 5HTML 5
HTML 5
Rajan Pal
 
The SharePoint & jQuery Guide
The SharePoint & jQuery GuideThe SharePoint & jQuery Guide
The SharePoint & jQuery Guide
Mark Rackley
 
HTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile appsHTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile apps
Ivano Malavolta
 
Local storage
Local storageLocal storage
Local storage
Adam Crabtree
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
Paul Klipp
 
SharePoint Performance
SharePoint PerformanceSharePoint Performance
SharePoint Performance
Jeroen Schoenmakers
 
Building faster websites: web performance with WordPress
Building faster websites: web performance with WordPressBuilding faster websites: web performance with WordPress
Building faster websites: web performance with WordPress
Johannes Siipola
 
Websites Unlimited - Pay Monthly Websites
Websites Unlimited - Pay Monthly WebsitesWebsites Unlimited - Pay Monthly Websites
Websites Unlimited - Pay Monthly Websites
websiteunlimited
 
Angular - Chapter 6 - Firebase Integration
Angular - Chapter 6 - Firebase IntegrationAngular - Chapter 6 - Firebase Integration
Angular - Chapter 6 - Firebase Integration
WebStackAcademy
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M users
Jongyoon Choi
 
Local Storage for Web Applications
Local Storage for Web ApplicationsLocal Storage for Web Applications
Local Storage for Web Applications
Markku Laine
 
Break out of The Box - Part 2
Break out of The Box - Part 2Break out of The Box - Part 2
Break out of The Box - Part 2
Karl-Henry Martinsson
 
HTML5 Local Storage
HTML5 Local StorageHTML5 Local Storage
HTML5 Local Storage
Lior Zamir
 
AD102 - Break out of the Box
AD102 - Break out of the BoxAD102 - Break out of the Box
AD102 - Break out of the Box
Karl-Henry Martinsson
 
IBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the BoxIBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the Box
Karl-Henry Martinsson
 
SEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointSEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePoint
Marc D Anderson
 
jmp206 - Lotus Domino Web Services Jumpstart
jmp206 - Lotus Domino Web Services Jumpstartjmp206 - Lotus Domino Web Services Jumpstart
jmp206 - Lotus Domino Web Services Jumpstart
Bill Buchan
 
Become a Better Developer with Debugging Techniques for Drupal (and more!)
Become a Better Developer with Debugging Techniques for Drupal (and more!)Become a Better Developer with Debugging Techniques for Drupal (and more!)
Become a Better Developer with Debugging Techniques for Drupal (and more!)
Acquia
 
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Yu-Hsin Hung
 
SilverStripe From a Developer's Perspective
SilverStripe From a Developer's PerspectiveSilverStripe From a Developer's Perspective
SilverStripe From a Developer's Perspective
ajshort
 
The SharePoint & jQuery Guide
The SharePoint & jQuery GuideThe SharePoint & jQuery Guide
The SharePoint & jQuery Guide
Mark Rackley
 
HTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile appsHTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile apps
Ivano Malavolta
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
Paul Klipp
 
Building faster websites: web performance with WordPress
Building faster websites: web performance with WordPressBuilding faster websites: web performance with WordPress
Building faster websites: web performance with WordPress
Johannes Siipola
 
Websites Unlimited - Pay Monthly Websites
Websites Unlimited - Pay Monthly WebsitesWebsites Unlimited - Pay Monthly Websites
Websites Unlimited - Pay Monthly Websites
websiteunlimited
 
Angular - Chapter 6 - Firebase Integration
Angular - Chapter 6 - Firebase IntegrationAngular - Chapter 6 - Firebase Integration
Angular - Chapter 6 - Firebase Integration
WebStackAcademy
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M users
Jongyoon Choi
 
Local Storage for Web Applications
Local Storage for Web ApplicationsLocal Storage for Web Applications
Local Storage for Web Applications
Markku Laine
 
HTML5 Local Storage
HTML5 Local StorageHTML5 Local Storage
HTML5 Local Storage
Lior Zamir
 
IBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the BoxIBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the Box
Karl-Henry Martinsson
 
SEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointSEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePoint
Marc D Anderson
 
jmp206 - Lotus Domino Web Services Jumpstart
jmp206 - Lotus Domino Web Services Jumpstartjmp206 - Lotus Domino Web Services Jumpstart
jmp206 - Lotus Domino Web Services Jumpstart
Bill Buchan
 
Become a Better Developer with Debugging Techniques for Drupal (and more!)
Become a Better Developer with Debugging Techniques for Drupal (and more!)Become a Better Developer with Debugging Techniques for Drupal (and more!)
Become a Better Developer with Debugging Techniques for Drupal (and more!)
Acquia
 
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Yu-Hsin Hung
 

Similar to Drupal is not your Website (20)

Week 05 Web, App and Javascript_Brandon, S.H. Wu
Week 05 Web, App and Javascript_Brandon, S.H. WuWeek 05 Web, App and Javascript_Brandon, S.H. Wu
Week 05 Web, App and Javascript_Brandon, S.H. Wu
AppUniverz Org
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
Tom Johnson
 
Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...
boxuno
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
Henry S
 
JavaScript Service Worker Design Patterns for Better User Experience
JavaScript Service Worker Design Patterns for Better User ExperienceJavaScript Service Worker Design Patterns for Better User Experience
JavaScript Service Worker Design Patterns for Better User Experience
reeder29
 
Week 1 - Interactive News Editing and Producing
Week 1 - Interactive News Editing and ProducingWeek 1 - Interactive News Editing and Producing
Week 1 - Interactive News Editing and Producing
kurtgessler
 
Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web development
Stevie T
 
Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2
Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2
Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2
Richard Esplin
 
Open Source Content Management Systems
Open Source Content Management SystemsOpen Source Content Management Systems
Open Source Content Management Systems
Matthew Turland
 
Javascript for Wep Apps
Javascript for Wep AppsJavascript for Wep Apps
Javascript for Wep Apps
Michael Puckett
 
Introduction To Drupal
Introduction To DrupalIntroduction To Drupal
Introduction To Drupal
Lauren Roth
 
WebDev Crash Course
WebDev Crash CourseWebDev Crash Course
WebDev Crash Course
Cesar Martinez
 
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
SPTechCon
 
Top 10 HTML5 Features for Oracle Cloud Developers
Top 10 HTML5 Features for Oracle Cloud DevelopersTop 10 HTML5 Features for Oracle Cloud Developers
Top 10 HTML5 Features for Oracle Cloud Developers
Brian Huff
 
INTRO TO JAVASCRIPT basic to adcance.ppt
INTRO TO JAVASCRIPT basic to adcance.pptINTRO TO JAVASCRIPT basic to adcance.ppt
INTRO TO JAVASCRIPT basic to adcance.ppt
testvarun21
 
Prueba ppt
Prueba pptPrueba ppt
Prueba ppt
Ulises Torelli
 
Html5v1
Html5v1Html5v1
Html5v1
Ulises Torelli
 
Drupal: an Overview
Drupal: an OverviewDrupal: an Overview
Drupal: an Overview
Matt Weaver
 
BITM3730Week12.pptx
BITM3730Week12.pptxBITM3730Week12.pptx
BITM3730Week12.pptx
MattMarino13
 
Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta
Commit University
 
Week 05 Web, App and Javascript_Brandon, S.H. Wu
Week 05 Web, App and Javascript_Brandon, S.H. WuWeek 05 Web, App and Javascript_Brandon, S.H. Wu
Week 05 Web, App and Javascript_Brandon, S.H. Wu
AppUniverz Org
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
Tom Johnson
 
Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...
boxuno
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
Henry S
 
JavaScript Service Worker Design Patterns for Better User Experience
JavaScript Service Worker Design Patterns for Better User ExperienceJavaScript Service Worker Design Patterns for Better User Experience
JavaScript Service Worker Design Patterns for Better User Experience
reeder29
 
Week 1 - Interactive News Editing and Producing
Week 1 - Interactive News Editing and ProducingWeek 1 - Interactive News Editing and Producing
Week 1 - Interactive News Editing and Producing
kurtgessler
 
Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web development
Stevie T
 
Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2
Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2
Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2
Richard Esplin
 
Open Source Content Management Systems
Open Source Content Management SystemsOpen Source Content Management Systems
Open Source Content Management Systems
Matthew Turland
 
Introduction To Drupal
Introduction To DrupalIntroduction To Drupal
Introduction To Drupal
Lauren Roth
 
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
SPTechCon
 
Top 10 HTML5 Features for Oracle Cloud Developers
Top 10 HTML5 Features for Oracle Cloud DevelopersTop 10 HTML5 Features for Oracle Cloud Developers
Top 10 HTML5 Features for Oracle Cloud Developers
Brian Huff
 
INTRO TO JAVASCRIPT basic to adcance.ppt
INTRO TO JAVASCRIPT basic to adcance.pptINTRO TO JAVASCRIPT basic to adcance.ppt
INTRO TO JAVASCRIPT basic to adcance.ppt
testvarun21
 
Drupal: an Overview
Drupal: an OverviewDrupal: an Overview
Drupal: an Overview
Matt Weaver
 
BITM3730Week12.pptx
BITM3730Week12.pptxBITM3730Week12.pptx
BITM3730Week12.pptx
MattMarino13
 
Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta
Commit University
 

More from Phase2 (20)

Phase2 Health and Wellness Brochure
Phase2 Health and Wellness BrochurePhase2 Health and Wellness Brochure
Phase2 Health and Wellness Brochure
Phase2
 
A Modern Digital Experience Platform
A Modern Digital Experience PlatformA Modern Digital Experience Platform
A Modern Digital Experience Platform
Phase2
 
Beyond websites: A Modern Digital Experience Platform
Beyond websites: A Modern Digital Experience PlatformBeyond websites: A Modern Digital Experience Platform
Beyond websites: A Modern Digital Experience Platform
Phase2
 
Omnichannel For Government
Omnichannel For Government Omnichannel For Government
Omnichannel For Government
Phase2
 
Bad camp2016 Release Management On Live Websites
Bad camp2016 Release Management On Live WebsitesBad camp2016 Release Management On Live Websites
Bad camp2016 Release Management On Live Websites
Phase2
 
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
Phase2
 
The Future of Digital Storytelling - Phase2 Talk
The Future of Digital Storytelling - Phase2 TalkThe Future of Digital Storytelling - Phase2 Talk
The Future of Digital Storytelling - Phase2 Talk
Phase2
 
Site building with end user in mind
Site building with end user in mindSite building with end user in mind
Site building with end user in mind
Phase2
 
Fields, entities, lists, oh my!
Fields, entities, lists, oh my!Fields, entities, lists, oh my!
Fields, entities, lists, oh my!
Phase2
 
Performance Profiling Tools and Tricks
Performance Profiling Tools and TricksPerformance Profiling Tools and Tricks
Performance Profiling Tools and Tricks
Phase2
 
NORTH CAROLINA Open Source, OpenPublic, OpenShift
NORTH CAROLINA Open Source, OpenPublic, OpenShiftNORTH CAROLINA Open Source, OpenPublic, OpenShift
NORTH CAROLINA Open Source, OpenPublic, OpenShift
Phase2
 
Drupal 8 for Enterprise: D8 in a Changing Digital Landscape
Drupal 8 for Enterprise: D8 in a Changing Digital LandscapeDrupal 8 for Enterprise: D8 in a Changing Digital Landscape
Drupal 8 for Enterprise: D8 in a Changing Digital Landscape
Phase2
 
Riding the Drupal Wave: The Future for Drupal and Open Source Content Manage...
Riding the Drupal Wave:  The Future for Drupal and Open Source Content Manage...Riding the Drupal Wave:  The Future for Drupal and Open Source Content Manage...
Riding the Drupal Wave: The Future for Drupal and Open Source Content Manage...
Phase2
 
Site Building with the End User in Mind
Site Building with the End User in MindSite Building with the End User in Mind
Site Building with the End User in Mind
Phase2
 
The Yes, No, and Maybe of "Can We Build That With Drupal?"
The Yes, No, and Maybe of "Can We Build That With Drupal?"The Yes, No, and Maybe of "Can We Build That With Drupal?"
The Yes, No, and Maybe of "Can We Build That With Drupal?"
Phase2
 
User Testing For Humanitarian ID App
User Testing For Humanitarian ID AppUser Testing For Humanitarian ID App
User Testing For Humanitarian ID App
Phase2
 
Redhat.com: An Architectural Case Study
Redhat.com: An Architectural Case StudyRedhat.com: An Architectural Case Study
Redhat.com: An Architectural Case Study
Phase2
 
The New Design Workflow
The New Design WorkflowThe New Design Workflow
The New Design Workflow
Phase2
 
Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)
Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)
Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)
Phase2
 
Memorial Sloan Kettering: Adventures in Drupal 8
Memorial Sloan Kettering: Adventures in Drupal 8Memorial Sloan Kettering: Adventures in Drupal 8
Memorial Sloan Kettering: Adventures in Drupal 8
Phase2
 
Phase2 Health and Wellness Brochure
Phase2 Health and Wellness BrochurePhase2 Health and Wellness Brochure
Phase2 Health and Wellness Brochure
Phase2
 
A Modern Digital Experience Platform
A Modern Digital Experience PlatformA Modern Digital Experience Platform
A Modern Digital Experience Platform
Phase2
 
Beyond websites: A Modern Digital Experience Platform
Beyond websites: A Modern Digital Experience PlatformBeyond websites: A Modern Digital Experience Platform
Beyond websites: A Modern Digital Experience Platform
Phase2
 
Omnichannel For Government
Omnichannel For Government Omnichannel For Government
Omnichannel For Government
Phase2
 
Bad camp2016 Release Management On Live Websites
Bad camp2016 Release Management On Live WebsitesBad camp2016 Release Management On Live Websites
Bad camp2016 Release Management On Live Websites
Phase2
 
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
Phase2
 
The Future of Digital Storytelling - Phase2 Talk
The Future of Digital Storytelling - Phase2 TalkThe Future of Digital Storytelling - Phase2 Talk
The Future of Digital Storytelling - Phase2 Talk
Phase2
 
Site building with end user in mind
Site building with end user in mindSite building with end user in mind
Site building with end user in mind
Phase2
 
Fields, entities, lists, oh my!
Fields, entities, lists, oh my!Fields, entities, lists, oh my!
Fields, entities, lists, oh my!
Phase2
 
Performance Profiling Tools and Tricks
Performance Profiling Tools and TricksPerformance Profiling Tools and Tricks
Performance Profiling Tools and Tricks
Phase2
 
NORTH CAROLINA Open Source, OpenPublic, OpenShift
NORTH CAROLINA Open Source, OpenPublic, OpenShiftNORTH CAROLINA Open Source, OpenPublic, OpenShift
NORTH CAROLINA Open Source, OpenPublic, OpenShift
Phase2
 
Drupal 8 for Enterprise: D8 in a Changing Digital Landscape
Drupal 8 for Enterprise: D8 in a Changing Digital LandscapeDrupal 8 for Enterprise: D8 in a Changing Digital Landscape
Drupal 8 for Enterprise: D8 in a Changing Digital Landscape
Phase2
 
Riding the Drupal Wave: The Future for Drupal and Open Source Content Manage...
Riding the Drupal Wave:  The Future for Drupal and Open Source Content Manage...Riding the Drupal Wave:  The Future for Drupal and Open Source Content Manage...
Riding the Drupal Wave: The Future for Drupal and Open Source Content Manage...
Phase2
 
Site Building with the End User in Mind
Site Building with the End User in MindSite Building with the End User in Mind
Site Building with the End User in Mind
Phase2
 
The Yes, No, and Maybe of "Can We Build That With Drupal?"
The Yes, No, and Maybe of "Can We Build That With Drupal?"The Yes, No, and Maybe of "Can We Build That With Drupal?"
The Yes, No, and Maybe of "Can We Build That With Drupal?"
Phase2
 
User Testing For Humanitarian ID App
User Testing For Humanitarian ID AppUser Testing For Humanitarian ID App
User Testing For Humanitarian ID App
Phase2
 
Redhat.com: An Architectural Case Study
Redhat.com: An Architectural Case StudyRedhat.com: An Architectural Case Study
Redhat.com: An Architectural Case Study
Phase2
 
The New Design Workflow
The New Design WorkflowThe New Design Workflow
The New Design Workflow
Phase2
 
Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)
Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)
Drupal 8, Don’t Be Late (Enterprise Orgs, We’re Looking at You)
Phase2
 
Memorial Sloan Kettering: Adventures in Drupal 8
Memorial Sloan Kettering: Adventures in Drupal 8Memorial Sloan Kettering: Adventures in Drupal 8
Memorial Sloan Kettering: Adventures in Drupal 8
Phase2
 

Recently uploaded (20)

AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 

Drupal is not your Website

  • 2. Drupal is Not Your Web Site ! Develop for high-scale, fragmented sites DrupalCon Austin - June 3, 2014 ! Tobby Hagler @thagler d.o: tobby
  • 3. Presumptions and Expectations • Beginner level discussion, but still familiar and comfortable with site building with Drupal • Passing familiarity with topics presented here, but not significant experience with them • Will be an overview of concepts; an introduction designed to lead you to thinking about your site build approach • Suggested modules
  • 4. Overview • What a Web site really is • How does Drupal fit into the stack that is your Web site? • Other elements of a Web site to consider • Removing things from Drupal to help overall performance • Real-time content updates on your Web site
  • 6. A location connected to the Internet that maintains one or more pages on the World Wide Web. Merriam-Webster “ ”
  • 8. Common Page Assembly Methods • Static (flat) HTML files • Server-side Includes (SSI) • CGI • Scripting and template languages • Content Management Systems (CMS) • Edge-side Includes (ESI)
  • 9. Server-Side Includes (SSI) • HTTP/Web server parses files (.shtml) for commands • <!--#include file="/path/to/file.txt" --> • <!--#include virtual="menu.cgi" —> • <!--#if expr="${SomeBoolean}" --> … <!--#endif -->
  • 10. ;
  • 12. Drupal Theming & Page Assembly • User makes request for a Web page “/node/123” • Drupal bootstrap process begins, callback function executed, hooks invoked, etc. • Content is dynamically rendered to HTML via theme functions * • HTML document is delivered to the user * Ignore cache and other steps for now
  • 13. How the page is ultimately generated, it matters not to the Web browser requesting the page. In the end, it will receive HTML that it will parse, and make requests for additional elements (images, CSS files, JavaScript files, etc.) and deliver the final presentation to the end user.
  • 14. How the page is ultimately generated, it matters not to the Web browser requesting the page. In the end, it will receive HTML that it will parse, and make requests for additional elements (images, CSS files, JavaScript files, etc.) and deliver the final presentation to the end user. ! What the browser displays may be different than the HTML it receives. i.e., JavaScript may hide content or make additional requests for more things to display.
  • 15. Why is Drupal not my Web site?
  • 16. A Typical Drupal Implementation • Nodes contain articles, stories, blog posts, etc. • Blocks provide ancillary content that can be repeated • Views lists pages of related or similar content • Panels allows the arrangement of content pieces • Theme provides design and user experience
  • 17. So Drupal is my Web site? With this simple implementation, what Drupal generates and the HTML documents the user receives are essentially the same. ! ! 2 + 2 = 4 and 2 + x* = 4 are also essentially the same. * Where x = 2
  • 19. Document delivery costs • Static HTML costs (practically) nothing, file I/O; difficult to maintain (even with a CMS) • SSI is largely file I/O and somewhat CPU intensive • PHP code execution is memory intensive and CPU bound • MySQL uses CPU, memory, and I/O heavily • Resources limit the number of simultaneous users (traffic)
  • 20. PHP execution is costly Having the Web server invoke PHP, and having PHP retrieve content and render a full HTML document on every page request is resource intensive. ! Drupal employs a number of caching systems and optimization to reduce server stress.
  • 22. Scaling Drupal To be able to handle traffic, introduce multiple Web servers that all serve Drupal’s content. ! Employ various caching schemes in front and behind Drupal.
  • 24. Drupal is the back-end When behind Varnish or a CDN, the (unauthenticated) Web user does not interact with Drupal directly*. The request is handled by delivering content from cache, returning the same HTML document sent to any other user requesting the same path. Drupal does not and cannot return something different since the request is not sent to Drupal. * Assuming cache is already primed
  • 26. Drupal and Fragmentation Drupal is already doing enough. It doesn’t need to do additional processing to fetch content and ingest it. Offload some of the work to other services. It’s OK to decentralize. ! Use 3rd-party services because that’s where the content originates. ! Sometimes Drupal isn’t the best thing to handle all of your content
  • 27. Assembling Fragments • Client-side Javascript • AJAX • WebSockets • Varnish/CDN Edge-Side Includes • Include content into a Varnish-cached page
  • 29. Typical 3rd-Party Content • User comments (Facebook, Disqus, LiveFyre) • Twitter • Real-time scores or standings • Web pages hosted on legacy systems • Breaking news alerts • Analytics
  • 31. Externally Hosted Comments Most commenting systems provide code (HTML, JavaScript, etc.) that can be placed on the page. ! Simply adding code and simple references to the parent page are all that is needed. Drupal is otherwise unaware of that content.
  • 32. Implementing Real-Time Updates • WebSocket specification • WebSocket JavaScript Interface • Socket.IO — Node.js project • JavaScript framework and WebSocket API with long polling • Jetty — Java servlets and HTTP server
  • 33. Live Scoring & Real-Time Updates
  • 34. Socket.io <script  src="/socket.io/socket.io.js"></script>   <script>      var  socket  =  io.connect('http://localhost');      socket.on('scores',  function  (data)  {          console.log(data);          socket.emit('score  event',  {  my:  'data'  });      });   </script>
  • 35. Live Scoring & Real-Time Updates • The node template places a placeholder with a token for the score block • Browser makes asynchronous HTTP request to the scoring server, establishing a web socket between server and client • Score changes are pushed to browser without polling or updating the page • Drupal is unaware of the content of that placeholder
  • 36. Edge-Side Includes Varnish and many CDNs established the ESI specification. ! Allows for fragments of content to reside elsewhere and be assembled on the Edge. ! Allows for mixing of unauthenticated (cached) content with authenticated elements (i.e., “Welcome user”).
  • 37. ESI Fragments • Register a menu callback in Drupal to generate content with an abbreviated callback • /esi/user/welcome/f1667cc8f3f9f55a • <esi:include src=“/path/to/callback”/> • <esi:include src="http://example.com/some/path"/>
  • 39. Authenticated/Unauthenticated • Authenticated traffic bypasses much of the caching layer • Use ESI to provide customized service on an otherwise unauthenticated, cached page • An unauthenticated page is heavily cached; ESI provides the customization users are used to seeing
  • 40. Drupal Modules and Resources • drupal.org/project/cdn • drupal.org/project/esi • socket.io • www.varnish-cache.org/docs/3.0/tutorial/esi.html • www.akamai.com/html/support/esi.html
  • 42. Software Architect Email: [email protected] Tobby Hagler Twitter: @thagler Drupal.org: tobby