avatar
做web还是java最方便# Programming - 葵花宝典
w*m
1
什么东西打个jar包,
扔到服务器的jvm上就可以用了。
不需要任何的依赖。
php,python,node这些都要部署,
依赖库还有可能需要编译。
太麻烦了。
avatar
N*m
2
jar hell就够头疼了
python, node也可以打包

【在 w********m 的大作中提到】
: 什么东西打个jar包,
: 扔到服务器的jvm上就可以用了。
: 不需要任何的依赖。
: php,python,node这些都要部署,
: 依赖库还有可能需要编译。
: 太麻烦了。

avatar
d*g
3
跟我念——Docker:F-r-e-e-B-S-D

【在 w********m 的大作中提到】
: 什么东西打个jar包,
: 扔到服务器的jvm上就可以用了。
: 不需要任何的依赖。
: php,python,node这些都要部署,
: 依赖库还有可能需要编译。
: 太麻烦了。

avatar
w*m
4
python ,node 很多人讨论过的,结论是无法打包。
打个比方,python用个virtualenv,然后拷到另外一个机器,肯定是无法运行。

【在 N*****m 的大作中提到】
: jar hell就够头疼了
: python, node也可以打包

avatar
d*g
5
感觉你们从来没做过CI?我也是醉了

【在 w********m 的大作中提到】
: python ,node 很多人讨论过的,结论是无法打包。
: 打个比方,python用个virtualenv,然后拷到另外一个机器,肯定是无法运行。

avatar
w*m
6
python要用nginx,gunicorn,uwsgi,
这些配置都不是好玩的。
每个机器还不一样。

【在 d********g 的大作中提到】
: 感觉你们从来没做过CI?我也是醉了
avatar
d*g
7
丢一个JAR上去难道就不需要数据库了?这些一样是dependency。你说的最多就是单机
玩具服务,听着在用Tomcat裸serve。自己玩玩还行

【在 w********m 的大作中提到】
: python要用nginx,gunicorn,uwsgi,
: 这些配置都不是好玩的。
: 每个机器还不一样。

avatar
d*g
8
当然不好玩,所以才需要CI。难道AWS也是靠人工丢一个JAR上去就不管了?这和JAR没
关系,JAR已经是很老的东西了
说了应该看看Docker

【在 w********m 的大作中提到】
: python要用nginx,gunicorn,uwsgi,
: 这些配置都不是好玩的。
: 每个机器还不一样。

avatar
w*m
9
我用的是spring boot。
jar里自带tomcat。的确是一个jar就可以了。
docker和jvm都是虚拟机。jvm的overhead小多了。
以前搞node和python,每次都被配置弄死了。CI对这些非编译型语言testing有意义,
部署没有意义。

【在 d********g 的大作中提到】
: 当然不好玩,所以才需要CI。难道AWS也是靠人工丢一个JAR上去就不管了?这和JAR没
: 关系,JAR已经是很老的东西了
: 说了应该看看Docker

avatar
d*g
10
而且你这瞎列一气。Gunicorn你如果不考虑scaling的话完全可以像Tomcat、Node.js一
样裸用,不需要其它。uWSGI要配合一个前端比如Nginx,但这个前端基本上都不会在同
一个机器。不过要是你的服务都没有LB的话当我没说

【在 w********m 的大作中提到】
: python要用nginx,gunicorn,uwsgi,
: 这些配置都不是好玩的。
: 每个机器还不一样。

avatar
d*g
11
我问的是AWS那么大规模的架构你以为都是一个一个丢JAR上去?不都是靠CI
Docker不是虚拟机你搞错了。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有意义,
: 部署没有意义。

avatar
w*m
12
我被python,node操了好多年了。
nginx做静态,uwsgi做动态应该是python里比较流行的standard operation。
每台单机都配nginx,还是保证系统安全的做法。
nginx不是主要做LB。

【在 d********g 的大作中提到】
: 而且你这瞎列一气。Gunicorn你如果不考虑scaling的话完全可以像Tomcat、Node.js一
: 样裸用,不需要其它。uWSGI要配合一个前端比如Nginx,但这个前端基本上都不会在同
: 一个机器。不过要是你的服务都没有LB的话当我没说

