Author image
Senior Developer

Drupal as a Server - Introduction

This post is the first in a series about getting Drupal to run as a persistent server, responding to requests without bootstrapping each and every time.

This is how many other application frameworks and languages run: nodejs, Rails etc.

In those systems you start some instances of your application and then they do whatever bootstrapping they need to do and then they enter an endless loop waiting for requests.

I recently upgraded our internally hosted Redmine server to run on Ruby 2.3 and during that upgrade took a look at our NewRelic monitoring for the application. Some of the page requests had an average response time of 8ms. These were page requests for logged in users. That would be amazing performance for a Drupal page.

Performance like this changes the way you write applications. I wondered if Drupal could provide similar performance.

This series hasn't been written yet, I'm going to set out what I want to do with it, and we'll see where we get to. Feel free to post things in the comments etc. as we go along.

Roadmap

  1. Get DaaS working for just Drupal core. https://www.drupal.org/node/2218651 is going to provide the starting point for this, as it looks like other people have already done all the heavy lifting, hurrah for open source.
  2. Take one of our more complicated client websites and get that running DaaS too.
  3. Test that the output from a 'normal' Drupal and DaaS is identical. This will likely require writing some sort of test that goes and makes lots of page requests, changes settings etc.
  4. Run some performance tests to see how fast DaaS can be.
  5. See what issues crop up, memory leaks etc. and see what things can be done to mitigate those.
  6. Work out how deployments and distribution of the application would work.