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

时间:2008-12-08 15:51:36

标签: php ruby architecture lamp enterprise

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

要明确,“企业”是指一家大型或大型公司,其安全性,稳健性,技能组合,总体拥有成本(TCO),可扩展性和工具可用性是关键考虑因素。换句话说,一家寻求外部采用框架/架构的公司 - 无处不在的东西将被视为比这种环境中的异国情调/深奥的东西更“有效”。

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

我真的试图找到一个例子,它是一家非常大的银行(即花旗集团),电信公司(即,AT& T)或制造商(即,Proctor and Gamble)的企业标准。为了清楚起见,我不是在寻找一个在有限意义上使用它的例子(比如摩根大通),但它是CRM,制造系统或人力资源管理等系统以及内部系统的核心平台。和外部网站。

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

  • Linux被视为不像Unix,Solaris或Windows服务器那样得到支持。

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

  • 对于业余爱好者而言,MySQL是一个“尚未准备好迎接黄金时段”的数据库,而不是SQL Server或Oracle的竞争者(尽管PostgreSQL似乎因其更强​​大而闻名)。

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

任何人都可以提供论据来支持或反驳LAMP堆栈适合企业的想法吗?

谢谢!

KA

更新:Some times the LAMP Stack is Appropriate for Enterprise Use: Externally-Facing Blogs

21 个答案:

答案 0 :(得分:23)

“但它是CRM和HR以及内部和外部网站等系统的核心平台”

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

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

可悲的是,项目1中没有很多例子。因此,您的案例已得到证实。它不能用于企业应用程序,因为 - 目前 - 没有任何您称之为“企业”的应用程序。

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

  1. Linux被视为不像Unix,Solaris或Windows服务器那样受到支持。我认为红帽会强烈反对这一点。给他们打个电话。我认为他们会做出非常有说服力的销售宣传。阅读他们的success stories

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

  3. MySQL是“尚未准备好迎接黄金时段”的数据库。与Sun Microsystems一起讨论。我认为他们强烈反对这一点。给他们打个电话。我认为他们会做出非常有说服力的销售宣传。阅读他们的success stories

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

答案 1 :(得分:12)

  

在这种环境中,无处不在的东西将被视为比有异国情调/深奥的东西更“有效”。

虽然由于语言中存在许多缺陷,我本人不会推荐PHP,但它肯定无处不在。随着phusion乘客的出现,Rails在共享托管公司中的支持也在迅速增长。在90%以上的共享托管帐户支持开箱即用的应用程序之前,我最多给它一年或两年。如果那不是无处不在,那是什么?

  

Linux被认为不如Unix,Solaris或Windows服务器那样得到支持。

如果这让您感到困扰,请购买RedHat的支持,或安装Solaris并从Sun购买支持。这些都会给你提供与微软一样好的支持

  

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

我不能代表BEA WebLogic,但是配置了Apache,IIS和Tomcat,Apache是​​最容易理解的,并且很容易找到的示例和文档。

  

对于业余爱好者而言,MySQL是一个“尚未准备好黄金时段”的数据库,而不是SQL Server或Oracle的竞争对手。

Oh really?。你应该告诉美国宇航局,谷歌,欧洲核子研究中心,路透社等,他们都在使用一个尚未准备好黄金时段的业余爱好者数据库。

  

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优化的框架。净胜利:没人(因此无关紧要)

执行速度比Java / C#慢 - 这无疑是正确的,但也无关紧要。对于流量较低的站点,性能差异不会达到任何目的,对于高流量站点,您的瓶颈将是数据库,无论是MySQL,oracle还是其他任何东西。

你所做的一切就是开发时间。 一旦你使用了所有这些建议来说服你的老板你不会通过使用LAMP而失去任何东西,如果你处理这些数字并告诉他们这将需要6个人 - 几个月用Java构建网站,只有3个用ruby / python构建它,那就是它真正归结为它。

答案 2 :(得分:9)

