Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
We are planning to start an ecommerce startup and are evaluating scalability options for choosing between (PrestaShop/WooCommerce/OpenCart) or our own custom ecommerce solution.
We have thought of the following optimization techniques for scalability:
1) CDN for static resources.
2) Load balancer for horizontal scaling once the traffic goes high.
3) MemCached or APCU cache for caching database queries.
4) APC Cache for PHP ByteCode Caching.
5) Making sure all images are compressed losslessly.
6) Minifying CSS and JS of theme.
7) Enabling mod_deflate or mod_gzip for compression.
8) Master Slave Replication once DB starts to become a bottleneck.
9) Making sure unnecessary Apache modules are disabled.
10) Making sure unnecessary Prestashop modules are disabled.
What would you recommend? A custom eCommerce solution or we can optimize one of these frameworks(PrestaShop, WooCommerce, OpenCart etc) ?
Since others have given their comments on each solutions I will give you more overall idea.
PrestaShop/WooCommerce/OpenCart - These products are somewhat mature according to my knowledge.
Advantages
minimizes the time and efforts involved in the website building process.
plug-and-play functionality.
regular updates with bug fixes and new features.
stable and well-tested code.
help from the community.
Disadvantages
invest time to learn.
a lot of unnecessary code.
you’ll need to tweak a ready-to-use framework to meet your requirements, which will take additional time.
your website will look like all the rest.
additional third party integration step (possibly in the form of bloated jQuery plugins or similar).
no control over the code.
extra effort on security since your architecture is well known.
As you think you can't edit the core files since it will crash the system in the next update.
own custom e-commerce solution - There are pros and cons using your own e-commerce solution rather than an existing products.
Advantages
will save you time and effort in the future because it was built precisely to your long-term needs.
will not need to learn how to use or customize it.
optimized to satisfy only your needs, not everyone’s.
only what you need and in the way you need it. No unnecessary stuff, no bloated code.
full control over the code and its design implementation.
Complete modularity. The flexibility of your framework depends only on you.
A unified code base. You can minimize the need of third party components, which means less mix-and-match work.
Uniqueness of your website is 100% guaranteed.
no effort on security since your architecture is not known
Disadvantages
more time and effort.
You need to test and maintain the code.
bug fixes, updates, and new features are built by you.
To find out whether it’s a proper decision for you too, you need to answer the following questions:
Am I capable to create it?
Do I have enough free/extra time to do it?
Is it reasonable to make it?
If you are going to use PrestaShop/WooCommerce/OpenCart, I would advice you to check out Magento as well. Hope this answers your question.
Also note that your considered optimisation techniques for scalability aspects are
good but there is a lot more to be considered if you are willing to learn. I can help you with them as well.
My recommendation is PrestaShop:
1) It has CDN support
2) No "special" support (it supports master/slave DB servers)
3 & 4) Has MemCached, APC & xcache
5) Not supported by default, but has Smush.it paid module
6) Full suppoert - CCC i.e. Combine (all .js in one file, etc), Compress (minify js, css, html & Cache - the combined files in cache folder with timestamp based expiration)
7) Integrated mod_deflate, you can always enable mod_gzip at the .htaccess file
8) You can configure master (this is the default one) & slave servers, and the core PrestaShop queries support master/slave (i.e. some queries are passed to slave and they have specified which exactly). Most of the 3rd party modules does not use that feature.
9 & 10) These are the thing the administrator/developer must take care.
Custom solution is a worst case, unless if you have 1+ year and lot money to invest. I don't like Magento & OpenCart and that's why 5 years ago I chose PrestaShop for eCommerce developement. Magento has unnecessarily complex class tree and of course the developers charge usually a lot more, because they have a lot of work :), and OpenCart is a way below the others - having not a single comment in the code is a just not professional, no indexes at all on the database tables, it does not even uses template engine. Regarding the "WooCommerce" - using CMS system for eCommerce is just not serious.
My advice is to check PrestaShop - get the latest version, test it, check at addons.prestashop.com (The official Marketplace) for the modules you will need. Also, there's a newly released "PrestaShop Cloud" - you can take a look on it as well.
First of all its not frameworks its cms. Frameworks: laravel, symphony and etc..
And u can do all things with all cms. But to my mind the best - prestashop.
2) Lot of ways to optimize your server, your cms, write correct modules .
3) In prestashop you can use memcached
4) You can install APC on server and enable it in prestashop performance
5) You can edit compression settings or write/buy powerful module to get such effect
6) Minifying CSS / JS / HTML in performance (settings)
7) mod_gzip in server settings
8) Disable overrides or non prestashop modules. Do profiling to check MS and bad modules.
If you're looking at developing on top of any of the existing open source carts out there, have a good look at the code first. Just a quick look and I can make these comments:
WooCommerce -- OK if you're used to the wordpress style of code I guess but it locks you into using that specific CMS as your development framework.
PrestaShop -- Coding standards are a bit outdated (no PSR compliance), no use of namespaces, code has some but not comprehensive API documentation.
OpenCart -- code has almost no comments, no use of namespaces, limited PSR compliance, no API documentation.
Have you considered Magento 2.0 which is in beta? Magento 1 had the limitation of no namespaces because it relied on Zend Framework 1 which was pre-namespace but Magento 2.0 has namespace support while not throwing the baby out with the bathwater (Zend 1 classes have been kept and wrapped in namespaced classes).
If you're looking at extreme flexibility and the ability to code things your own way, you may be better off starting from scratch on top of one of the existing PHP frameworks (Laravel, Yii2, etc). In terms of performance you're not likely to gain much -- you're apt to make just as many performance mistakes building your own code as you will find in someone else's code. However this will be a lot of work! eBay bought Magento for $180 million and that wasn't because it was knocked together by a couple of guys in a week or two -- there is some serious programming work in all of these systems.
Building your own custom eCommerce solution from scratch can be a real nightmare for a startup and should generally be avoided.
Usually what happens a few months later is that the startup ends up having to maintain code, fix bugs and create new features internally. This all adds up and eats into time that could be better spent working on other more important aspects of your startup. There's no point re-inventing the wheel!
Eventually the startup decides to bite the bullet and scrap what they built out for several months for an off the shelf solution. They then choose a downloaded platform like Prestashop/WooCommerce/OpenCart etc.. that they feel they can then customise. This again takes time to both learn, implement and tailor to your specific needs; taking you away from other more important activities.
If you're looking for a lightweight and scalable solution that is quick to integrate, low maintainance, with no bloated code base and is super customisable you could look at more modern methodologies like eCommerce APIs.
These services are usually already heavily optimized for increased performance. They are usually available globally in multiple regions, load balanced, provide asset CDNs and some allow for custom data structures etc...
The beauty with this approach is that you can pick the components you need to integrate, without having to disable modules. You can also decide in the future that you need to change or add to your frontend technology stack and even pick a different programming language.
You could even build static sites that talk to these APIs and host a few files that make up your site in an Amazon S3 bucket for a few cents a month!?
Related
I am currently working with Zend Framework and I am extremely happy with it. What I want to know is at what kind of requirements it is better to use CMS's like Joomla or Drupal.
Considering my current project it is a portal application. It is completely made from scratch in Zend. Then some fellow comes and comment that it rather implemented in drupal you could get plugins for the stuff you built by hard efforts.
So I need a guideline for how to choose between CMS and A Framework at the kickoff phase?
The question in your case is whether to use a ready made CMS or to create your own system using a framework. The right answer depends on the following:
budget
number of users you will have (long term performance concerns)
further maintenance
total number of details (bells and whistles) you want to provide on the site
implementation with third party/custom APIs
special/custom features that require high level of freedom (example: StackOverflow reward points and badgets)
As this is a question most of us face pretty often, here are cons and pros of a ready made CMS vs a framework:
Ready made CMS
Pros
faster start and development time if your project generally fits in what the CMS provides
available modules and themes
backed up by community, meaning that new features, bugfixes, support, tutorials etc. will be provided to you free of charge
unified set of standards - it's easier to continue working on an existing CMS site than to take someone else's custom application (this is relative, but the point is that in a site that uses an existing CMS most of the things/setup will be familiar to you while in a custom app the previous developer had more freedom)
security is something you do not need to worry that much as in a custom app
Cons
if your requirements are very specific, you will need to override the default workflow of the system; in some cases this can be tricky and will make you spend more time than to write your own
redundant code in modules/plugins
performance - a ready made CMS will rarely be as fast as a custom made application
not suitable for every large website (unless you fit in almost everything that the CMS provides)
steep learning curve in some cases (Typo3, Drupal)
Custom application
Pros
it's up to you to define the structure and the logic of the application
app design is made especially for the project you are working on - so there is no redundant code
freedom to do anything you want
Cons
expensive - in most cases you/your client will need much more money for a custom app
further maintenance will be harder
changes and modifications of the structure can be very time consuming
if you aren't using a CMF you will have to reinvent the wheel in some aspects
Bottom line
Spend a couple of days and learn something about the CMSs out there, such as:
Drupal - my first recommendation; good for medium to big websites; good community; medium/steep learning curve
WordPress - my second recommendation; good for small to medium sites
Typo3 - enterprise level system; pretty complex, combined with a framework which can be used standalone in projects
Joomla - I personally don't like it and do not recommend it because of amateur plugins, but it is popular
SilverStripe
MODX
Concrete5
I think that any bigger and serious project, which will have at least 1-2 programmers to take care of the system at all times, should be custom. Exceptions are only if it fits exactly in what an existing CMS offers already.
Hope this helps :)
Take a look at Difference between a CMS and a web-development-framework on StackExchange.com.
A CMS (Content Magagement System) is used to manage content on a website. It usually provides tools to make this task as easy as possible.
Examples of CMSes: Drupal, Joomla, DotNetNuke etc.
A framework is like a set of libraries / classes to build a web application. Many frameworks provide libraries for database access, templating engines etc. This way, you don't have to reinvent the wheel.
A CMS is often build upon a Framework.
Examples of frameworks: CodeIgniter, CakePHP, Kohana...
#Voles mentioned what CMS and Framework is
So your question is "guideline for how to choose between CMS and A Framework "
Want to build a Blog or a simple website ?
Go for Wordpress , Drupal etc.
Want to build next facebook or stackoverflow or app of your own which the current cms is hard for you to learn or is limited with the features?
Then go for some frameworks or custom made ones. Be sure that you know how to build it in the right way.
You can have a look into http://cmf.symfony.com/ also.
Hope that makes clear.
Apart from all pros and cons of CMS and Framework , According to me you need to study your requirement at the time of kickoff. List out the modules you want in your application. Now check that how many modules are available in CMS you know about like drupal , joomla , wordpress etc. and also check out that how much customization you need in this available modules as well as custom modules you may need to develop as per your requirement . And if you found out that with minimum customization you can use any particular CMS and than go for it.
But in case your application may very complex in nature than I suggest go for any MVC framework like Zend , Cakephp , codeigniter etc.
Yes one other thing go with any CMS or Framework that you well versed with it.
Framework is like a library by using this library we can develop new thing.
Whether CMS as name imply its an inbuilt source to manage the content.
Like wordpress we don't need to develop anything.
Framework are the creator of CMS , CMS is basically a Content Management System which focuses on content managing where everything is perfectly setup for you with few lines of code and logics ur website or small app can be developed
Whereas in framework its deeper than CMS everything you have to write from scratch or use existing library which is generally used for making big app. Hope this would help
As far as I know, CMSs and MVCs are web application frameworks with coding libraries. CMS is way easier to use for beginners, as it has its pre-made functionalities available, so you will not need complex coding. I found useful information in Wiredelta's article, maybe this will help for you as well: https://blog.wiredelta.com/cms-mvc-framework-comparison/
Difference
CMS: A content management system (CMS) is computer software used to manage the creation and modification of digital content (content management).
Framework: A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs.
A Framework offers a basic web application structure with a set of tools, to let you build your own web application, or even a CMS.
How to choose between them?
I have been working for many years with different open source CMSs (Much with CMS Made Simple, Prestashop. A bit with Drupal, Wordpress) and frameworks (Much with Symfony, a bit with Zend Framework).
My conclusion is:
If your requirements can be fulfilled with features of an open source CMS, and there are only a few custom requirements, use that CMS
If your requirements are complex and/or more custom, use a framework
Problems when using an open source CMS
Plugins often don’t provide all features you need
Community plugins
Have limited features. If you want to extend the features, you end up copying or modifying plugins, making them harder to update
May not be compatible with other plugins or even with the CMS version you have
Harder to debug since it's not the clean code of your team
May not be fully for free and come with additional costs
You spend a lot of time on searching and evaluating plugins
Own plugins
Limited CMS features (eg. missing dependency injection) may lead to unstructured coding
When your plugin gets more big and complex, you may start to ask yourself, why not having used a framework from the beginning
High learning curve, depending on the documentation, technologies used, and how many architectural rules you have to follow
Highly dependent on community
You may not get a fast answer or solution from the community
You may have to debug deep into hardly-to-read plugin or CMS code
Own fixes make updates difficult
Usability
Admins may get overwhelmed about default features, and may generate more support tasks for the developer, where a simple content editor for the admin would suffice
Currently, I am looking to switch from a home grown eCommerce website to a custom site using a framework. I need something that can upscale (handle hundreds to thousands of transactions), is easily maintained, and simple to customize.
I was recommended the symfony framework by an outside source, but I have not previously heard of it. My understanding is that using something like symfony would still require integrating magento (or its ilk) for commerce on the back end.
Is there a better solution? Is there another platform that would fulfill all of my needs?
It's hard to say what platforms would suit your needs without knowing what they are :) Do you have specific requirements that are unusual in the ecommerce world? Having said that, a decent ecommerce framework will allow you to adapt the core functionality to suit your needs in a robust manner.
As #usoban suggests, Magento doesn't require Symfony, but it is built using the Zend Framework. So if you're familiar with the Zend patterns, then you will adapt to Magento much quicker.
Magento has a broad range of features "out of the box" and is certainly capable of scaling to large volumes of transactions and visitors.
It does require serious hardware and resource optimization in that high-end configuration, but there is a body of knowledge on how to achieve that both on the Magento site and elsewhere on the web. The Enterprise Edition is also designed for performance (includes Full Page Caching) along with features/functionality that are important for administration of serious ecommerce (content merging and staging, granular permissions, etc).
You will hear a lot of complaints about Magento's learning curve, and they are mostly justified, particularly if you are coming from a traditional PHP coder background. However, if you take the time to work through the tutorials, and recognize that the complexity is due to the power and flexibility of the system, you are likely to find it worthwhile. Also, us StackOverflow peeps reckon that you'll get much better support here than on the Magento forums :) There tends to be some questionable advice there, at least here you can see what the peers think of the answers :)
Hope all this helps!
JD
There are bundles now was developped for this purpose. Some of them can give you a lot of functions like Cart management, products by categoris,...
This is a bundle that can help you sylius
Also, you can base your developpement on vespolina which is in production now.
Drupal 8, now uses some componenets of SF2, and in the future it will be developped entirely on the top of symfony. So you can start using Drupal 8 but it's in developpement stage also.
Using symfony2 will give you the possibility to use also ezPublish 5 and PHPBB4.
As you can see, most of PHP CMS and business projects are moving to SF2. And the reason is very simple, SF2 has implemented the JSR Specifications but not in JAVA language, in PHP5.3
I advice you to try it first for a small project first to learn the best practices implemented by sf2, specially the IoC (Inversion of Control) also called Dependency Injection.
I have worked with symfony in several projects (one of them is a custom e-commerce site built from scratch), and I'm very happy with this framework.
If you plan to use Magento as a backend and symfony for the frontend, I'd suggest you to use Drupal Commerce http://drupal.org/project/ecommerce because Magento is a heavy piece of software. You can even forget about symfony and extend drupal to fulfill your needs.
An alternative to Symfony could be Zend Framework http://framework.zend.com
ZenMagick is an on-going project that uses a lot of Symfony2 compoenents. It is currently at version 0.9.11. The homepage describes it as
Originally based on Zen Cart, it has evolved into a flexible and robust system of its own, that allows you to get the shopping cart you want.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm looking at building a custom web application for a client (a specialized auction site, in this case), and we're evaluating using some existing CMS as the "scaffold" for the application.
The justification is the fact that for many custom web application projects, some 70% of the code written goes in to adding CMS features, user management, and basic admin CRUD. Presumably, if we start with an existing CMS, then those to components will already be built.
We've decided to stick with PHP for distribution and deployment reasons. The top CMSes we're evaluating are Wordpress, Drupal, and Joomla. Here's our analysis so far (listed in order):
Wordpress
Pros: Dead-simple design. Extremely popular and understood. Very solid recent security history.
Cons: Perhaps a little too simple -- can it be made to work?
Drupal
Pros: Potentially more friendly to custom application development. Decent security history.
Cons: More complex and difficult to understand.
Joomla
Pros: Popular and well understood.
Cons: Some security concerns
Once of the biggest issues we're running up against, and what we hope to gain from the S.O. community is understanding how easily these can be customized to become a custom application. As an example, when the client goes into his administration area, will he get the impression that this is an, "auction site with a built-in wordpress CMS", or will it be a "wordpress site with an auction plugin"? We're hoping for the former rather than the latter. But can it be done?
Or perhaps are we looking in the wrong direction? Should we be looking instead at something like CakePHP? (Note that options like RoR and Django are off-the-table because of distribution and deployment reasons.)
Here are some related (but not identical) questions which have some useful information:
Using a CMS to Design a Web Application
CMS for custom application
This is a question we used to face regularly.
Our development arsenal consisted of Wordpress and CakePHP. We used the former where we could and the latter when we really had to.
Unless you're doing something really radical, you can probably do it with (something like) Wordpress. These days, the admin area can be heavily modified and custom taxonomies allow for meaningful entities rather than just posts and pages.
What you need to consider is the wealth of features and testing that comes with an established CMS package. Plus, Wordpress et al. have an enormous collection of plugins/extensions, which can take you even closer to where you need to be.
I guess what I'm saying is, you'd find it hard to convince me to drop back down into something like CakePHP.
EDIT: Six revisions have a great post on customising the admin area. Also, if you have specific wordpress queries, remember we have a really strong stackexchange site waiting for your question!
Unless you're doing something radical you're going to be better of using a CMS (in agreement with Tom Wright above).
I'll pitch in for Drupal. Its a extremely capable CMS that powers some world class websites like http://www.whitehouse.gov (The US President's Official website). That itself speaks volumes about its scalability, reliability and security.
Check out http://drupalsites.net to see a whole set of websites made in Drupal. Once in Drupal you'll have access to one of the most active communities out there for an open source project. This community has produced over 2000+ free modules (or add-ons) to meet requirements that cannot be fulfilled by vanilla Drupal.
It is true that Drupal has got a sharper learning curve than Joomla or Wordpress. But Drupal, I believe is more powerful than Wordpress and Joomla. Once you've mastered fundamentals of Drupal its easy to roll out features. The whole Drupal system just feels consistent. Some CMSes are an endless series of one-off modules that just need to be configured that way. Drupal has some powerful modules like Views and CCK, that, once mastered will help you accomplish so many things that would have required many different hacks/add-ons/custom programming in other CMSes.
Joomla has a reputation for being easier to learn but ultimately difficult for building truly complex and massive community based sites. Wordpress, though fast maturing with version 3.0 is still a ways away in being as feature rich as Drupal/Joomla. Then there are some other upcoming CMSes on the horizon -- check out Packtpub CMS awards -- you can see some good CMSes listed there.
Essentially it comes down to this -- CMSes like Drupal are built to accommodate mainstream website needs. If your site is not radical (today's twitter or foursquare equivalent) stick with Drupal/another CMS. The development times are just severely reduced. Only once you feel that what you are doing is not practical in a CMS should you choose a framework like Cake, Django etc.
I'll jump on the use a CMS bandwagon as well. There is simply no point in starting from scratch unless you have a truly unique app that doesn't need any of the stand user/content type stuff.
I would base my decision on how tech savvy the client is. I would tend to stay away from Wordpress as extending it is not nearly as simple as Drupal or Joomla. It takes a lot more work to get Wordpress to do the same thing and its feature set out of the box is very limited.
We generally go with Joomla because the admin is a lot easier to teach a client than Drupal. Drupal has better user management and access control out of the box than Joomla, but there are very good extensions that can give you both if necessary. I think the other advantage Joomla has is its MVC architecture and huge development community. Nearly 6000 GPL extensions and many more non-GPL. Add in a good CCK like K2 and the sky is the limit.
As for customizing the admin, we use a custom install for our commercial sites. It's branded with our logos and all of the Joomla stuff is removed. None of the core extensions that are unused show up in the admin and depending on the purpose of the site it can be made to look like an app with a built in CMS. None of the changes we've made touch the core and most are simple settings turning stuff on or off as needed. You can even take it a step further with a simple admin extensions that gives you granular control over what a user sees when logged in to the admin. We haven't felt the need for that though.
In the end, it's more about which CMS you feel the most comfortable coding extensions for. It's already been proven that all 3 can be made to do basically the same thing so pick the one you like the best.
Our company has a great experience in web-development, but it was decided recently to direct common energies to web-development based on Drupal development because only in case of Drupal developments customers get:
a web-site build on the safe system which is based on open source code, the system which is tested by million users all over the world. professional content management system;
it is more likely that possibilities of Drupal system are limited by developer’s imagination rather than facilities of Drupal itself; this will be a web-site with great performance and scalability;
confidence that CMS producer won’t disappear;
web-site with moderate price even if there is a need in development of some specific features which are not developed in Drupal yet;
new versions of Drupal core and its modules are available for free.
I would definitely go with ExpressionEngine. It's a very full-featured CMS, and using it's Query module and allowing PHP in templates, you can get pretty fine-tuned from within the CMS framework.
If you need more power, it's built on top of CodeIgniter, and developing add-ons for it is very easy for a decent developer.
It's not free, but it's pretty perfect and worth the cost ($300 for commercial sites).
I've used Wordpress and Joomla to build a couple of small websites, and done some hacking about to get them running exactly as I want. But both of these, and probably many other PHP CMSs, are subject to a constant barrage of security fixes. I don't have to time to test the fixes, make sure my customizations are still working, and roll them out before anyone attacks the site, then do the same thing again a month later - I'll never get anything else done with that kind of overhead.
So my question is: Is there a (preferably PHP) content management system that somehow successfully avoids the constant barrage of security updates and resulting testing/sysadmin work? So I can just work on it when I have time, not keep racing to patch the latest attacks?
Bonus points for having a sane plugin model to make it easier to code against. More bonus points if it provides an easy method to import data from Joomla and/or wordpress.
Thanks
EDIT: As rightly pointed out, avoiding updates entirely is not a sensible goal. Rather, I want to minimize the pain of updates. So what I'm really looking for is:
Easy to adapt and theme in a way that is guaranteed not break during updates
Simple update process
there is no cms (no software, for that matter) so secure you never have to update. developers make mistakes, and new exploits appear. so every cms should be "subject to a constant barrage of security fixes". if it is not, you should ask yourself about the security policy of the project and the security of your site. see The Open Security Model, Drupal and ExpressionEngine on Security for a related read.
so unless you don't care about the security of your site, you are asking the wrong question. i think it should actually be: is there a cms that is customizable without modifying core files so that security updates don't break my customizations? or: how can i customize a cms so that security updates don't break my customizations? security updates usually don't break a (even customized) site - unless the customizations are done the wrong way.
my answer to that new question would be Drupal (including bonus points).
The last versions of WordPress (2.7 branch) have auto update for core and plugins making it really easy to upgrade when a fix is available. The api is also awesome - I've done quite a few WordPress based sites and rarely (if at all) needed to hack the core.
As long as you customize through plugins or themes, and use auto update when a new version is available, you shouldn't have any problem at all.
I like CMS Made Simple, which is written in PHP.
In term of security, stability & flexible maintenance I suggest Symfony framework
(see:http://www.symfony-project.org/). It has a lot of plugins, support towards wordpress, joomla and whatever you need.
See also PHPcake at http://cakephp.org
I really like ExpressionEngine, made by EllisLab, its based on their open source framework CodeIgniter, (which I think is one of the best PHP MVC frameworks).
There is a free version of ExpressionEngine for non-commercial use, which is all I've used, but the paid addons + modules look pretty slick.
As for actually really free, ModX is alright, but has a frankly wierd plugin system, that said, Ive built a couple of sites on it, and been happy with the results.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
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.
Drupal 7 Database Plans
Drupal 7 Database Update
Answer Three:
Open Source Content Management Systems
Answer Four: (Update: 2010-02-03 11:25:04)
see also: https://stackoverflow.com/questions/1715811
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.
Yes, but...
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.
Edit:
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.
If you will see the list of sites here http://buytaert.net/tag/drupal-sites and here http://www.drupalsites.net/, you will see that Drupal is being used to build small, medium and large scale sites!
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.