SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
PHASE2TECHNOLOGY.COM
Drupal Is Not
Your Web Site
Develop for high-scale, fragmented sites
DrupalCon Los Angeles 2015
Tobby Hagler
@thagler d.o: tobby
Presumptions and Expectations
• Intermediate level session, but experienced with site
building with Drupal and basic Devops
• Passing familiarity with the 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 architecture
• Suggested modules and resources for implementation
Overview
• What a Web site really is
• The Origin and the Edge
• How does Drupal fit into your complete web sites’s stack?
• Other elements of a Web site to consider
• Removing things from Drupal to help overall performance
• Real-time and custom content updates on your Web site
A Brief Analogy
The Mighty Mississippi
Where does the Mississippi River begin?
Thousands of smaller estuaries
converge to give the Mississippi a start
The mouth of the Mississippi looks
nothing like the origin
Content Inclusion
From Origin to final output, many other
sources get included at different levels
of the stack
Origin isn’t aware of other sources or
how the final output will appear
The Web Site
A location connected to the Internet that
maintains one or more pages on the
World Wide Web.
Merriam-Webster
“ ”
http://info.cern.ch/hypertext/WWW/TheProject.html
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)
• Client-side assembly (Big Pipe)
Server-Side Includes (SSI)
• HTTP/Web server parses (.shtml) files 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
The Web browser doesn’t care how the page is ultimately
generated. 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.
The Web browser doesn’t care how the page is ultimately
generated. 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. JavaScript may hide content or make additional requests
for more things to display (e.g., Single-page apps, Big Pipe)
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 compared 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 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 Drupal never receives
the HTTP request.
* 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
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.
Client-side Assembly
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"/>
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

Más contenido relacionado

La actualidad más candente

Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
Paul Klipp
 

La actualidad más candente (20)

facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M users
 
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!)
 
Migrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
Migrating to Drupal 8: How to Migrate Your Content and Minimize the RisksMigrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
Migrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
 
Easy javascript
Easy javascriptEasy javascript
Easy javascript
 
HTML5 features & JavaScript APIs
HTML5 features & JavaScript APIsHTML5 features & JavaScript APIs
HTML5 features & JavaScript APIs
 
Drupal is from Mars, Wordpress is from Venus: Finding your library's CMS soul...
Drupal is from Mars, Wordpress is from Venus: Finding your library's CMS soul...Drupal is from Mars, Wordpress is from Venus: Finding your library's CMS soul...
Drupal is from Mars, Wordpress is from Venus: Finding your library's CMS soul...
 
Drupal nagw
Drupal nagwDrupal nagw
Drupal nagw
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
 
Les Basiques - Web Développement HTML5, CSS3, JS et PHP
Les Basiques - Web  Développement HTML5, CSS3, JS et PHPLes Basiques - Web  Développement HTML5, CSS3, JS et PHP
Les Basiques - Web Développement HTML5, CSS3, JS et PHP
 
Ajax Patterns : Periodic Refresh & Multi Stage Download
Ajax Patterns : Periodic Refresh & Multi Stage DownloadAjax Patterns : Periodic Refresh & Multi Stage Download
Ajax Patterns : Periodic Refresh & Multi Stage Download
 
SilverStripe From a Developer's Perspective
SilverStripe From a Developer's PerspectiveSilverStripe From a Developer's Perspective
SilverStripe From a Developer's Perspective
 
Websites Unlimited - Pay Monthly Websites
Websites Unlimited - Pay Monthly WebsitesWebsites Unlimited - Pay Monthly Websites
Websites Unlimited - Pay Monthly Websites
 
Html5 shubelal
Html5 shubelalHtml5 shubelal
Html5 shubelal
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
 
Fundamentals of web_design_v2
Fundamentals of web_design_v2Fundamentals of web_design_v2
Fundamentals of web_design_v2
 
Is DITA Simple, Complex or Too Complex
Is DITA Simple, Complex or Too ComplexIs DITA Simple, Complex or Too Complex
Is DITA Simple, Complex or Too Complex
 
Ajax
AjaxAjax
Ajax
 
jmp206 - Lotus Domino Web Services Jumpstart
jmp206 - Lotus Domino Web Services Jumpstartjmp206 - Lotus Domino Web Services Jumpstart
jmp206 - Lotus Domino Web Services Jumpstart
 
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Caching Strategies for Scaling Drupal: Common Missteps vs Best PracticesCaching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
 
Angular - Chapter 6 - Firebase Integration
Angular - Chapter 6 - Firebase IntegrationAngular - Chapter 6 - Firebase Integration
Angular - Chapter 6 - Firebase Integration
 

Similar a Drupal Is Not Your Web Site

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
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
Jeanho Chu
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
Jeanho Chu
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
Acquia
 

Similar a Drupal Is Not Your Web Site (20)

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
 
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
 
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
 
DrupalCampLA 2014 - Drupal backend performance and scalability
DrupalCampLA 2014 - Drupal backend performance and scalabilityDrupalCampLA 2014 - Drupal backend performance and scalability
DrupalCampLA 2014 - Drupal backend performance and scalability
 
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
 
WebDev Crash Course
WebDev Crash CourseWebDev Crash Course
WebDev Crash Course
 
