繁体   English   中英

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

[英]Is the LAMP stack appropriate for Enterprise use?

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

明确地说,“企业”是指大型或超大型公司,其中安全性,健壮性,技能集的可用性,总拥有成本(TCO),可伸缩性和工具的可用性是关键考虑因素。 换句话说,一家寻求外部采用框架/体系结构的公司-在这种环境中,普遍存在的事物将比外来事物/深奥事物更“有效”。

我已经看到一些用例,其中Oracle,IBM和Sun在LAMP堆栈上为各种企业实现了系统。 我还看到了在其上构建诸如yellowpages.com(Ruby on rails)和Facebook(php)之类的网站的示例。 但是,这些示例都不是我要找的。

我真的在尝试在大型银行(例如,花旗集团),电信公司(例如,AT&T)或制造商(例如,Proctor和Gamble)中将其作为企业标准的示例。 只是要清楚一点,我不是在寻找一个有限使用的示例(就像摩根大通(JPMorgan Chase)一样),而是将其用作CRM,制造系统或HR管理等系统以及内部的核心平台的示例。和外部网站。

到目前为止,我已经看到,基于LAMP堆栈的应用程序运行速度较慢,灵活性较差。 我听到的一些论点是:

  • 人们认为Linux不如Unix,Solaris或Windows Server受到很好的支持。

  • 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堆栈适合企业的想法吗?

谢谢!

K A

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

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

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

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

不幸的是,第1项的示例并不多。因此,您的案例得到了证明。 它不能用于企业应用程序,因为-当前-您还没有所谓的“企业”应用程序。

但是,您的其他观点非常有趣。

  1. 人们认为Linux不如Unix,Solaris或Windows Server受到很好的支持 我认为Red Hat会强烈反对。 给他们打个电话。 我认为他们会做出很有说服力的销售宣传。 阅读他们的成功故事

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

  3. MySQL是“尚未准备好黄金时段”的数据库 与Sun Microsystems合作。 我认为他们会强烈反对。 给他们打个电话。 我认为他们会做出很有说服力的销售宣传。 阅读他们的成功故事

  4. PHP / Ruby on Rails已针对CRUD进行了优化,并且两者的执行速度都很慢 可能是真的。 Java和Python可能更快。 PHP和Ruby不是LAMP中的硬道理。

在这种环境中,普遍存在的事物比异国/深奥的事物更“有效”。

尽管由于该语言存在很多缺陷,我个人不推荐PHP,但是它无疑是无处不在的。 随着旅客的涌现,Rails在共享托管公司中的支持也在迅速增长。 在最多90%的共享托管帐户支持开箱即用之前,我最多要再花一两年的时间。 如果那不是普遍存在的,那是什么?

人们认为Linux不如Unix,Solaris或Windows Server受到很好的支持。

如果您不满意,请从RedHat购买支持,或者安装Solaris并从Sun购买支持。 两者都将为您提供与Microsoft一样好的支持。

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

我不能说BEA WebLogic,但是配置了Apache,IIS和Tomcat之后,Apache既很容易理解,又很容易找到示例和文档

对于爱好者来说,MySQL是一个“尚未准备好黄金时段”的数据库,而不是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#中有很多非经粗优化的框架。 净赢:没人(因此无关紧要)

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

所有这一切的权衡是开发时间。 一旦使用了所有这些建议,就说服了老板,使用LAMP 不会让您输光,如果您精简数字并向他们证明,用Java构建网站将需要6个工作月的时间,只有3个可以在ruby / python中构建它,这才是真正的意义所在。

如果雇用白痴来实现它,C ++和Oracle将无法扩展。 如果您聘请有才干并能完成工作的人员,则PHP和MySQL可以很好地进行扩展。

安全性和鲁棒性也存在相同的论点。

Facebook,Digg和Yahoo的某些部分都在PHP上运行。 当然,他们雇用了许多博士程序员。

只是以为我会在LAMP-Wikipedia上运行的网站列表中添加另一个网站。 世界第七大网站,完全用PHP编写,并运行MySQL,并且只有两个或三个付费开发人员。 当然,他们从志愿者那里得到了一些帮助,但是数量并不多,而且规模还可以。 不知道您是否真的称他们为“企业”,但对于如此庞大且受欢迎的网站,他们似乎为自己做好了。

