node.js能开发大型网站吗?
时间:2022-09-04 10:15:01 | 来源:网站运营
时间:2022-09-04 10:15:01 来源:网站运营
补充一下国外的:其实看一看
Node.js Foundation Members 就可以大约猜到国外有哪些大公司正在使用 Node.js 了 。
- Paypal:Paypal 从 2012 年开始大量将使用 Java 编写的业务改写为 Node.js,此前在重构 checkout 系统的时候他们让 Java 程序员和 Node.js 程序员做了一次 Bakeoff(Node.js at PayPal),在同样的测试+同样的需求下,Node.js 组在更短的时间内用更少的人加更少的代码开发出了一样的系统,并且性能比 Java 版好得多,此后他们就成为了 Node.js 的死忠……目前 Paypal 有大约 700 名活跃中的 Node.js 开发者(来源:https://www.youtube.com/watch?v=-00ImeLt9ec)。他们在很多 JavaScript 和 Node.js 开发相关的会议上都有做过分享,另外 Node.js 基金会现任主席也是 Paypal 的员工。
- Godaddy:收购(准确来说是acqui-hire)了 Nodejitsu,原本是 .NET 的架构,使用 Node.js 进行了重构并微服务化。参考:https://www.youtube.com/watch?v=MtpGVP-Qs-k
- IBM:收购了 Strongloop,Node.js 基金会成立的主要推手之一,主要将 Node.js 应用于企业级开发,重点放在 API 建设上,参考:https://www.youtube.com/watch?v=O28Knn00qYo
- Yahoo:用于 Yahoo 站点上的各种页面、Flickr 的照片页等等的渲染,也包括 API 和视频流传输(Node.js on the Road: Node.js @ Yahoo)
- Microsoft:微软在 Node.js 的投入比其他广一些,而且他们还有自己的 JavaScript 引擎 Chakra。从网站的角度来说有 Power BI(Microsoft Careers: My job details),不过他们呆在基金会还有更多东西做,他们和同在基金会的 Intel 类似,也很看重 Node.js 在物联网方面的前景,所以随着 Windows 10 IoT 的发布,做了 Microsoft/node-v0.12,后来直接开源了 Chakra,并且正在准备提交 PR 到 node.js mainline。
- SAP:类似 IBM,用于企业级开发
- SAP makes strong commitment to Node.js
其他不在基金会的大型应用(其实你在 indeed 之类的地方上搜一下谁在招 Node.js 开发也知道了……):
- Uber:Uber 从一开始就是使用 Node.js 完成整个系统的 —— 对,整个涵盖美国等多个国家的,分布式实时调配系统,而不是系统里的一小部分——并且现在还在使用。参考:
- Scaling Uber's Real-time Market Platform
- https://www.youtube.com/watch?v=ElI5QtUISWM
- (Uber 的工程师在 Node Interactive 上说的一句话私以为很有道理:我们应该多看看 Uber、Walmart、IBM 这样的公司在用 Node.js 做什么有趣的事情,而不是埋头写无穷无尽的 Express App...)
- Medium:目前跑在 Amazon VPC 上,后端是服务化的架构所以也有一些其他语言打辅助,从一开始就一直在使用 Node.js 写主要的应用逻辑,前后端代码共享带来了一定便利(主要是编辑器与文章的转换)
- The Stack That Helped Medium Drive 2.6 Millennia of Reading Time
- http://www.talentbuddy.co/blog/on-building-with-node-js-at-medium-and-growing-as-a-developer/
- Netflix:类似阿里系,主要由前端推动,做渲染层与数据访问层,开源了自己的数据访问框架 falcor 。有一个比较有趣的点是,Netflix 完全托管在 Amazon 的云服务上,所以遇到过一些额外的难题(比如容器化必须跟着 Amazon 走)。参考:https://www.youtube.com/watch?v=p74282nDMX8
- Walmart:类似阿里,有大促(黑色星期五)的业务场景,为社区贡献了著名的 Walmart memory leak(咦)
- Walmart Node.js Memory Leak
- Node.js at Walmart: Introduction
- Groupon:从 Ruby on Rails 开发的 monolithic app 转为 Node.js 开发的微服务,和 Paypal 一样也是在一次 Bakeoff 后做的决定
- https://www.youtube.com/watch?v=TWVblTpUlxM
- New York Times:(TODO)(咳咳,准确来说,这个网站并不存在于地球上啊,并不存在(严肃脸))
- Under the Surface of the NYT Mobile Redesign
- http://www.talentbuddy.co/blog/building-with-node-js-at-the-new-york-times/
- GitHub :https://twitter.com/github/status/16979699217465344 (TODO)
- NASA:(你没看错)(由于显而易见的原因,资料比较少,TODO)
- 待续……
去年年底的 Node Interactive 大会,以及之前的 Node Summit 大会,就有很多关于使用 Node 进行企业级开发(这里的企业级开发指的是比如 Paypal 这样的商业公司里的开发)的讨论……目前使用 Node.js 进行开发的大型网站/ Web 服务大约有几种模式:
- 使用 Node.js 将从其他语言(Java、.NET、Ruby on Rails 等)编写的大型应用拆分并重构为 Node.js 开发的微服务,或者是使用 Node.js 重构 API(常见的是构建移动端 API),使用范围较广,如 Groupon,Godaddy,Walmart,以及曾经的 Linkedin。这类应用得到的红利未必纯粹是从 Node.js 得来的,更多来自于整体架构的改进,在遇到 Node.js 整体生态的不成熟带来的痛点可能顾虑成本而切走(如 Linkedin)也可能借助社区、技术咨询及自己团队的力量坚持解决,并反馈给社区帮助 Node.js 成长(如 Walmart)。
- 从一开始就使用 Node.js 支撑主要业务,并持续至今,在发展壮大的过程中引入其他语言(常见的搭配是 Go )打辅助,如 Uber,Medium。这类应用有的看重 Node.js 开发实时应用的便利,有的看重前后端代码复用,遇到的痛点主要是 Node.js 作为一个新生技术,整体生态在大规模应用还缺乏经验,比如运维、集群管理、性能调优等。
- 由前端团队推动,做数据访问层与渲染层,有的已经在这一层大幅度替换了原有的架构,如 Paypal,有的还属于探索中,相比原来的技术而言规模较小,如 Yahoo, Netflix,阿里系。有趣的一点是,通常这类场景下 Node 的竞争对手都是占主导地位的 Java 和原来就在跟 Java 竞争的 PHP,目标通常是让前端团队有更多发挥空间以便节省沟通成本并快速迭代,让 Java 作为偏后的支持,弥补 Node.js 在分布式应用和事务控制上的欠缺。这类应用最初遇到的痛点是,如何将 Node.js 应用接入大公司现有的基础架构,如日志、监控系统、分布式服务接入等。当规模上去之后也会遇到第二种应用的痛点。
- 使用 Node.js 做企业级开发(换句话说,外包……),比较看重 API 建设,为现有的解决方案篮子里加多一个投资,如 IBM,SAP。这类应用遇到的痛点是 Node.js 的工具链(IDE 等)相比 Java 等技术尚不成熟,JavaScript 的语言设计导致这类应用难以进行充分的静态检查,代码质量不好控制。
- 使用 Node.js 打辅助,应用在一些感觉较为合适的业务场景,如 GitHub。
总体而言大家的看法是,Node 已经具备了应用在企业级开发的资格了,但是 Tooling、测试、监控、运维等方面的建设还需要继续努力。
顶锅盖打个广告:在国内使用 Node.js 做开发的,欢迎围观阿里云出品的 Node.js 应用服务解决方案 alinode (不需要你的服务器在阿里云也能用哦),我们主要解决第二种和第三种应用遇到的痛点,帮助你监控并解决
线上 Node.js 应用出现的问题(光速逃