Production and development environments optimized for Drupal
Development and production environments optimized and configured with a Drupal web stack with all the guarantees.
Our base stack allows the hosting of a Drupal application ready to cope with high traffic without requiring a large infrastructure. Optimized both to serve Drupal and allow agile development of new features, this stack is suitable for the vast majority of Drupal-based platforms.
- Apache web server.
- FPM PHP engine.
- Cache layer, SSL termination and static content using NGINX.
- MariaDB database.
- In-memory cache with Redis.
The trunk of a web application is its web server. Apache, the most widely used webserver, is perfectly adapted to Drupal, so it requires less tuning than other servers. This is mainly because in case Drupal or a module requires any webserver configuration it is always provided at least for Apache. It is easy to adapt the configuration to other servers, but it is an additional step that is unnecessary when using Apache.
FPM PHP engine
FastCGI Process Manager (FPM) is responsible for managing the PHP processes that serve content to the webserver. It is oriented to sites with high traffic and is the optimal choice for a Drupal stack.
Cache layer, SSL termination and static content using NGINX
NGINX is a great web server with multiple capabilities such as reverse proxy or load balancing. Its performance serving static content is widely recognized, making it a great choice as a web frontend. Its task is to serve static content such as images or files, serve cached content and SSL termination, delegating to Apache those contents that it cannot handle.
MariaDB was forked from MySQL by most of the original MySQL developers. It has replaced MySQL in most Linux distributions since almost 10 years ago and is also the choice of Google or Wikipedia. MariaDB is the best option for Drupal because it does not require any additional configuration or module for its use and it is the preferred option for Drupal developers.
In-memory cache with Redis
Drupal, like other web applications, can produce high database load. This is especially common with cache tables or regenerable data that can experience heavy load spikes. Using Redis, these tables are moved into memory, noticeably reducing the database server load. Given the nature of this data, regenerable if necessary, it can be stored in volatile memory without risk.
Each web application deal with different traffic, user number or internal complexity. In some cases, a specialized stack is required. For these situations, we have solutions that can be added to the base stack or replace specific components for maximum performance.
- Varnish cache
- Multiple frontends
- Main database and replica
It is a specialized reverse proxy that boosts performance under the right circumstances. It features a custom configuration language, VCL, making Varnish more configurable and adaptable than most other HTTP accelerators. Unlike NGINX, it does not act as an SSL termination, so it needs one such as HAProxy or Hitch.
A CDN is a more advanced and powerful form of reverse proxy. It incorporates threat prevention systems, shorter response time, faster delivery speed and overcomes access restrictions that may exist in places like China. This is achieved through a network of servers around the globe ready to deliver the requested content. Metadrop integrates with the different CDN solutions on the market so that Drupal is not affected by this additional layer of cache.
Multiple web frontends
When it is not possible or not convenient to scale vertically, that is, to increase the server hardware capacity, the solution for higher performance is to scale horizontally. This means adding more servers to increase the number of users served. In this way, the service capacity of the Drupal web application is increased. As a complement, a load balancing system such as HAProxy is in charge of distributing the requests among the available front ends.
Main database and replica
The database is often a critical point of a web application and can become a bottleneck in some websites with high database load. This situation can be addressed by adding database servers that act as replicas of the main one, allowing it to offload its work to these replicas. Drupal allows the use of replicas almost automatically, so it is only necessary to properly configure the communication system between all the database servers involved.