Is anyone out there using Drupal for large scale, business critical enterprise applications?
Does Drupal’s lack of database transaction support dissuade potential users?
Are there any other lightweight web-frameworks based on dynamic languages that people are using for these types of apps? What about Java portals such as JBossPortal or Jetspeed as an alternative or a Drupal + J2EE hybrid architecture?
Answer One: Yes
- internet_search://”drupal in the enterprise” <- use this exact phrase
- Drupal “Success Stories”
- Student Activities Supports 170 Drupal 6 Sites at Texas A&M
Answer Two: It depends
There are surely some who have concerns about this issue. Drupal’s database support and schema have been subject to some scrutiny and criticism over its evolution. That is likely to diminish if some or all of the planned enhancements make it into Drupal 7. This is the one out of your three questions that cannot be easily and definitively answered by searching the internet.
Answer Four: (Update: 2010-02-03 11:25:04)
I recommend against Drupal due to its inefficiency. Yes, it can do almost anything, but it does it slowly. For any but the simplest of sites, drupal will not build nearly as efficient a chain of queries and pages as a custom built site will. Something that can be done by hand with two SQL joins and a single PHP loop is likely to be handled by Drupal with five joins and a nested loop.
That said, I love Drupal and will continue using it in non-enterprise environments, and I cannot recommend any other CMS that does not have similar problems when presented with complex tasks.
It depends on what you mean by “Enterprise.” It’s a horrible choice if you’re building a supply chain management tool, for example.
But if you mean “extremely high traffic sites” or “Sites with complex approval workflows before content goes live” or “sites that we can scale horizontally”, then I’d say yes. There are quite a few very large scale Drupal deployments out there, from SonyBMG’s suite of artist web sites to newspapers and magazines.
Word of Caution:
Many community-based themes are coded sloppily, which completely negates the efforts Drupal has made to make their CMS secure. Worse still, common practice in theme development is to find a theme like the one you want and customize it. Since code of these themes is shared so freely, a single sloppy mistake can affect many other themes derived from it.
If you go with Drupal (or any other stock CMS), don’t just hire some joe-shmo designer to theme it for you. If possible, hire one contract for the visual theme and a php developer to actually build the theme from PSD’s
I was the lead developer behind the recently relaunched American Diabetes Association – http://forecast.diabetes.org/ – rebuild in Drupal. At launch, we were getting about 250k uniques/month and it’s been growing significantly. While the criticism for “inefficient query chains” is mostly accurate, there is a reason for that. The Lazy Loading pattern is used as frequently and often as possible. To streamline the process a bit, you can always configure Drupal’s caching, there are some addon modules, and then you could go with something like APC or memcached.
Regardless, the trade off of being easily extended, customized, and – in normally less than an hour – having something to show the customer and allow them to load content, is pretty significant.
Having helped to create drupal sites for Popular Science Magazine and soon another magazine (which I’m not sure if I can name yet?), I think it’s quite suitable. We’ve also done an intranet site for BMW and Pregnancy.org.
It may not be perfect yet, but it’s quite suitable.
My company is using Drupal to build the public facing website for one of the largest universities in the state that I live in. So far we have been pretty successful with it.
We use concrete for a bunch of other clients as well and I think we’re generally happier with concrete although it is not nearly as wide spread used as Drupal.
Drupal is used all over the place and has a very large community supporting its development. There is also a large for hire community if you want a custom drupal component.
I’ve worked on a Drupal project with about 1 million nodes. We added transactional support and it wasn’t too hard. You’ll need to patch the core of course but this shouldn’t be a major concern for an enterprise application with good support and documentation. I was working as the observing pair programmer on the transactional support. I think it took us about a day.
I’ve been working as a Drupal Developer for a few years now. And recently, I have revised my position on Drupal in relation to best practices and enterprise application.
I don’t think Drupal is particularly suited to the Enterprise space because:
- Drupal’s testing framework is too cumbersome (a domain specific language would be great)
- There are too many contributed modules of poor quality
- Drupal’s content model resides partly in code and partly in the database schema
- Drupal’s developer community have become focused on sexy software rather than quality software
- Drupal doesn’t have mature developer tools (drush is changing that) or a development environment built in.
- Drupal Development is browser and UI centric.
- The centralized nature of Drupal.org/projects, CVS and Drupal’s policy on Contrib Projects inhibits the evolution of individual software projects
Also: The enterprise Drupal Application I was once working on has now been ported into Rails.
I’ve used Drupal to build a combined public-facing site for an organization that also included internal features for employees such as meeting organization and internal document management. Mostly it worked out well and they are happy with it, and very happy not to have to manage two separate sites and / or something like sharepoint.
The one place I found Drupal to be a little lacking is in its LDAP support. You can use it just fine for authentication, but there are some bugs in the modules that try and bring LDAP groups down as roles, if this worked more seamlessly I would be completely on board with the “Drupal is enterprise-ready” sentiment, but it’s not there yet.
That said, you can do a lot with content types and taxonomy-based access control to customize what content is available to what roles, something that is a requirement for most intranets.
For transactional support and other significant scaling improvements consider Pressflow http://fourkitchens.com/pressflow-makes-drupal-scale
Drupal is great, but it is very inefficient. But, as I keep telling my frontend developers, this is the payoff for being flexible and highly modular.
We are currently creating a Druapl site, which I consider enterprise (http://stackoverflow.com/questions/161991/what-makes-an-application-an-enterprise-or-enterprise-level-application). It has about 40 content types, 15 user roles, integrated with Ubercart, interfacing with external APIs for membership verification etc. etc. Our development servers struggle some times, but on our staging hosting, it is lightening – fast as any similar sized site.
Make sure any bespoke code is well developed, use Drupal’s performance features before release and ensure quality hosting is used.
I too have issues with Drupal’s slowness, but it seems that with top notch developers you can get around it.
It’s a moderately difficult tool to make a company website with, its a very difficult tool to make an enterprise-application with. But when it comes to open source LAMP CMS’s, there is no real competitor.
We use Drupal for the main corporate brochure and community areas of our website at http://www.tableausoftware.com
It has allowed us to add on a multitude of plug-able features and customize UX to meet our needs far beyond what we could do with either a more bare-bones platform like rails or django better suited for apps.
We still have room to grow for performance tuning, but we have millions of hits a year without a problem. We’ve made use of Solr indexing to improve search and allow faceted integrated search for site content and knowledge base and support forums. Additionally, our team has been empowered to create content and curate the site without development hassles.
Lastly, with recent community focus on tools like Features and Context we’ve been able to manage more risk free deployment and workflow/environment management in addition to improved site architecture.
Drupal is great. I’ve used it for several mid-scale community and personal websites, and so far is giving us very good results. I would support the comment pointing at the over-done or even low quality of the templates of many of the website’s we’ve looked at out there, but then, just hire a good coder/designer that does this nicely for you.
As for the memory issues there’s tons of articles out there that would help you in tweaking Drupal’s database management. There’s even a module called Drupal Tweaks that does this automatically for you. Here is an excerpt from its project page:
… provides following functionality:
- Enabling and disabling modules through autocomplete suggestions
- Quick search for the nodes, users, etc. to make some operations
- clear the cache and rebuild permissions from one place or do them both at once
Overall we are quite happy so far with Drupal for quick development of the most varied websites and corporate Intranets.