avatar
d*g
13
再给你介绍个免费的好东西吧:
https://about.gitlab.com/gitlab-ci/
虽然不是企业级的,但应付你这种需求应该绰绰有余了

【在 w********m 的大作中提到】
: 我用的是spring boot。
: jar里自带tomcat。的确是一个jar就可以了。
: docker和jvm都是虚拟机。jvm的overhead小多了。
: 以前搞node和python,每次都被配置弄死了。CI对这些非编译型语言testing有意义,
: 部署没有意义。

avatar
w*m
14
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,如果你还在手工部署那要么规模不够大要
: 么太闲

avatar
N*m
15
怎么无法运行?
aws lambda最早是支持node.js,后来有python和java
不能打包能才怪了

【在 w********m 的大作中提到】
: python ,node 很多人讨论过的,结论是无法打包。
: 打个比方,python用个virtualenv,然后拷到另外一个机器,肯定是无法运行。

avatar
d*g
16
所以你这只专注在抠字眼不理解实质。LB是一个概念的玩意儿不是非要指HAProxy,就
和web server / app server这些概念一样不同场景对应的instance不同
要是每台机器配Nginx还不上CI的话真的是自虐了

【在 w********m 的大作中提到】
: 我被python,node操了好多年了。
: nginx做静态,uwsgi做动态应该是python里比较流行的standard operation。
: 每台单机都配nginx,还是保证系统安全的做法。
: nginx不是主要做LB。

avatar
N*m
17
昏,跟nginx有啥关系?

【在 w********m 的大作中提到】
: python要用nginx,gunicorn,uwsgi,
: 这些配置都不是好玩的。
: 每个机器还不一样。

avatar
d*g
18
你这又抠字眼了。process怎么定义?我们说的是service,一个Docker跑一个service
。service是一个抽象的概念

【在 w********m 的大作中提到】
: docker有很多问题,业界的看法往negative方向走。
: 打个比方,你怎么保证一个docker image只跑一个process。

avatar
w*m
19
你说的是CD吧。
这又回到了ansible。还不是配置吗。

【在 d********g 的大作中提到】
: 所以你这只专注在抠字眼不理解实质。LB是一个概念的玩意儿不是非要指HAProxy,就
: 和web server / app server这些概念一样不同场景对应的instance不同
: 要是每台机器配Nginx还不上CI的话真的是自虐了

avatar
d*g
20
好吧你抠字眼能力强,我也和你抠。你做CI的时候假设要做end-to-end test,一个API
server起来一个headless browser自动测试,这时候为了模拟真实环境难道不能CI建
一套一模一样的来测?
做配置的多了,Ansible、Salt一堆。不知道你要讨论啥?

【在 w********m 的大作中提到】
: 你说的是CD吧。
: 这又回到了ansible。还不是配置吗。

avatar
N*m
21
感觉你混淆很多概念
nginx是reverse proxy,Java一样要用
gunicorn, uwsgi这些跟tomcat类似,python里面你一样可以不用,用flask这样的就跟
你的spring boot一样,直接运行就行了;node.js就更简单了

【在 w********m 的大作中提到】
: python要用nginx,gunicorn,uwsgi,
: 这些配置都不是好玩的。
: 每个机器还不一样。

avatar
d*g
22
如果你说JAR不需要配置我呵呵。JAR的配置有些SB傻到直接写在那个zip包里
你说的简单是个人感觉上的一个container的概念,就是反正我就这个东西,给你就需
要跑起来。这就是Docker的思路,但是Docker能干的事情更多

【在 w********m 的大作中提到】
: 你说的是CD吧。
: 这又回到了ansible。还不是配置吗。

avatar
w*m
23
java是我用过的web app,目前依赖最少的。
docker有时想解决问题,反倒引入了更多的问题。如果不是很熟,少用为佳。

【在 d********g 的大作中提到】
: 如果你说JAR不需要配置我呵呵。JAR的配置有些SB傻到直接写在那个zip包里
: 你说的简单是个人感觉上的一个container的概念,就是反正我就这个东西,给你就需
: 要跑起来。这就是Docker的思路,但是Docker能干的事情更多