人们认为Linux不如Unix,Solaris或Windows Server受到很好的支持。

正如其他人所说,给Red Hat打个电话,我敢肯定他们会有所不同。 绝对免费的 Linux支持如此之多。

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

这取决于您要问的人。 通常管理IIS服务器的人可能会以这种方式查看它。 通常管理Apache的人不会。 这取决于您雇用的人,并且如果您的职位是LAMP,那么您将不希望雇用没有Apache经验的人。

我只是想补充一点,我已经目睹了很多次客户只有在为某些解决方案付出了严重的代价时才感到自在,即使这使企业集成变得更加困难,尽管您提出了什么论点。

我认为首要标准应该是您团队的技能水平和舒适度,以确保做出何种平台决策都能很好地与他们配合。 无论您决定做什么,都要考虑代码的可伸缩性和可维护性。 无论选择哪种堆栈,工具都很棒。

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

  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. 上面的Enterprise Linux堆栈中没有一个运行诸如MySQL(现在属于Sun的域,因此可以认真看待)之类的开放源代码之类的自助餐,Apache(那里有apache专家),Ruby(不是我个人的选择)/ PHP (祝您好运)/ Python(我喜欢它,因为它是一种成熟的语言)。 我会从管理代码的角度提倡python或ruby。 也许对某些人来说可能是PHP..i我不喜欢它。

严格来说,这是一个主观意见,但我个人认为MySQL和PHP在某种程度上来说是一个弱点,但是肯定有很多人不同意,而大公司则选择了LAMP。

我希望看到postgres甚至SQLite都从MySQL市场中抢走一部分,而且我希望看到更多基于mono或jsp或cocoon的应用程序。 我想LAMP对于总括而言太具体了。 :)

Linux / Apache经过了强化,精益化,每个人都有很多人(当然以适当的价格)会提供支持,大量有用的工具,许多具有非常高实用性的工具,它们可以与他们一起使用并基于它们构建。

但是,不确定其他两个。 特别是自从Sun收购MySQL以来,MySQL似乎变得更糟了,这与该线程中的帖子相反,表明Sun可能是一个很好的影响力:

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

您的帖子中有一些真实的错误神话:

JavaEE神话:-App Server比apache易于配置,nope apache更加容易。 -暗示您,只有JavaEE完整解决方案才是企业级的。

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

无论采用哪种技术,即使是MS..server实现,持久层和应用程序层,也存在3个限制瓶颈领域。所选的技术不是速度因素,因为您可以在一层中交换优点而在另一层交换缺点。 例如,我们可以通过使用文档存储而不是普通数据库来加速Java。

大多数新的Rails实施使用非Apache服务器,其速度比Apache快3到5倍。即使调整良好的Apache服务器也可以胜过某些JavaEE堆栈。只要在它们的某些属性上使用Symfony时就问Yahoo。

找不到基于LAMP的企业应用程序的原因不是因为它们不是企业级的,而是我认为完全不同的东西。 许多大型公司使用LAMP或类似产品-立即想到Facebook和 MySpace 因此,它显然不是规模和性能的问题。

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

我认为您会发现许多企业使用Linux服务器,这些服务器通常受Redhat,Novell或IBM支持,而Apache也很常用。

但是,许多企业倾向于使用Oracle或IBM DB2之类的数据库来代替开放源代码产品-尽管许多企业实际上并不需要这些系统提供的那种功能,并且可以摆脱MySQL或PostgreSQL。

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

IMO没有针对Linux和Apache的良好通用论据。 如果您愿意为Linux付费,肯定会获得企业级的支持(如果您愿意遵循社区的规则,则可以免费获得它的一个很好的近似值)。 而且,除非您需要更复杂的功能(在应用程序服务器中不太可能),否则Apache的配置并不难。

您肯定可以反对MySQL,因为有关数据安全的一些最重要的功能是最近才添加的。 如果您对此感到担心,请改用PostgreSQL。

