CSDN年度技术盛宴 “SDCC 2015中国软件开发者嘉年华”将于2015年11月19-21日在北京召开。在大会召开之际,CSDN联系上了易开发创始人兼CTO潘俊勇,请他分享易开发的无栈开发之路。 他认为,Python是一门极简语言,易掌握,不会折腾程序员,很无害。他说,“技术人生是产品人生,我们是快乐的创造性的开发者,而不仅是苦逼的制造角色的程序员。兴趣是力量的来源。”
届时,潘俊勇将在编程语言论坛中带来《易开发的无栈开发之路》的主题分享,欢迎前来现场聆听【点击这里抢票】。
潘俊勇,易开发的创始人兼CTO,江湖人称老潘,早期国内Python社区的主要推广建设人之一。
CSDN:首先请自我介绍下自己,目前所负责的领域以及所在公司。
潘俊勇:我是潘俊勇,江湖人称老潘,特点就是比较老。硕士毕业曾经在中心通讯工作过,之后出来创业,探索开源商业模式,早期国内Python社区的主要推广建设人之一。
创业以来一直专注在企业应用领域。现在公司主要产品是易开发,是一个一站式企业应用快速构建平台,解决企业应用需求多、难定制、难集成等诸多难题。
CSDN:你是如何走上技术这条路的?对Python有着怎样的情怀?你有着10余年的Python开发经验,是何缘由让你一直坚持下来的?
潘俊勇:我其实不是软件专业,但是读书的时候就做了很多开发项目,我对技术是真爱来的,是兴趣所在。
情怀不敢谈了,说说Python实际对我的影响。我其实是个实用派,2002年之前,我陆续尝试过近十种语言。一旦接触到Python,就被锁定了,一门Python可以解决所有问题,其他语言都被竞争下去了。虽然最近Golang也吸引我的目光,但是现在Python对我们够用了,而且Python不断在发展,所以我们还是对保持对Python的专一了。
对于一个匠人,最爱就是做出自己喜欢的产品,做出产品需要技术而已。所以我不认为做技术是“坚持”。Python已经是极简的语言,掌握很容易,并不会折腾程序员,很无害。所以我更愿意说我的技术人生,是产品人生。我们是快乐的创造性的开发者,而不仅是苦逼的制造角色的程序员。对,兴趣是我们的力量来源。
CSDN:当初创立易开发,遇到过哪些坑?又是如何克服的?期间有没有难忘的故事或人令你印象深刻的?
潘俊勇:创立以来,遇到无数的坑。自身架构方面的问题,选错型上错船的,性能方面的问题,可扩展、可维护方面的问题,都碰到过。若干年,见山开山,见水架桥,逐步迭代优化,才到现在的样子。易开发作为一个开发平台,也是希望能够有坑让我们来踩,让开发者安心专注到应用层构建。
架构方面,早期易开发就是所有功能全聚合的一个单一应用,虽然安装部署简单,但代码耦合严重难维护,性能难调优,难以平滑扩展。后来逐步分离成十多个服务,每个服务功能简单,全部开放接口,每个服务独立发展和优化,性能和可扩展、可维护性都得到很大的提高。这个架构,和最近企业领域所推崇的微服务架构,是不谋而合。
技术选型方面的坑更多,最大的属于选择了Zope3这个Web框架。起因是因为当前我在推广Zope/Plone开源社区,年幼无知然后被Zope3洗脑了,还有当年的选择也不多。简单还是硬道理,Zope3模仿J2ee过于学术化过于复杂了,和Python基因很不合,最重要是Zope3基本死去了。我们花了很大的时间去Zope3化。通过前面架构的分离,蚂蚁搬家,重构过程中新的服务都不用Zope3了。现在即便在用Zope3的,也仅仅用了非常基础的功能。这和当年豆瓣选择堂吉诃德那个框架类似的经历。我们最后可能切换到Pyramid去。
CSDN:易开发的开发架构是怎样的?运用到了哪些开发框架?
潘俊勇:易开发是一个多租户的企业应用PaaS平台,核心是文件和表单的内容管理,提供应用开发平台。发展到现在,技术架构已经比较复杂了,中心是一个账户服务,包括各个企业的注册、人员、认证、缴费等服务;中心还有一个消息服务,提供通知、聊天等服务;然后是可扩展的工作平台服务,可分布式部署在多个机房运营,每个运营点配套自己的文件库、文件上传服务、文件下载服务和文件转换服务。
易开发用到大量的开源产品。Web框架包括Zope3、Pyramid、Flask,桌面用到pyQT,数据库用到ZODB、MYSQL、Redis、ElasticSearch,队列是我们土制开源的ztq,协程用了Gevent,Python包依赖构建用了Buildout,运维Fabric/Docker,消息服务用了mqtt mosca、socket.io,开发自动化用了ErrBot,其他还包括Nginx、uWSQI,能一下记起的就这些了。
CSDN:你认为Python的发展现状如何?有哪些新特性值得期待?
潘俊勇:总体健康。
去年我还比较担心,Python性能问题多年无进步,而Python3的革命性导致社区力量分散。而语言竞争一刻没停息,Ruby一直前卫性感,Golang声势浩大很多Python转Golang,JavaScript现在也似乎要一统天下成为动态语言之王,Dart也磨刀霍霍。Python似乎地位不稳了。
但到今年,Python3发展很快,新特性很多,切换到Python3的理由充分了;而Golang还是比Python不那么人性化一点,抢走的地盘不多;Ruby最近似乎很小众了;Dart已基本无戏;而且Node.js的异步还是太不友好了;更可喜的是,Python在数据统计分析领域,基本是头把交椅了。
Python依然是用户体验最好的语言,经过这么多语言的竞争洗礼,语言排行榜上Python一直靠前略涨,Python没有被打败,再一次经历了时间的考验。做一个正常的人类,最适合的语言,我觉得还是Python。现在和Python最竞争的语言是JavaScript,都在竞争动态语言,是用来写应用逻辑的语言。动态语言的世界很大,Javascript和Python适用还是有区别,会一起瓜分。
CSDN:你目前还会关注哪些新技术?给学习Python的开发者一些建议吧。
潘俊勇:关注技术:一个是更底层的Golang,专治Python的性能问题;另外一个图形化编程语言Blockly,我觉得如果真正要进入人人编程,得靠这个,这个是最上层的领域编程语言;还有react.js,一统所有前端,太NB。
对Python开发者最大的建议,不要做死程序员,要做有追求的开发者。死程序是技术翻译角色,保守派,旧技术的坚守和代言人,最终被技术革新碾压;而开发者,是关注产品的人,对技术提出需求的人,是技术的探索和发现者,有技术架构审美能力,是技术界的掀风作浪者。Python已经是最简单的语言了,属于应用层的语言,我觉得在技术层面已经没有太多障碍。Python的牛人,不应该局限在代码,应该提升自己对业务的分析设计能力,用Python来创新的解决身边的实际问题。
CSDN: 在本次SDCC大会上想分享的话题是?
潘俊勇:我报上去的话题,是《易开发的无栈开发之路》,是想讲讲这些年被各种坑折磨之后,说总结出来的企业领域应用的可持续开发的理想模式:无栈开发。也就是通过平台层的封装抽象,让开发者最简开发,屏蔽底层技术更替,到不分前后端的脚本级开发模型,最终达到最高效、最可维护的开发。我们在平台层做了一些工作,直接通过后端的Python脚本,进行Web前端开发,还可进行桌面开发。这个和Node.js恰好相反,它是JS从前端侵蚀后端实现全栈,我们是后端Python侵蚀前端实现无栈。