What is Enterprise Drupal?
Drupal is a very powerful Open Source Web CMS (content management system). It allows very rapid development of social websites. However, its flexibility can also be its downfall. The ‘Stack’ required to run a website requires careful consideration and design if you wish your site to scale to a high volume, secure site. What is the ‘Stack’ in a Drupal built site? It starts with the ‘LAMP’ stack. This is the Linux operating system, the Apache web server, the MySQL database and the PHP development/scripting language.
Building sites from the basic LAMP stack can be done, but it is relatively time consuming as most features must be built from scratch. Drupal runs on top of the LAMP stack. It adds (either in the core ‘product’ or additional modules) pre-built functionality that most web sites can use almost out of the box. Additionally functionality can be added through various ‘hooks’. The look and feel is quite easy to adapt, as the functionality is fairly well separated from the user interface through templates. A good developer can add templates quite easily as well.
As the various components are configured and templates applied, the load on the servers can change quite dramatically. Flexibility in technology always comes with a performance cost. The first cost to keep in mind (after the development costs) is performance. The Enterprise Drupal architect must select and configure modules holistically, knowing the full system as well as the expected loads and traffic patterns.
Traffic patterns and site design, configuration and development then must be applied against the larger stack components – things like clustering, database design and optimization, caching strategies, maintenance windows, fall over strategies, backup and recovery strategies and the rest of the enterprise concepts critical to delivering a service within the required Service Level Agreements (SLAs) and regulatory requirements (HIPAA, PCI, etc.).
The next major cost is ongoing maintenance and upgrades (to both the stack components and the customized code). It is essential to have a process in place (including source control management, separate clean building, test / staging and deployment environments, and all of the other pieces of a nimble, yet controlled, web development process.