至于您使用以下语言编写应用程序的语言:PHP已被证明能够运行非常大型和复杂的系统; 我会更关心可维护性而不是性能。 而且Ruby on Rails仅在几乎没有时间(从字面上看)就可以编写一个简单的CRUD Web应用程序的情况下“针对CRUD进行了优化”,但这并不意味着它一定程度上不太适合更复杂的应用程序,只是需要花费很多时间。更多的时间(仍然比许多其他语言少)

我认为大型商业CRM和HR应用程序可能偏向于交付大型商业RDBMS产品作为其产品的基础。 如果没有别的什么,我相信他们会更愿意团结起来抵抗共同的威胁。

如果他们集成了没有许可证和支持费用的产品,那么他们很难证明许可证和支持费用。

我的2c:

Linux:自从内核2.6发布以来,我肯定会说它绝对是高质量的OS。 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 ++用于系统编程。

我想建议我们确定企业系统的可伸缩性要求,以及与Web应用程序相比有何不同。 看一下一些最可扩展的系统,例如Wikipedia,Flickr,Wordpress,Facebook,MySpace以及其他许多系统。 您将在此处看到LAMP堆栈。 我更喜欢Python(因为我觉得它是一种更干净的语言),但是我听诸如Cal Henderson(Flickr)之类的专家,他写了一本关于可伸缩性的书,谈论他如何扩展MySQL服务器库。

企业系统的基本特征是什么?

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

但是LAMP具有其他功能,例如更快的开发,更容易的扩展,大量可供重用的可用库,一些已记录的可伸缩性故事,成熟的Web框架。

这里有一些建立可扩展系统的指针(我在谈论Web Scale)。 鉴于所有这些证据,我一直想知道为什么LAMP尚未准备好用于企业级应用程序的感觉不断出现。

至于Apache,每个Netcraft的研究都展示了一个截然不同的采用故事。 通过庞大的服务器数量,可能会有更多的人知道如何配置,调整和扩展Web服务器。

可扩展的Web体系结构, 请查看所有服务器的市场份额,1995年8月至2009年1月

我相信这不是技术过早,还是使AT&T之类的笨蛋无法在企业级全面实施。 这些公司的IT支出预算很大,以至于他们想到的最后一件事就是花更多的钱在开源技术上进行定制和增强,以适应他们的业务需求。

因此,他们寻找的东西(来自我的咨询经验)是购买并运行产品包,而不必在研究和黑客方面花更多的钱。 使用开源构建的公司已经在全球范围内建立了自己的支持小组,以满足任何支持需求,而大型企业并不愿意这样做。 他们需要快速而有把握地完成工作,并且他们可以付款。

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

  • TCO :考虑到LAMP基本免费,企业使用其他商业解决方案仍可实现较低的总运营成本
  • 可支持性 :企业可以毫不费力地从商业供应商那里获得全天候的专业支持

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

我认为,最好是争辩一个Linux(可能是商业支持的版本)的Tomcat,Java,Tomcat | Oracle | MSSQL解决方案。

您将需要Linux系统管理员,尤其是随着服务器数量的增加,尽管我确信您可以在该时间之前获得兼职。 如果该公司已经有Windows系统管理员,那么为Linux争辩就很难了。

Redhat和IBM完全支持Linux,Sun收购了MySQL,Yahoo使用Php,许多公司使用LAMP堆栈,但是许多使用零件。

我个人并不认为Linux比上面提到的其他OS支持的更好。 实际上,硬件供应商通常确实比任何其他操作系统都支持Linux(Windows除外,如果您使用maintream发行版,它们通常会很好地支持Linux)。

只要您不使用奇怪的风格(提示:仅使用RHEL或Centos,它是免费的等效语言),就会很好地支持Linux。

MySQL可能有一些缺点,但我认为它有很多优点。 我们以意想不到的方式大规模使用了它,但是它仍然可以正常工作(大多数问题是由于我们的版本过时或配置错误)。

LAMP中“ P”代表什么是有争议的。 我觉得PHP尚不适合企业使用,因为它有很多缺点(例如,糟糕的unicode处理,没有名称空间,不一致的API,不一致的语法,较差的版本向后兼容性,重复/过时的功能),这些因素加起来使其很难实施可维护的系统。

但是,如果有一支经验丰富的团队,即使您选择PHP,它也可以用于制作非常高质量的应用程序。

如果对Google足够好,请相信我,对您也足够好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM