架构考虑

作者:Pegasus Wang
链接:https://www.zhihu.com/question/56468869/answer/260847723
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最近新起的业务后端项目都还是 python 的(python + tornado + gevent(wsgi server)),容器部署+弹性扩容。大部分项目的 qps 还没有高到非换不可的地步。有些 qps 很高的业务用 golang 写了。话说很多人被 python 惯坏了以后都懒得写其他语言了。公司在 go 和 java 后端方面的积累和实践比较少,相应基础设施不完善也是一个原因。新项目给的时间很紧,用 python 开发 mvp 产品迭代快。(现在 python,go,java 都有,python 主要在业务端,技术选型一般会考量很多因素,包括产品周期、招人成本等。核心后端业务确定会慢慢迁移到 go,节省资源)

看到有人说 python 这种动态语言不适合构架大型项目,是有一定的道理的。动态语言写起来坑比较多,太灵活,容易出错,代码写糙了后期很难维护(Rails 作者曾说过"灵活性被过分高估——约束才是解放"),我看 python 代码最头疼的就是看不出一个复杂变量的类型(最新的 tornado 代码已经给复杂数据结构加上了类型标注),重构的时候会心惊胆战。灵活性是把双刃剑,表达能力强但不好维护。动态语言在工程管理和项目维护上是有劣势的。

不过现在很多都是微服务架构,业务拆分成很多服务,不会出现一个代码仓库有很多代码的情况,保证项目是可控的。代码质量也可以通过编码规范(pep8, autopep8, editorconfig,统一开发环境),静态检测(flake8, pylint),code review(gitlab),单测(unitest, nose, py.test)等方式加强(当然最重要的还是依赖程序员的素质)。

python 能在 web 后端使用日渐广泛也是因为有 instagram, reddit, youbute, quora, pinterest, disqus, uber, Dropbox, 国内的 豆瓣、知乎、饿了么、搜狐等成功案例支撑(很多中小公司也有在用)。python 的一个好处就是很多事情都能干吧,爬虫、web、运维、科学计算啥的,学习性价比比较高,当个玩具玩玩也好。而且,如果真换技术栈也只是极少数 qps 非常高的业务,大部分 python 是能搞定的(除非冲 KPI,不然业务都做不完,更没时时间换技术栈)。业务量不大的公司也不用担心,业务量大的公司估计找投资、找牛人优化也不愁了,也不用担心。

posted @ 2018-02-05 15:59  跨境电商杂货铺  阅读(206)  评论(0编辑  收藏  举报