如果你雇用白痴来实现它,C ++& Oracle将无法扩展。 如果你聘请聪明的人并完成工作,PHP& MySQL可以很好地扩展。

相同的论点是安全性和的鲁棒性。

Facebook,Digg,部分雅虎运行在PHP上。 当然,他们雇用了很多博士程序员。

答案 3 :(得分:7)

我以为我会在LAMP上运行的那些网站上添加另一个网站 - 维基百科。世界上第七大网站,完全用PHP编写并运行MySQL,他们只有两三个付费开发人员。当然,他们得到了志愿者的一些帮助,但这并不是很多,而且它的规模很好。不知道你是否真的称他们为“企业”,但对于这样一个庞大而受欢迎的网站,他们似乎已经为自己做好了。

  

Linux被认为不太受支持   作为Unix,Solaris或Windows服务器。

正如其他人上面所说,给红帽打电话,我相信他们会乞求不同。 Linux 绝对免费的支持量令人惊讶。

  

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

这取决于你问的是谁。通常管理IIS服务器的人可能会以这种方式查看它。通常管理Apache的人不会。这取决于你雇佣的人,如果你的堆栈是LAMP,你也不会想雇用没有Apache经验的人。

答案 4 :(得分:6)

我只是想补充一点,我曾多次目睹客户只有在为一些解决方案提供严重的$$$时才感到舒服,即使它使企业整合更加困难,尽管你提出了什么论据。

答案 5 :(得分:6)

我认为第一个标准应该是你的团队的技能水平,舒适程度,以确保平台决策能够与他们合作。无论您决定考虑代码的可伸缩性和可维护性。无论你选择什么样的堆栈,工具都很棒。

我个人会将其分解为3个堆栈 -

  1. Java堆栈,其中包含Solaris或Enterprise Linux(RedHat),包含Weblogic / Websphere / Tomcat等,Java Enterprise以及Hibernate,Spring等技术。大多数人会选择Oracle作为数据库。

  2. 如果需要,可以使用一些开源的Microsoft Stack Win Server - IIS - .net / C#(ASP.net等) - NHibernate,NUnit(单元测试)等。很可能你会想要使用SQL Server作为DB

  3. 上面没有一个与Enterprise Linux运行完全自由的开源软件如MySQL(现在在Sun的域下,所以可以认真看待),Apache(那里有apache guru),Ruby(不是我的个人选择)/ PHP(祝你好运)/ Python(我喜欢它,因为它是一种成熟的语言)。从管理代码的角度来看,我会提倡python或ruby。也许对某些人来说可能是PHP ..我不喜欢它。

答案 6 :(得分:5)

严格意义上的主观意见但我个人认为MySQL在较小程度上发现PHP有点弱点,但肯定会有很多人不同意和LAMP的大公司。

我更希望看到postgres甚至SQLite从MySQL市场中取出块,我希望更多地看到基于单声道或jsp或cocoon的应用程序。我认为LAMP对于一个总括性术语来说太具体了。 :)

答案 7 :(得分:5)

Linux / Apache变得更加强硬,精益求精,每个人都有很多人(当然价格合适),他们将提供支持,提供大量有用的工具,许多具有极高水平的实用工具,并与之合作建立在他们身上。

不确定其他两个。特别是MySQL似乎已经采取了一个奇怪的转折,因为他们被Sun收购,这与该帖子中的帖子相反,暗示Sun可能是一个很好的影响:

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

答案 8 :(得分:4)

你的帖子中有一些真正的坏主意:

JavaEE神话: -App服务器比apache更容易配置,nope apache更容易。 - 你暗示只有JavaEE完整的解决方案才是企业,nope。

CRUD神话: -CRUD比JavaEE慢? WTF? POJO和EJB正在使用CRUD。  限制因素不是crud,它的服务器吞吐量

有三个限制瓶颈区域,无论采用什么技术甚至MS ..服务器实现,持久层和应用层...所选择的技术不是速度因素,因为您可以在一层中交换优势而在另一层中存在缺点。 例如,我们可以使用文档存储而不是普通数据库来编写重复Java ..

