LAMP堆栈是否适用于企业使用?

26

LAMP(Linux,Apache,MySQL,PHP / Ruby / Python)堆栈是否适用于企业使用?

明确一下,“企业”指的是大型或非常大型公司,在这种情况下,安全性、稳健性、技能集的可用性、总体拥有成本(TCO)、可扩展性和工具的可用性是关键考虑因素。换句话说,一个公司寻求框架/架构的外部采用——在这种环境中,普遍存在的东西将被视为比异乎寻常/晦涩难懂的东西更“有效”。

我见过Oracle、IBM和Sun在LAMP堆栈上为各种企业实施系统的用例。我也看到像yellowpages.com(Ruby on rails)和Facebook(php)这样的网站是建立在它上面的。然而,这些例子都不是我正在寻找的。

我真正想找的是在非常大的银行(如花旗集团)、电信公司(如AT&T)或制造商(如宝洁公司)中,它是企业标准的示例。只是为了明确,我不是在寻找它在有限范围内使用的例子(如在JPMorgan Chase),而是在像CRM、制造系统或人力资源管理系统以及内部和外部网站这样的系统中作为核心平台使用的例子。

到目前为止,我看到的看法是基于LAMP堆栈构建的应用程序执行速度较慢,灵活性较低。我听到的一些论点是:

  • Linux被认为没有像Unix、Solaris或Windows服务器那样得到良好的支持。

  • 相比BEA WebLogic或IIS等Web服务器,Apache更难配置和维护。

  • MySQL是一种"未成熟"的数据库,适用于爱好者,而不是SQL Server或Oracle的竞争对手(尽管PostgreSQL似乎有更强大的声誉)。

  • PHP / Ruby on rails针对CRUD(创建、读取、更新和删除操作)进行了优化。虽然在构建CRUD密集型Web应用程序时这是一个优势,但它们都比Java / Java EE或C#(这两种语言都是常见的企业标准)运行速度更慢。此外,许多应用程序和系统(如制造系统)具有许多非CRUD功能,这可能更难以使用PHP或Ruby甚至Python来构建。

请问有人能提供支持或反驳LAMP堆栈适用于企业的观点的论据吗?

谢谢!

KA

更新:有时LAMP堆栈适用于企业使用:面向外部的博客


我指的是任何电信公司。例如,Bell或KT。 - Kaiser Advisor
1
http://en.wikipedia.org/wiki/American_Telephone_%26_Telegraph_Company - James Van Huis
@James Van Huis:你是怎么知道“Bell”指的是“AT&T”的?我在问题中错过了什么吗? - S.Lott
3
有趣的是,尽管我已经用实质性内容回答了这个问题,但显然由于一些热爱 LAMP 的人无法客观地处理问题,我似乎正在被贬低。这只是一个LAMP受欢迎度的竞赛吗?如果是这样,那我为什么还要给出诚实而有经验的答案呢? - Rob Williams
1
@Rob:你为什么删除了你的回答?我没有经验来判断它的准确性,但它看起来是一个有价值的贡献。 - Pekka
显示剩余7条评论
21个回答

23

但是在像CRM和HR这样的系统中,以及内部和外部网站中,它是核心平台。

首先,找到一个LAMP CRM或HR应用程序。

然后为LAMP CRM或HR应用程序找到客户。

可悲的是,没有太多的例子属于第1点。因此,您已经证明了您的案例。它不能用于企业应用程序,因为目前没有您所谓的“企业应用程序”。

然而,您的其他观点非常有趣。

  1. Linux被认为不像Unix、Solaris或Windows服务器那样得到良好的支持。我认为Red Hat会强烈反对这一点。给他们打个电话。我认为他们会做出很有说服力的销售推广。阅读他们的成功案例

  2. Apache比BEA WebLogic或IIS这样的Web服务器更难配置和维护。由谁来判断?Apache网站管理员?还是IIS网站管理员?这完全是主观的。

  3. MySQL是一个“未准备好的主流DB”。请与Sun Microsystems联系。我认为他们会强烈反对这一点。给他们打个电话。我认为他们会做出很有说服力的销售推广。阅读他们的成功案例

  4. PHP / Ruby on rails针对CRUD进行了优化,两者都执行缓慢。可能是真的。Java和Python可能更快。PHP和Ruby不是LAMP的最后一句话。