avatar
w*m
24
pip和npm都是local要装的。这就是麻烦。

【在 N*****m 的大作中提到】
: 感觉你混淆很多概念
: nginx是reverse proxy,Java一样要用
: gunicorn, uwsgi这些跟tomcat类似,python里面你一样可以不用,用flask这样的就跟
: 你的spring boot一样,直接运行就行了;node.js就更简单了

avatar
d*g
25
npm不就和jvm一样。jvm都可以装为啥npm不行?
注:防止抠字眼——我知道node才和jvm类似是runtime

【在 w********m 的大作中提到】
: pip和npm都是local要装的。这就是麻烦。
avatar
N*m
26
这都是装好了的
跟你要装jre一样,有啥问题?

【在 w********m 的大作中提到】
: pip和npm都是local要装的。这就是麻烦。
avatar
w*m
27
这些都是依赖,更新一个包,整个系统崩溃的见的不少。
跟java的打包不是一个概念。

【在 N*****m 的大作中提到】
: 这都是装好了的
: 跟你要装jre一样,有啥问题?

avatar
w*m
28
所以java能到处运行是个很大的优点。
上docker或者ansible/chef,这些都要配置,非常麻烦。不应该是程序员该做的。

【在 d********g 的大作中提到】
: npm不就和jvm一样。jvm都可以装为啥npm不行?
: 注:防止抠字眼——我知道node才和jvm类似是runtime

avatar
d*g
29
Python的virtualenv和Python 3内置的venv
Node的bower和webpack
没见谁系统崩溃了?Maven更神一点?

【在 w********m 的大作中提到】
: 这些都是依赖,更新一个包,整个系统崩溃的见的不少。
: 跟java的打包不是一个概念。

avatar
d*g
30
你可能上了假的程序员课

【在 w********m 的大作中提到】
: 所以java能到处运行是个很大的优点。
: 上docker或者ansible/chef,这些都要配置,非常麻烦。不应该是程序员该做的。

avatar
N*m
31
zip就行了,比jar还简单

【在 w********m 的大作中提到】
: 这些都是依赖,更新一个包,整个系统崩溃的见的不少。
: 跟java的打包不是一个概念。

avatar
N*m
32
docker也是标配,比jre还常见

【在 w********m 的大作中提到】
: 所以java能到处运行是个很大的优点。
: 上docker或者ansible/chef,这些都要配置,非常麻烦。不应该是程序员该做的。

avatar
w*m
33
你要是做python多年就知道了,virtualenv不能水平移植有多麻烦。
不信你把你的venv目录zip下,copy到另一个机器试试。

【在 d********g 的大作中提到】
: Python的virtualenv和Python 3内置的venv
: Node的bower和webpack
: 没见谁系统崩溃了?Maven更神一点?

avatar
w*m
34
docker一个image可能就1GB。
jre总共就200M。

【在 N*****m 的大作中提到】
: docker也是标配,比jre还常见
avatar
N*m
35
为啥一定要用大的?
alpine才几MB,而且docker是分层的

【在 w********m 的大作中提到】
: docker一个image可能就1GB。
: jre总共就200M。

avatar
w*m
36
试试docker pull mysql

【在 N*****m 的大作中提到】
: 为啥一定要用大的?
: alpine才几MB,而且docker是分层的

avatar
N*m
37
这个跟python有啥关系?java用mysql就不要了?

【在 w********m 的大作中提到】
: 试试docker pull mysql
avatar
N*m
39
docker pull python:alpine,才29MB
node:4-alpine,13MB
哪个都比jre小

【在 w********m 的大作中提到】
: 试试docker pull mysql
avatar
d*g
40
virtualenv本来就不是这样用的你不知道?CI的build machine一般得做成和prod一样的
关键你这copy来copy去的做法很山寨呀,CI不是你这样做的

【在 w********m 的大作中提到】
: 你要是做python多年就知道了,virtualenv不能水平移植有多麻烦。
: 不信你把你的venv目录zip下,copy到另一个机器试试。