大多数新的Rails实现使用比Apache更快3到5倍的非Apache服务器。即使是经过良好调优的Apache服务器也可以胜过某些JavaEE堆栈。只要问雅虎,他们会在某些属性上使用Symfony ..

答案 9 :(得分:4)

没有找到基于LAMP的企业应用程序的原因并不是因为它们不是企业级别,而是我认为完全不同的东西。许多大玩家使用LAMP或类似的东西 - Facebook和 MySpace 立即浮现在脑海中。所以它显然不是scale and perf的问题。

那就是说,我发现没有任何基于LAMP的企业应用程序的原因是因为它们具有内在的开放性。我不想将精算模块构建为PHP文件,因为任何人都可以窃取逻辑。另一方面,如果我有一个DLL,我可以保持控制。由于这个原因,你没有找到很多基于PHP构建的30个试用版应用程序,但是用ASP.NET来实现这种保护要容易得多。

答案 10 :(得分:3)

我认为您会发现很多企业都使用Linux服务器,通常由Redhat,Novell或IBM支持,并且Apache也是常用的。

但是许多企业倾向于使用像Oracle或IBM DB2这样的数据库而不是开源产品 - 尽管有许多企业并不真正需要这些系统提供的那种功能,并且可能无法使用MySQL或PostgreSQL。

对于网络服务器语言,我认为你几乎可以使用任何东西。但是,如果使用Apache,则使用PHP,Ruby或Python可能更容易,而如果使用IIS或Weblogic或Domino,则在Java / C#中更容易实现。

答案 11 :(得分:2)

我想建议我们确定企业系统的可扩展性要求以及它们与Web应用程序的不同之处。看看一些最具扩展性的系统,如维基百科,Flickr,Wordpress,Facebook,MySpace和其他许多系统。你会在那里看到LAMP堆栈。我更像是一个Python粉丝(因为我觉得这种语言有一种更干净的感觉)但是我听了像Cal Henderson(Flickr)这样的专家,他写了一本关于可扩展性的书,谈论他如何扩展MySQL服务器库。

企业系统的基本功能是什么?

支持,专业知识的可用性,平台/语言的稳定性可能很重要。

但LAMP还有其他功能,如更快的开发,更易于扩展,大量可用的库可供重用,有几个记录的可扩展性故事,成熟的Web框架。

以下是构建可扩展系统的几点建议(我在谈论Web Scale)。我总是想知道所有这些证据,为什么LAMP没有为企业应用做好准备的看法不断涌现。

至于Apache,每个Netcraft研究都显示了一个非常不同的采用故事。通过大量的服务器,可能有更多的人具有配置,调整和扩展Web服务器的知识。

Scalable Web Architectures Please Look at Market Share of all Servers Aug 1995 to Jan 2009

答案 12 :(得分:2)

IMO对Linux和Apache没有好的一般性论据;如果您准备为它付费,您当然可以获得Linux的企业级支持(如果您愿意按照社区规则进行游戏,则可以免费获得很好的近似值)。除非你需要更复杂的功能,否则Apache并不难配置,这在应用服务器中是不可能的。

你当然可以对MySQL提起诉讼,因为最近才增加了一些与数据安全有关的最重要的功能。如果您对此感到担心,请改用PostgreSQL。

至于您编写应用程序的语言:PHP已经证明能够运行极其庞大和复杂的系统;我更关注可维护性而不是性能。并且Ruby on Rails只是“针对CRUD进行了优化”,因为简单的CRUD webapp几乎可以在几乎没有时间内编写(几分钟),但这并不意味着它不太适合更复杂的应用程序,只是它需要更多的时间(仍然少于许多其他语言)

答案 13 :(得分:2)

我认为大型商业CRM和HR应用可能会偏向于提供大型商业RDBMS产品作为其产品的基础。如果没有别的,我肯定会更愿意团结起来对抗共同的威胁。

