做web还是java最方便# Programming - 葵花宝典w*m2017-02-02 08:021 楼什么东西打个jar包,扔到服务器的jvm上就可以用了。不需要任何的依赖。php,python,node这些都要部署,依赖库还有可能需要编译。太麻烦了。
N*m2017-02-02 08:022 楼jar hell就够头疼了python, node也可以打包【在 w********m 的大作中提到】: 什么东西打个jar包,: 扔到服务器的jvm上就可以用了。: 不需要任何的依赖。: php,python,node这些都要部署,: 依赖库还有可能需要编译。: 太麻烦了。
d*g2017-02-02 08:023 楼跟我念——Docker:F-r-e-e-B-S-D【在 w********m 的大作中提到】: 什么东西打个jar包,: 扔到服务器的jvm上就可以用了。: 不需要任何的依赖。: php,python,node这些都要部署,: 依赖库还有可能需要编译。: 太麻烦了。
w*m2017-02-02 08:024 楼python ,node 很多人讨论过的,结论是无法打包。打个比方,python用个virtualenv,然后拷到另外一个机器,肯定是无法运行。【在 N*****m 的大作中提到】: jar hell就够头疼了: python, node也可以打包
d*g2017-02-02 08:025 楼感觉你们从来没做过CI?我也是醉了【在 w********m 的大作中提到】: python ,node 很多人讨论过的,结论是无法打包。: 打个比方,python用个virtualenv,然后拷到另外一个机器,肯定是无法运行。
w*m2017-02-02 08:026 楼python要用nginx,gunicorn,uwsgi,这些配置都不是好玩的。每个机器还不一样。【在 d********g 的大作中提到】: 感觉你们从来没做过CI?我也是醉了
d*g2017-02-02 08:027 楼丢一个JAR上去难道就不需要数据库了?这些一样是dependency。你说的最多就是单机玩具服务,听着在用Tomcat裸serve。自己玩玩还行【在 w********m 的大作中提到】: python要用nginx,gunicorn,uwsgi,: 这些配置都不是好玩的。: 每个机器还不一样。
d*g2017-02-02 08:028 楼当然不好玩,所以才需要CI。难道AWS也是靠人工丢一个JAR上去就不管了?这和JAR没关系,JAR已经是很老的东西了说了应该看看Docker【在 w********m 的大作中提到】: python要用nginx,gunicorn,uwsgi,: 这些配置都不是好玩的。: 每个机器还不一样。
w*m2017-02-02 08:029 楼我用的是spring boot。jar里自带tomcat。的确是一个jar就可以了。docker和jvm都是虚拟机。jvm的overhead小多了。以前搞node和python,每次都被配置弄死了。CI对这些非编译型语言testing有意义,部署没有意义。【在 d********g 的大作中提到】: 当然不好玩,所以才需要CI。难道AWS也是靠人工丢一个JAR上去就不管了?这和JAR没: 关系,JAR已经是很老的东西了: 说了应该看看Docker
d*g2017-02-02 08:0210 楼而且你这瞎列一气。Gunicorn你如果不考虑scaling的话完全可以像Tomcat、Node.js一样裸用,不需要其它。uWSGI要配合一个前端比如Nginx,但这个前端基本上都不会在同一个机器。不过要是你的服务都没有LB的话当我没说【在 w********m 的大作中提到】: python要用nginx,gunicorn,uwsgi,: 这些配置都不是好玩的。: 每个机器还不一样。
d*g2017-02-02 08:0211 楼我问的是AWS那么大规模的架构你以为都是一个一个丢JAR上去?不都是靠CIDocker不是虚拟机你搞错了。JVM的overhead大是不争的事实。另外还有FreeBSD的Jails也是很好的方案,比VM轻你搞不定Node和Python是你自己的事。我在Jails里部署JVM应用都没有问题(比如Elasticsearch),别说Docker这种大路货了CI你可能没正经用过。非要抠定义是CI+CD,如果你还在手工部署那要么规模不够大要么太闲【在 w********m 的大作中提到】: 我用的是spring boot。: jar里自带tomcat。的确是一个jar就可以了。: docker和jvm都是虚拟机。jvm的overhead小多了。: 以前搞node和python,每次都被配置弄死了。CI对这些非编译型语言testing有意义,: 部署没有意义。
w*m2017-02-02 08:0212 楼我被python,node操了好多年了。nginx做静态,uwsgi做动态应该是python里比较流行的standard operation。每台单机都配nginx,还是保证系统安全的做法。nginx不是主要做LB。【在 d********g 的大作中提到】: 而且你这瞎列一气。Gunicorn你如果不考虑scaling的话完全可以像Tomcat、Node.js一: 样裸用,不需要其它。uWSGI要配合一个前端比如Nginx,但这个前端基本上都不会在同: 一个机器。不过要是你的服务都没有LB的话当我没说
d*g2017-02-02 08:0213 楼再给你介绍个免费的好东西吧:https://about.gitlab.com/gitlab-ci/虽然不是企业级的,但应付你这种需求应该绰绰有余了【在 w********m 的大作中提到】: 我用的是spring boot。: jar里自带tomcat。的确是一个jar就可以了。: docker和jvm都是虚拟机。jvm的overhead小多了。: 以前搞node和python,每次都被配置弄死了。CI对这些非编译型语言testing有意义,: 部署没有意义。
w*m2017-02-02 08:0214 楼docker有很多问题,业界的看法往negative方向走。打个比方,你怎么保证一个docker image只跑一个process。【在 d********g 的大作中提到】: 我问的是AWS那么大规模的架构你以为都是一个一个丢JAR上去?不都是靠CI: Docker不是虚拟机你搞错了。JVM的overhead大是不争的事实。另外还有FreeBSD的: Jails也是很好的方案,比VM轻: 你搞不定Node和Python是你自己的事。我在Jails里部署JVM应用都没有问题(比如: Elasticsearch),别说Docker这种大路货了: CI你可能没正经用过。非要抠定义是CI+CD,如果你还在手工部署那要么规模不够大要: 么太闲
N*m2017-02-02 08:0215 楼怎么无法运行?aws lambda最早是支持node.js,后来有python和java不能打包能才怪了【在 w********m 的大作中提到】: python ,node 很多人讨论过的,结论是无法打包。: 打个比方,python用个virtualenv,然后拷到另外一个机器,肯定是无法运行。
d*g2017-02-02 08:0216 楼所以你这只专注在抠字眼不理解实质。LB是一个概念的玩意儿不是非要指HAProxy,就和web server / app server这些概念一样不同场景对应的instance不同要是每台机器配Nginx还不上CI的话真的是自虐了【在 w********m 的大作中提到】: 我被python,node操了好多年了。: nginx做静态,uwsgi做动态应该是python里比较流行的standard operation。: 每台单机都配nginx,还是保证系统安全的做法。: nginx不是主要做LB。
N*m2017-02-02 08:0217 楼昏,跟nginx有啥关系?【在 w********m 的大作中提到】: python要用nginx,gunicorn,uwsgi,: 这些配置都不是好玩的。: 每个机器还不一样。
d*g2017-02-02 08:0218 楼你这又抠字眼了。process怎么定义?我们说的是service,一个Docker跑一个service。service是一个抽象的概念【在 w********m 的大作中提到】: docker有很多问题,业界的看法往negative方向走。: 打个比方,你怎么保证一个docker image只跑一个process。
w*m2017-02-02 08:0219 楼你说的是CD吧。这又回到了ansible。还不是配置吗。【在 d********g 的大作中提到】: 所以你这只专注在抠字眼不理解实质。LB是一个概念的玩意儿不是非要指HAProxy,就: 和web server / app server这些概念一样不同场景对应的instance不同: 要是每台机器配Nginx还不上CI的话真的是自虐了
d*g2017-02-02 08:0220 楼好吧你抠字眼能力强,我也和你抠。你做CI的时候假设要做end-to-end test,一个APIserver起来一个headless browser自动测试,这时候为了模拟真实环境难道不能CI建一套一模一样的来测?做配置的多了,Ansible、Salt一堆。不知道你要讨论啥?【在 w********m 的大作中提到】: 你说的是CD吧。: 这又回到了ansible。还不是配置吗。
N*m2017-02-02 08:0221 楼感觉你混淆很多概念nginx是reverse proxy,Java一样要用gunicorn, uwsgi这些跟tomcat类似,python里面你一样可以不用,用flask这样的就跟你的spring boot一样,直接运行就行了;node.js就更简单了【在 w********m 的大作中提到】: python要用nginx,gunicorn,uwsgi,: 这些配置都不是好玩的。: 每个机器还不一样。
d*g2017-02-02 08:0222 楼如果你说JAR不需要配置我呵呵。JAR的配置有些SB傻到直接写在那个zip包里你说的简单是个人感觉上的一个container的概念,就是反正我就这个东西,给你就需要跑起来。这就是Docker的思路,但是Docker能干的事情更多【在 w********m 的大作中提到】: 你说的是CD吧。: 这又回到了ansible。还不是配置吗。
w*m2017-02-02 08:0223 楼java是我用过的web app,目前依赖最少的。docker有时想解决问题,反倒引入了更多的问题。如果不是很熟,少用为佳。【在 d********g 的大作中提到】: 如果你说JAR不需要配置我呵呵。JAR的配置有些SB傻到直接写在那个zip包里: 你说的简单是个人感觉上的一个container的概念,就是反正我就这个东西,给你就需: 要跑起来。这就是Docker的思路,但是Docker能干的事情更多
w*m2017-02-02 08:0224 楼pip和npm都是local要装的。这就是麻烦。【在 N*****m 的大作中提到】: 感觉你混淆很多概念: nginx是reverse proxy,Java一样要用: gunicorn, uwsgi这些跟tomcat类似,python里面你一样可以不用,用flask这样的就跟: 你的spring boot一样,直接运行就行了;node.js就更简单了
d*g2017-02-02 08:0225 楼npm不就和jvm一样。jvm都可以装为啥npm不行?注:防止抠字眼——我知道node才和jvm类似是runtime【在 w********m 的大作中提到】: pip和npm都是local要装的。这就是麻烦。
w*m2017-02-02 08:0227 楼这些都是依赖,更新一个包,整个系统崩溃的见的不少。跟java的打包不是一个概念。【在 N*****m 的大作中提到】: 这都是装好了的: 跟你要装jre一样,有啥问题?
w*m2017-02-02 08:0228 楼所以java能到处运行是个很大的优点。上docker或者ansible/chef,这些都要配置,非常麻烦。不应该是程序员该做的。【在 d********g 的大作中提到】: npm不就和jvm一样。jvm都可以装为啥npm不行?: 注:防止抠字眼——我知道node才和jvm类似是runtime
d*g2017-02-02 08:0229 楼Python的virtualenv和Python 3内置的venvNode的bower和webpack没见谁系统崩溃了?Maven更神一点?【在 w********m 的大作中提到】: 这些都是依赖,更新一个包,整个系统崩溃的见的不少。: 跟java的打包不是一个概念。
d*g2017-02-02 08:0230 楼你可能上了假的程序员课【在 w********m 的大作中提到】: 所以java能到处运行是个很大的优点。: 上docker或者ansible/chef,这些都要配置,非常麻烦。不应该是程序员该做的。
N*m2017-02-02 08:0231 楼zip就行了,比jar还简单【在 w********m 的大作中提到】: 这些都是依赖,更新一个包,整个系统崩溃的见的不少。: 跟java的打包不是一个概念。
N*m2017-02-02 08:0232 楼docker也是标配,比jre还常见【在 w********m 的大作中提到】: 所以java能到处运行是个很大的优点。: 上docker或者ansible/chef,这些都要配置,非常麻烦。不应该是程序员该做的。
w*m2017-02-02 08:0233 楼你要是做python多年就知道了,virtualenv不能水平移植有多麻烦。不信你把你的venv目录zip下,copy到另一个机器试试。【在 d********g 的大作中提到】: Python的virtualenv和Python 3内置的venv: Node的bower和webpack: 没见谁系统崩溃了?Maven更神一点?
N*m2017-02-02 08:0235 楼为啥一定要用大的?alpine才几MB,而且docker是分层的【在 w********m 的大作中提到】: docker一个image可能就1GB。: jre总共就200M。
N*m2017-02-02 08:0238 楼用alpine base的https://hub.docker.com/r/wangxian/alpine-mysql/才50MB【在 w********m 的大作中提到】: 试试docker pull mysql
N*m2017-02-02 08:0239 楼docker pull python:alpine,才29MBnode:4-alpine,13MB哪个都比jre小【在 w********m 的大作中提到】: 试试docker pull mysql
d*g2017-02-02 08:0240 楼virtualenv本来就不是这样用的你不知道?CI的build machine一般得做成和prod一样的关键你这copy来copy去的做法很山寨呀,CI不是你这样做的【在 w********m 的大作中提到】: 你要是做python多年就知道了,virtualenv不能水平移植有多麻烦。: 不信你把你的venv目录zip下,copy到另一个机器试试。
w*m2017-02-02 08:0241 楼那就写配置一个一个装呗。要考虑保持开发机和prod机idempotent。其实不是难,就是麻烦。样的【在 d********g 的大作中提到】: virtualenv本来就不是这样用的你不知道?CI的build machine一般得做成和prod一样的: 关键你这copy来copy去的做法很山寨呀,CI不是你这样做的
d*g2017-02-02 08:0242 楼你可以把JAR看成远古的部署方式,但是现在远远不够了。Docker是更高一级的container,因为不可能所有东西都是Java服务,不可能把所有服务都搞成JAR,除非你只局限在Spring。就算是Spring,数据库能JAR吗?显然不行,你还是得配置【在 w********m 的大作中提到】: 那就写配置一个一个装呗。: 要考虑保持开发机和prod机idempotent。: 其实不是难,就是麻烦。: : 样的
d*r2017-02-02 08:0243 楼大牛觉得 Ansible、Salt 哪一个好点API【在 d********g 的大作中提到】: 好吧你抠字眼能力强,我也和你抠。你做CI的时候假设要做end-to-end test,一个API: server起来一个headless browser自动测试,这时候为了模拟真实环境难道不能CI建: 一套一模一样的来测?: 做配置的多了,Ansible、Salt一堆。不知道你要讨论啥?
d*g2017-02-02 08:0244 楼没咋用过Ansible。Fabric和Salt用过一点这些主要是infra/ops的事,dev不咋管但是要会【在 d*******r 的大作中提到】: 大牛觉得 Ansible、Salt 哪一个好点: : API
w*m2017-02-02 08:0245 楼就事论事。Web上面,java还是比其它语言优势大。第一,轻量级部署。你可以把源码,静态资源,web server都打一个jar包。只要有jvm的机器都能运行。重要的框架比如elasticsearch,全部只有20多mb。node/python简单的web app动不动各种包,上GB。第二,可以rollback。像春卷的这个案例,http://www.mitbbs.com/article_t/Programming/31492193.html 。一个包更新,系统崩溃,只有全部重装。java回到上个jar就行了。第三,web app大一点的要加search feature。java就绕不过去了。不如一开始就上。第四,java这几年发展很大。spring 5的async + threading,比node/python/ruby要强。【在 d********g 的大作中提到】: 你可以把JAR看成远古的部署方式,但是现在远远不够了。Docker是更高一级的: container,因为不可能所有东西都是Java服务,不可能把所有服务都搞成JAR,除非你: 只局限在Spring。就算是Spring,数据库能JAR吗?显然不行,你还是得配置
d*g2017-02-02 08:0246 楼“node/python简单的web app动不动各种包,上GB”你可能用了假Node/Python。看了这句就不用往下浪费时间了jvm【在 w********m 的大作中提到】: 就事论事。Web上面,java还是比其它语言优势大。: 第一,轻量级部署。你可以把源码,静态资源,web server都打一个jar包。只要有jvm: 的机器都能运行。重要的框架比如elasticsearch,全部只有20多mb。node/python简: 单的web app动不动各种包,上GB。: 第二,可以rollback。像春卷的这个案例,http://www.mitbbs.com/article_t/Programming/31492193.html 。一个包更新,系统崩溃,只有全部重装。java回到上个jar就行了。: 第三,web app大一点的要加search feature。java就绕不过去了。不如一开始就上。: 第四,java这几年发展很大。spring 5的async + threading,比node/python/ruby要: 强。
c*e2017-02-02 08:0247 楼tomcat 和 java 的version不match的时候,怪事不要太多。【在 w********m 的大作中提到】: 什么东西打个jar包,: 扔到服务器的jvm上就可以用了。: 不需要任何的依赖。: php,python,node这些都要部署,: 依赖库还有可能需要编译。: 太麻烦了。
c*o2017-02-02 08:0248 楼你肯定没做过专门的devops。基本上我们deploy都是自动的,都做过三种不同的了。1. 从bare metal AWS instance上做起,用chef所有的东西装上去,全自动,哪用手动,还不烦死?2. 在1上做AMI+简单变化, image然后就能autoscaling了,60秒内响应流量,全自动。3. docker,最大的好处就是dev的时候环境和production的几乎没区别了,打包之后deploy放心很多。你那些都是小作坊的办法,大了没法做。哦,我们这套做了scala/java/php/node/ruby,语言没区别。jvm【在 w********m 的大作中提到】: 就事论事。Web上面,java还是比其它语言优势大。: 第一,轻量级部署。你可以把源码,静态资源,web server都打一个jar包。只要有jvm: 的机器都能运行。重要的框架比如elasticsearch,全部只有20多mb。node/python简: 单的web app动不动各种包,上GB。: 第二,可以rollback。像春卷的这个案例,http://www.mitbbs.com/article_t/Programming/31492193.html 。一个包更新,系统崩溃,只有全部重装。java回到上个jar就行了。: 第三,web app大一点的要加search feature。java就绕不过去了。不如一开始就上。: 第四,java这几年发展很大。spring 5的async + threading,比node/python/ruby要: 强。
c*e2017-02-02 08:0249 楼既然java这么好,uber, airbnb为啥不用它?jvm【在 w********m 的大作中提到】: 就事论事。Web上面,java还是比其它语言优势大。: 第一,轻量级部署。你可以把源码,静态资源,web server都打一个jar包。只要有jvm: 的机器都能运行。重要的框架比如elasticsearch,全部只有20多mb。node/python简: 单的web app动不动各种包,上GB。: 第二,可以rollback。像春卷的这个案例,http://www.mitbbs.com/article_t/Programming/31492193.html 。一个包更新,系统崩溃,只有全部重装。java回到上个jar就行了。: 第三,web app大一点的要加search feature。java就绕不过去了。不如一开始就上。: 第四,java这几年发展很大。spring 5的async + threading,比node/python/ruby要: 强。
d*r2017-02-02 08:0250 楼在用 Java 吧Uber: Python, Node.js 部分转 JavaAirBnB: Ruby 部分转 java【在 c*********e 的大作中提到】: 既然java这么好,uber, airbnb为啥不用它?: : jvm
r*y2017-02-02 08:0252 楼典型的前期起步拉风投的时候用糙快猛.成事儿了, 需要稳扎稳打做大的时候, 转Java.【在 d*******r 的大作中提到】: 在用 Java 吧: Uber: Python, Node.js 部分转 Java: AirBnB: Ruby 部分转 java
N*m2017-02-02 08:0253 楼这个其实跟楼主的问题没啥关系【在 d*******r 的大作中提到】: 在用 Java 吧: Uber: Python, Node.js 部分转 Java: AirBnB: Ruby 部分转 java
s*y2017-02-02 08:0254 楼How about Twitter【在 r***y 的大作中提到】: 典型的前期起步拉风投的时候用糙快猛.: 成事儿了, 需要稳扎稳打做大的时候, 转Java.
c*e2017-02-02 08:0256 楼nginx都不会配置,你还是别玩programming了。【在 w********m 的大作中提到】: python要用nginx,gunicorn,uwsgi,: 这些配置都不是好玩的。: 每个机器还不一样。
r*y2017-02-02 08:0257 楼同样套路Evolution of The Twitter Stack2006Ruby on RailsMySQL2008+Ruby on RailsMySQL (TweetStore, Flock)Redis, Memcache2010+Netty (reverse proxy)JVM (java, scala)MySQL (TweetStore, Flock, etc)Redis, Memcache【在 s*********y 的大作中提到】: How about Twitter