Javascript for Wep Apps
Javascript for Wep AppsJavascript for Wep Apps
Javascript for Wep Apps
 
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 ...
 
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
 
Php reports sumit
Php reports sumitPhp reports sumit
Php reports sumit
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
 
Drupal: an Overview
Drupal: an OverviewDrupal: an Overview
Drupal: an Overview
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
 
BITM3730Week12.pptx
BITM3730Week12.pptxBITM3730Week12.pptx
BITM3730Week12.pptx
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
 
Creating a Documentation Portal
Creating a Documentation PortalCreating a Documentation Portal
Creating a Documentation Portal
 
sell idea
sell ideasell idea
sell idea
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 
Servlets as introduction (Advanced programming)
Servlets as introduction (Advanced programming)Servlets as introduction (Advanced programming)
Servlets as introduction (Advanced programming)
 
Introduction to Jquery
Introduction to JqueryIntroduction to Jquery
Introduction to Jquery
 

Más de 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 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
 

Más de Phase2 (20)

Phase2 Health and Wellness Brochure
Phase2 Health and Wellness BrochurePhase2 Health and Wellness Brochure
Phase2 Health and Wellness Brochure
 
A Modern Digital Experience Platform
A Modern Digital Experience PlatformA Modern Digital Experience Platform
A Modern Digital Experience Platform
 
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
 
Omnichannel For Government
Omnichannel For Government Omnichannel For Government
Omnichannel For Government
 
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
 
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
 
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
 
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
 
Fields, entities, lists, oh my!
Fields, entities, lists, oh my!Fields, entities, lists, oh my!
Fields, entities, lists, oh my!
 
Performance Profiling Tools and Tricks
Performance Profiling Tools and TricksPerformance Profiling Tools and Tricks
Performance Profiling Tools and Tricks
 
NORTH CAROLINA Open Source, OpenPublic, OpenShift
NORTH CAROLINA Open Source, OpenPublic, OpenShiftNORTH CAROLINA Open Source, OpenPublic, OpenShift
NORTH CAROLINA Open Source, OpenPublic, OpenShift
 
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
 
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...
 
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
 
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?"
 
User Testing For Humanitarian ID App
User Testing For Humanitarian ID AppUser Testing For Humanitarian ID App
User Testing For Humanitarian ID App
 
Redhat.com: An Architectural Case Study
Redhat.com: An Architectural Case StudyRedhat.com: An Architectural Case Study
Redhat.com: An Architectural Case Study
 
The New Design Workflow
The New Design WorkflowThe New Design Workflow
The New Design Workflow
 
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)
 
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
 

Último

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Último (20)

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 

Drupal Is Not Your Web Site

  • 2. Drupal Is Not Your Web Site Develop for high-scale, fragmented sites DrupalCon Los Angeles 2015 Tobby Hagler @thagler d.o: tobby
  • 3. Presumptions and Expectations • Intermediate level session, but experienced with site building with Drupal and basic Devops • Passing familiarity with the 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 architecture • Suggested modules and resources for implementation
  • 4. Overview • What a Web site really is • The Origin and the Edge • How does Drupal fit into your complete web sites’s stack? • Other elements of a Web site to consider • Removing things from Drupal to help overall performance • Real-time and custom content updates on your Web site
  • 6. The Mighty Mississippi Where does the Mississippi River begin? Thousands of smaller estuaries converge to give the Mississippi a start The mouth of the Mississippi looks nothing like the origin
  • 7. Content Inclusion From Origin to final output, many other sources get included at different levels of the stack Origin isn’t aware of other sources or how the final output will appear
  • 9. A location connected to the Internet that maintains one or more pages on the World Wide Web. Merriam-Webster “ ”
  • 11. 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) • Client-side assembly (Big Pipe)
  • 12. Server-Side Includes (SSI) • HTTP/Web server parses (.shtml) files for commands • <!--#include file="/path/to/file.txt" --> • <!--#include virtual="menu.cgi" —> • <!--#if expr="${SomeBoolean}" --> … <!--#endif -->
  • 13. ;
  • 15. 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
  • 16. The Web browser doesn’t care how the page is ultimately generated. 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.
  • 17. The Web browser doesn’t care how the page is ultimately generated. 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. JavaScript may hide content or make additional requests for more things to display (e.g., Single-page apps, Big Pipe)
  • 18. Why is Drupal not my Web site?
  • 19. 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
  • 20. 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
  • 22. Document delivery costs • Static HTML costs (practically) nothing, file I/O; difficult to maintain compared 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)
  • 23. 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.
  • 25. 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.
  • 26.
  • 27. 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 Drupal never receives the HTTP request. * Assuming cache is already primed
  • 29. 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
  • 30. Assembling Fragments • Client-side Javascript • AJAX • WebSockets • Varnish/CDN Edge-Side Includes • Include content into a Varnish-cached page
  • 31.
  • 32. 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
  • 34. 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.
  • 36. 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
  • 37. Live Scoring & Real-Time Updates
  • 38. 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>
  • 39. 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
  • 40. 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”).
  • 41. 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"/>
  • 42. 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
  • 43.
  • 44. 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
  • 46. Software Architect Email: thagler@phase2technology.com Tobby Hagler Twitter: @thagler Drupal.org: tobby