如果他们整合那些没有许可证和支持费用的产品,那么他们就更难以证明许可证和支持费用。

答案 14 :(得分:2)

我的2c:

Linux:自从内核2.6问世以来,我认为它确实是一款高质量的操作系统。版本2.4并不完全存在,2.2是一个笑话,但2.6非常好。但是要注意选择分配。根据我的经验,RedHat / CentOS非常好,如果你有一个好的管理员,显然Debian(原创,而不是Ubuntu!)可以很好地设置。我对OpenSUSE的体验不是很好。

Apache:没有使用它,但我不明白为什么会出现问题。

MySQL:这是堆栈中最薄弱的一点。我不打算在这里详细介绍 - 如果你有兴趣,请查看reddit.programming的评论。更好地了解PostgreSQL。

PHP / Perl / Ruby / Python:我使用过Perl,在较小程度上使用过Python。它们可能适用于基于Web的应用程序,其中大部分工作都是由Web服务器和DBMS完成的。但是,我更喜欢静态类型系统,而是选择业务应用程序的Java / C#和系统编程的C ++。

答案 15 :(得分:1)

使用LAMP堆栈的大型企业存在两个主要问题:

  • TCO :考虑到LAMP基本上是免费的,企业仍然可以通过其他商业解决方案实现更低的总运营成本
  • 可支持性:企业可以通过支付额外费用获得商业供应商的全天候专业支持

答案 16 :(得分:1)

我认为并不是说这项技术还不成熟,或者让像AT& T这样的大公司继续在企业级实施全面实施。这些公司对IT支出有如此大的预算,他们最不愿意考虑的是在开源技术所需的定制和增强上花费更多,以满足他们的业务需求。

所以他们所寻找的(来自我的咨询经验)是购买和运行产品包,而不必花费更多的研究和黑客部分。使用开源构建的公司已经在全球范围内开发了自己的支持团队,以满足大型企业不太愿意做的任何支持需求。他们需要快速而且肯定的事情,他们可以付钱。

答案 17 :(得分:1)

Linux经常被使用。 Apache和Tomcat经常使用。 MySQL现在可能很强大。我会改用PostgreSQL。银行将使用Oracle,但那里有对Java和Tomcat的良好支持。 PHP使用很多,但许多大公司更喜欢Java。

在我看来,你最好争论一个Linux,(可能是商业支持的版本)Tomcat,Java,Tomcat | Oracle | MSSQL解决方案。

你需要一个Linux系统管理员,特别是随着服务器数量的增加,虽然我确信你可以在那段时间之前获得兼职。如果该公司已经拥有Windows系统管理员,那么争论Linux将会很艰难。

答案 18 :(得分:0)

我个人并不认为Linux的支持程度低于其他提到的操作系统;事实上,硬件供应商通常支持Linux而不是任何其他操作系统(Windows除外,如果您使用maintream发行版,它们通常支持很好)。

如果您不使用奇怪的风格(提示:只使用RHEL或Centos,它是免费的等价物),Linux得到了很好的支持。

MySQL可能有一些缺点,但在我看来它有很多优点;我们以非预期的方式大规模使用它,但它仍然可以很好地工作(大多数问题是由于我们的版本过时或配置不当)。

LAMP中“P”代表什么是值得商榷的。我觉得PHP不是企业级的,因为它有很多个人缺点(例如,糟糕的unicode处理,没有名称空间,不一致的API,不一致的语法,不良的版本向后兼容性,重复/过时的功能),这些缺点使它们变得困难实施可维护的系统。

但鉴于经验丰富的团队,即使您选择了PHP,它也可以用来制作极高质量的应用程序。

答案 19 :(得分:0)

Redhat和IBM全力支持Linux,Sun收购了MySQL,雅虎使用Php,众多公司使用LAMP堆栈,但许多使用部件。

答案 20 :(得分:-1)

如果它对谷歌来说足够好,请相信我,这对你来说已经足够了。