大型NodeJS应用程序特有的潜在复杂性/问题是什么?

mar*_*her 15 javascript node.js

我来自"传统的Web应用程序"背景:思考Java,.NET,PHP,ColdFusion等.

在评估NodeJS作为非平凡应用程序的主要服务器端技术时,我想知道开发人员和运营人员可能期望面对的哪些复杂性,问题和挑战是NodeJS独有的.简而言之,我想减少我的未知数.一些(不是全部)示例:

  • 它如何适应大型团队的发展?在20或50或200名开发人员的团队中,Node存在哪些独特的挑战?
  • 数据库访问存在哪些独特的挑战?"Enterprisey"数据访问问题主要通过Java处理(连接池,安全性等,通过Spring).这是Node的情况吗?
  • 报告繁重的应用程序通常需要Excel,PDF,甚至是PNG导出...... Node如何在这种类型的应用程序中使用?
  • Node是否在开发时调试方面提出了独特的挑战?
  • 存在哪些独特的运营挑战?从服务器重启/热代码交换/负载平衡到监控和管理生产集群的工具.

等等.开发,维护和生产管理100 + K LoC代码库有哪些经验教训,这些代码库部署在服务器场中,受到数十名开发人员的欢迎?

jap*_*ott 6

我会尝试回答你的一些问题

它如何适应大型团队的发展?在20或50或200名开发人员的团队中,Node存在哪些独特的挑战?

  • 它也像其他语言一样; 没有!程序员团队通常使用版本控制系统,如git,svn,mercurial等来处理同一文件的同事

数据库访问存在哪些独特的挑战?"Enterprisey"数据访问问题主要通过Java处理(连接池,安全性等,通过Spring).这是Node的情况吗?

  • 节点与数据库无关.您可以将任何数据库与存在驱动程序/包装器的节点一起使用(与PHP相同).关系数据库(MySQL,SQLite)和NoSQL(MongoDB)有很多驱动程序/包装器

报告繁重的应用程序通常需要Excel,PDF,甚至是PNG导出...... Node如何在这种类型的应用程序中使用?

  • 正如php和其他人所做的那样,Node可以访问普通的shell.因此,如果您使用php处理图像,则使用ImageMagick或GD的包装器.GD需要安装在WebServer上才能工作,因为php会将命令发送到命令行.与节点相同; 找到一个包装器(http://search.npmjs.org)并使用你想要的功能.

Node是否在开发时调试方面提出了独特的挑战?

  • Node是Javascript,所以它不编译,但是JIT.因此,只有在执行失败时才会检测到故障.您需要为临时/开发机器和实时服务器旁边的每个开发人员提供本地环境,以便他们可以在将代码提交到登台服务器之前测试代码

存在哪些独特的运营挑战?从服务器重启/热代码交换/负载平衡到监控和管理生产集群的工具.

  • 我没有意识到"独特"的挑战.你将像所有其他语言一样处理监控/心跳(是的,有些语言可以像Erlang一样).在服务器重启时,你需要像启动节点那样永远或超级管理的服务,但这与Apache + PHP/Perl相同.
  • (Node有一个Cluster模块,可以帮助你处理多个worker(对于多核服务器))

看看Git来管理你的代码.并根据您想要做的事情选择语言(高并发性,可伸缩性)