avatar
w*m
41
那就写配置一个一个装呗。
要考虑保持开发机和prod机idempotent。
其实不是难,就是麻烦。

样的

【在 d********g 的大作中提到】
: virtualenv本来就不是这样用的你不知道?CI的build machine一般得做成和prod一样的
: 关键你这copy来copy去的做法很山寨呀,CI不是你这样做的

avatar
d*g
42
你可以把JAR看成远古的部署方式,但是现在远远不够了。Docker是更高一级的
container,因为不可能所有东西都是Java服务,不可能把所有服务都搞成JAR,除非你
只局限在Spring。就算是Spring,数据库能JAR吗?显然不行,你还是得配置

【在 w********m 的大作中提到】
: 那就写配置一个一个装呗。
: 要考虑保持开发机和prod机idempotent。
: 其实不是难,就是麻烦。
:
: 样的

avatar
d*r
43
大牛觉得 Ansible、Salt 哪一个好点

API

【在 d********g 的大作中提到】
: 好吧你抠字眼能力强,我也和你抠。你做CI的时候假设要做end-to-end test,一个API
: server起来一个headless browser自动测试,这时候为了模拟真实环境难道不能CI建
: 一套一模一样的来测?
: 做配置的多了,Ansible、Salt一堆。不知道你要讨论啥?

avatar
d*g
44
没咋用过Ansible。Fabric和Salt用过一点
这些主要是infra/ops的事,dev不咋管但是要会

【在 d*******r 的大作中提到】
: 大牛觉得 Ansible、Salt 哪一个好点
:
: API

avatar
w*m
45
就事论事。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吗?显然不行,你还是得配置

avatar
d*g
46
“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要
: 强。

avatar
c*e
47
tomcat 和 java 的version不match的时候,怪事不要太多。

【在 w********m 的大作中提到】
: 什么东西打个jar包,
: 扔到服务器的jvm上就可以用了。
: 不需要任何的依赖。
: php,python,node这些都要部署,
: 依赖库还有可能需要编译。
: 太麻烦了。

avatar
c*o
48
你肯定没做过专门的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要
: 强。

avatar
c*e
49
既然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要
: 强。

avatar
d*r
50
在用 Java 吧
Uber: Python, Node.js 部分转 Java
AirBnB: Ruby 部分转 java

【在 c*********e 的大作中提到】
: 既然java这么好,uber, airbnb为啥不用它?
:
: jvm

avatar
g*e
51
Cpp 也可以打到一个执行文件里
avatar
r*y
52
典型的前期起步拉风投的时候用糙快猛.
成事儿了, 需要稳扎稳打做大的时候, 转Java.

【在 d*******r 的大作中提到】
: 在用 Java 吧
: Uber: Python, Node.js 部分转 Java
: AirBnB: Ruby 部分转 java

avatar
N*m
53
这个其实跟楼主的问题没啥关系

【在 d*******r 的大作中提到】
: 在用 Java 吧
: Uber: Python, Node.js 部分转 Java
: AirBnB: Ruby 部分转 java

avatar
s*y
54
How about Twitter

【在 r***y 的大作中提到】
: 典型的前期起步拉风投的时候用糙快猛.
: 成事儿了, 需要稳扎稳打做大的时候, 转Java.

avatar
d*r
55
是的,我那贴不是回答楼主问题

【在 N*****m 的大作中提到】
: 这个其实跟楼主的问题没啥关系
avatar
c*e
56
nginx都不会配置,你还是别玩programming了。

【在 w********m 的大作中提到】
: python要用nginx,gunicorn,uwsgi,
: 这些配置都不是好玩的。
: 每个机器还不一样。

avatar
r*y
57
同样套路
Evolution of The Twitter Stack
2006
Ruby on Rails
MySQL
2008+
Ruby on Rails
MySQL (TweetStore, Flock)
Redis, Memcache
2010+
Netty (reverse proxy)
JVM (java, scala)
MySQL (TweetStore, Flock, etc)
Redis, Memcache

【在 s*********y 的大作中提到】
: How about Twitter
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。