2
SugarCRM也是垃圾,所以不是一个很好的例子。 - Rob Williams
26
实际上,PHP确实是LAMP中的最后一项。 - Dan Dyer
1
@Dan Dyer:有趣的是,Python的人一直告诉我Python是LAMP中的最后一道防线。 - S.Lott
2
@Dan Dyer:就像XML是AJAX的最后一句话一样,但我仍然使用JSON。S.Lott所说的是,你不必局限于PHP,就像你不必局限于Linux一样。你可以使用FreeBSD、lighthttpd、PostgreSQL和Python,它仍然是LAMP(FLPP没有同样的含义;))。 - Esteban Küber
3
实际上,PHP是LAMP中最后的3、5、7、9...个单词。 - Workman
显示剩余6条评论

12

在这种环境下,普及性的东西会被视为比异国情调/深奥的东西更加“有效”。

虽然我个人不建议使用PHP语言,因为它有许多缺陷,但它绝对是普及性最强的。随着phusion passenger的出现,共享托管公司对Rails的支持也在迅速增长。我认为,在另外一年或两年内,90%以上的共享托管账户将可以直接支持Rails。如果这还不算普及,那还有什么算呢?

Linux被认为没有Unix、Solaris或Windows服务器那样得到良好的支持。

如果您感到困扰,请从RedHat购买支持,或安装Solaris并从Sun购买支持。这两者都将给您提供与Microsoft相当的支持。

Apache比诸如BEA WebLogic或IIS这样的Web服务器更难配置和维护。

我不能代表BEA WebLogic发表意见,但是我已经配置过Apache、IIS和Tomcat,Apache是最容易理解并且寻找示例和文档的方式最佳,而且比其他两个的优点明显。

MySQL是一个不适合主流的DB,只适合业余爱好者使用,而且无法与SQL Server或Oracle竞争。

真的吗? 您应该让NASA、Google、CERN、路透社等知道他们都在使用一种业余爱好者数据库,而这种数据库并未准备好投入生产环境。

PHP / Ruby on rails针对CRUD进行了优化,但两者的性能都比Java / Java EE或C#(这两种语言都是常见的企业标准)差。

这里有两件事:

针对CRUD进行了优化- 这完全没有关系。
Rails和一些Python/PHP框架是为CRUD应用程序进行优化的。许多C#/Java框架也是为CRUD应用程序进行优化的。然而,如果您正在构建的应用程序是CRUD应用程序(99%的Web应用程序都是如此),那么这不是好事吗?
如果您不是在构建CRUD(创建、读取、更新和删除)应用程序,那么在Ruby/Python/PHP/Java/C#等语言中有很多非CRUD优化的框架可供选择。.Net并没有占据优势(因此它不相关)。

相对于Java/C#,性能更慢-这无疑是真的,但也不重要。对于低访问量的网站,性能差异并不会造成什么影响;而对于高访问量的网站,瓶颈将会是数据库,无论是MySQL、Oracle还是其他什么数据库。
您为此所做的权衡是开发时间。一旦您采用了所有这些建议来说服您的老板,您可以使用LAMP(Linux Apache MySQL PHP)平台,如果您计算了一下,并向他们展示,在Java中建立这个站点需要6个人月,而在Ruby/Python中只需要3个,那么这就是最终决策的关键。

9
如果你雇佣了一些白痴来实现它,C++和Oracle将无法扩展。 如果你雇佣了聪明并且能够完成任务的人,PHP和MySQL将可以很好地扩展。
同样的论点也适用于安全性和稳健性。
Facebook、Digg以及Yahoo的部分运行在PHP上。 当然,他们雇佣了很多博士级程序员。

1
是的,这就是答案,编程语言并不是很重要,优秀的程序员才是关键! - Nils
1
我认为大多数开发人员不太可能在需要高度可扩展性的系统上工作。所有常见平台(LAMP、.NET、UNIX等)都可以轻松处理非常大规模的任务。除非你正在构建下一个谷歌,否则你有更多需要担心的事情。 - Craig

7

我想在列出运行在LAMP上的网站列表中添加另一个网站 - 维基百科。它是全球第七大网站,完全使用PHP编写并运行于MySQL上,他们只有两到三名付费开发人员。当然,他们有一些志愿者的帮助,但数量不多,而且它已经很好地扩展了。虽然你可能不会真正称呼它们为“企业级”,但对于如此巨大和受欢迎的网站来说,他们似乎做得还不错。

Linux被认为不像Unix、Solaris或Windows服务器那样得到良好的支持。

正如其他人所说,给Red Hat打个电话,我相信他们会有不同的看法。而且,对于Linux的支持,绝对免费的资源是惊人的。

相比BEA WebLogic或IIS等Web服务器,Apache更难配置和维护。

