Friday, January 16, 2009

Is the LAMP stack appropriate for Enterprise use?

I spend a lot of time researching technical platforms and architectural components, and working with other developers on determining what's most appropriate for our environment.

Our standards are constantly evolving, but right now we've got a spot for 3 main platforms and 11 main components. One thing I've noticed through the years is how committed people become to their platforms and languages, and how quickly some people will become a vocal Evangelist for their choices.

Obviously, in order to make a choice about enterprise standards, the decisions need to be based on facts and not on emotions, so research is an essential first step. Working with the developers on standards so that all the stakeholders have ownership is the next logical step.





In terms of research, I thought it'd be interesting to throw the LAMP stack question (Linux, Apache, MySQL, PHP / Ruby / Python) out to the programming community via StackOverflow.

As discussed in a previous post, I think StackOverflow is pretty neat. I've been impressed with the number of eyes technical questions get in front of, and with the amazing speed that insightful answers flow in.

That's why I wanted to pitch the question to the StackOverflow community. Here's the question as posed:

Is the LAMP stack appropriate for Enterprise use?

To be clear, by "Enterprise", I mean a large or very large company, where security, robustness, availability of skill sets, Total Cost of Ownership (TCO), scalability, and availability of tools are key considerations. Said another way, a company that looks for external adoption of frameworks / architecture - Something ubiquitous will be seen as more "valid" than something exotic / esoteric in this kind of environment.

I've seen use cases where Oracle, IBM, and Sun have implemented systems on the LAMP stack for various Enterprises. I've also seen examples where websites like yellowpages.com (Ruby on rails) and Facebook (php) are built on it. However, none of these examples are exactly what I'm looking for.

I'm really trying to find examples where it is an Enterprise standard at a very large bank (I.e., Citigroup), Telecom company (I.e., AT&T), or manufacturer (I.e., Proctor and Gamble). Just to be clear, I'm not looking for an example where it's used in a limited sense (Like at JPMorgan Chase), but where it's a core platform for systems like CRM, manufacturing systems, or HR management, as well as for internal and external websites.

The perception I've seen so far is that applications built on the LAMP stack perform slower and are less flexible. Some of the arguments I've heard are:

- Linux is seen as not as well supported as Unix, Solaris, or Windows Servers.

- Apache is harder to configure and maintain than web servers like BEA WebLogic or IIS.

- MySQL is a "not ready for prime time" DB for hobbyists, and not a competitor for SQL Server or Oracle.

- PHP / Ruby on rails are optimized for CRUD (Create, Read, Update and Delete operations). Although this is an advantage when building CRUD-intensive web applications, both perform slower than Java/JEE or C# (which are both common Enterprise standards). Furthermore, a lot of applications and systems (like manufacturing systems) have a lot of non-CRUD functionality that may be harder to build with PHP or Ruby, or even Python.

Can anyone please provide arguments to support or refute the idea of the LAMP stack being appropriate for the Enterprise?

Thanks!


19 answers came in, and in general, they were positive about the appropriateness of using the LAMP stack as an Enterprise Standard. However, to be fair, the types of Enterprise most often cited were web-based (like Google), or those that grew rapidly from being start-ups (like Facebook); They didn't really focus on the Proctor and Gamble, AT&T, or Citigroup-type Enterprises.

Here's the answer that I voted as the best (from a user named S.Lott), even though it wasn't the one with the most votes:



"but where it's a core platform for systems like CRM and HR, as well as for internal and external websites"


"but where it's a core platform for systems like CRM and HR, as well as for internal and external websites"


First, find a LAMP CRM or HR application. Then find a customer for the LAMP CRM or HR application.


Sadly, there aren't a lot of examples of item 1. Therefore, your case is proven. It can't be used for enterprise applications because -- currently -- there aren't any of the applications you call "enterprise".


Your other points, however, are very interesting.


1. Linux is seen as not as well supported as Unix, Solaris, or Windows Servers.

I think Red Hat would object strongly to this. Give them a call. I think they'll make a very persuasive sales pitch. Read their success stories.


2. Apache is harder to configure and maintain than web servers like BEA WebLogic or IIS.

By whom? Apache web site managers? Or IIS web site managers? This is entirely subjective.


3. MySQL is a "not ready for prime time" DB.

Take it up with Sun Microsystems. I think they'd object strongly to this. Give them a call. I think they'll make a very persuasive sales pitch.
Read their success stories.


4. PHP / Ruby on rails are optimized for CRUD, and both are slowly performing.

Could be true. Java and Python might be faster.


PHP and Ruby aren't the last word in LAMP.

In general, the answers were helpful and revealed a deep background knowledge of the users. (Except for one: "no it doesn't scale, lol :D" - The user was downmodded into oblivion.)

To be honest though, my only recent personal experience developing on the LAMP stack was customizing a gallery for a website I run for my dad and his colleagues.

Furthermore, I'm still not convinced that it's all that appropriate for enterprise based systems - Especially those that have to do with manufacturing and logistics.

Check out the question and answers in their entirety here.

UPDATE: Sometimes the LAMP Stack is Appropriate for Enterprise Use: Externally-Facing Blogs

4 comments:

  1. yeah, not ready for primetime - I work at a company that takes security seriously.

    by the way, nice anchorman reference.

    ReplyDelete
  2. dugg for how the hardcore linux guys freaked out :)

    ReplyDelete
  3. in my experience, methodologies like agile matter much more in terms of dev speed than language, stack, or framework.

    By the way, any local people doing the Ottawa agile meetup?

    ReplyDelete
  4. > In terms of research, I thought it'd be interesting to throw the LAMP stack question (Linux, Apache, MySQL, PHP / Ruby / Python) out to the programming community via StackOverflow.

    That's hardly what a sane person would call 'research'.

    > Furthermore, I'm still not convinced that it's all that appropriate for enterprise based systems - Especially those that have to do with manufacturing and logistics.

    The burden of proof is on you, and you have failed miserably.

    ReplyDelete