这取决于你问的人。通常管理IIS服务器的人可能会这样看。通常管理Apache的人则不会这样认为。这取决于你聘请的人员,如果你的堆栈是LAMP,你肯定不会雇用没有Apache经验的人。


关于引用维基百科的内容,请阅读他们的技术常见问题解答 - Air

6

我想补充一下,我见过很多客户只有在花费大量的钱购买某些解决方案之后才会感到舒适,即使这使企业集成变得更加困难,无论你提出什么论据。


我相信RedHat和Sun将非常高兴地接受贵公司的大量现金 :-) - Orion Edwards
1
让我想起了:http://thedailywtf.com/Articles/A-Software-Problem,-A-Marketing-Solution.aspx - annakata

6
我认为首要标准应该是您团队的技能水平和舒适度,以确保任何平台决策都能与他们良好配合。无论您选择什么,都要考虑代码的可扩展性和可维护性。工具很棒,无论您选择哪种技术栈。
我个人会将其分解成三个技术栈-
1. Java技术栈,您可以使用类似Solaris或Enterprise Linux(如RedHat)的操作系统,以及Weblogic / Websphere / Tomcat等Java Enterprise和Hibernate,Spring等技术。大多数人会选择Oracle作为数据库。
2. Microsoft技术栈,如果需要一些开源技术,可以使用Win Server - IIS - .net / C#(ASP.net等)- NHibernate,NUnit(单元测试)等。最可能您想使用SQL Server作为数据库。
3. 以上两者均不选,而是选择运行在企业版Linux上的各种开源软件,例如MySQL(现在已被Sun收购,因此可以认真考虑),Apache(有专家掌握),Ruby(不是我的个人选择)/ PHP(祝好运)/ Python(我喜欢它,因为它是一种成熟的语言)。从管理代码的角度来看,我会提倡使用Python或Ruby。也许对于某些人来说,PHP也是一个不错的选择,但我不是很擅长它。

5

严格来说这是一个主观的观点,但我个人认为MySQL和PHP在一定程度上有些弱点,当然也有很多人不同意我的看法,还有很多大公司采用了LAMP。

我更希望看到Postgres甚至SQLite从MySQL市场中分得一杯羹,而且我想看到基于Mono或JSP或Cocoon的应用程序更多。我想LAMP对于一个总称来说有点太具体了。 :)


5

Linux/Apache是经过加固的,精简的,并且每个都有很多人(当然需要支付一定费用)提供支持,有很多有用的工具,其中许多工具的实用性非常高,这些工具与它们一起使用并在其上构建。

不确定另外两个是什么。 特别是自从Sun收购MySQL以来,似乎已经走向了更糟糕的方向,这与本主题中的帖子所暗示的Sun可能是一个好的影响相反:

http://www.reddit.com/r/programming/comments/7gb8j/oops_we_did_it_again_mysql_51_released_as_ga_with/


4

你在帖子中存在一些真正的错误观念:

JavaEE的误解: -应用服务器比apache更容易配置,没有,apache更容易。 -你暗示只有JavaEE全套解决方案才是企业级的,不是。

CRUD的误解: -CRUD比JavaEE慢?什么鬼?POJO和EJB都使用CRUD。 限制因素不是crud,而是服务器吞吐量。

无论使用何种技术,甚至是MS..都有3个瓶颈限制区域:服务器实现、持久层和应用程序层。所选技术不是速度因素,因为您可以在一层中交换优势和另一层中的劣势。 例如,我们可以通过使用文档存储库来加快Java的速度。

大多数新的Rails实现使用非Apache服务器,这些服务器比Apache快3到5倍..即使是经过良好调整的Apache服务器,在某些情况下也可以胜过一些JavaEE堆栈..就像雅虎一样,他们在一些属性上使用Symfony。


4
我认为,没有在LAMP上构建企业应用程序的原因并不是它们不具备企业级别,而是完全不同的原因。许多大型玩家使用LAMP或类似技术,例如Facebook和MySpace。因此,这显然不是规模和性能的问题。
话虽如此,我认为没有在LAMP上构建企业应用程序的原因是由于其内在的开放性质。我不想将精算模块构建为PHP文件,因为任何人都可以窃取其中的逻辑。另一方面,如果我有一个DLL,我就可以保持控制。出于这个原因,你不会发现很多基于PHP构建的30天试用应用程序,但是使用ASP.NET可以更容易地实现这种保护。

MySpace是使用.NET构建的,而不是LAMP。 - Craig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接