语言多元化是PayPal编程文化中一个重要的组成部分。在C++和Java长期流行的同时,更多的团队选择了JvaScript和Scala。同时,Braintree的收购也引入了一个久经世故的Ruby社区。
Python作为一门特别的语言,在eBay和PayPal有很长的历史。而且其流行程度依然有增不减。
eBay的开发者支持Python这个应用于基层领域多年的语言。甚至在eBay管理层官方支持Python以前,技术人员就开始使用Python。我在几年前加入PayPal并选择Python来写内部应用,然而,我却发现了PayPal中将近15年以前的Python代码。
目前,Python支撑着超过50个项目,包括:
功能和产品型,例如eBayNow和RedLaser
运营和基础设施型**,从开放的OpenStack到专有设施
中间层服务和应用型**,例如PayPal用来设定价格以及检测用户可用功能的那个(服务/应用)
监测代理和接口*型*,用于涉及到部署和安全的一些用例
批处理任务*型*,例如数据导入,价格调整,及其它项目
以及不计其数的开发者工具
在接下来的文章里我将详细介绍那些使得eBay和PayPal的Python生态系统从年的不超过25个工程师到年超过个工程师所使用的技术和举措。对于本文,我则会专注于10个不得不予以揭露的关于eBay和PayPal的企业环境的谬误。
谬误#1:Python是一门新语言
伴随着所有的初创公司正在使用它以及孩子们最近也在学习它的事实,这个谬误为何仍然存在是可以理解的。实际上Python已经超过23岁了,它最初发布于年,早于HTTP1.0协议5年且早于Java4年.目前比较有著名的很早就使用Python的例子是在年:Google的第一个成功的网络爬虫.
如果你对于长长的Python历史比较好奇,Python的作者GuidovanRossum已经为你准备好整个故事了.
谬误#2:Python没有被编译
不像C++一样需要一个独立的编译器工具链,Python实际上被编译成了字节码,和Java或者许多其他的编译型语言十分相似。更进一步的编译过程,如果有的话,取决于运行时环境,不管是CPython,PyPy,Jython/JVM,IronPython/CLR,或是其它的进程式虚拟机(processvirtualmachine)。参考谬误#6来了解更多。
一条在PayPal以及其它地方的通用原则就是,(应用的)安全性不能依赖于代码的已编译状态。更为重要的是加强运行时环境的安全,因为实质上每种语言都有一个解码器,或者能被拦截并导出受保护的状态。参考下一条谬误来了解更多的Python安全性问题。
谬误#3:Python不安全轻量级Python的亲和力可能使他看起来不怎么可怕,但是这里直觉很大程度上是受到了误导的.安全的一个核心原则就是尽可能让呈现的目标更小.大系统是违背安全原则的,因为他们趋向于使行为过渡集中化,并且也让开发者难于理解.Python通过倡导简洁化来边缘化这些恶心的问题.更有甚者,CPython通过让自己成为一个简单、稳定并且易于审核的虚拟机来使这些问题得到解决.事实上,近期CoveritySoftware的一个分析结果显示CPython得到了他们的最高质量评级.
Python还拥有一系列可扩展的开源、产业标准化的安全库序列.在PayPal,我们把安全和授信看做是重中之重,我们发现hashlib,PyCrypto,以及OpenSSL,通过PyOpenSSL和我们自己的定制构建的结合,涵盖了PayPal多样化的安全和性能需求.
这些诸多的原因,使得Python成为PayPal(和eBay)的应用程序安全团队在某些业务中最快的选择.这里有把Python用在PayPal的安全第一环境中的几个以安全为基础应用程序:
创建安全代理,以促进密钥的轮换以并巩固加密实现
同业界领先的HSM技术集成
为缺乏兼容性的技术栈构建受TLS保护的封装代理
为我们内部的互相认证计划生成键和证书
开发主动的漏洞扫描器
另外,还有无数存在安全隐患的用Python构建,面向操作的系统,诸如防火墙和连接管理.未来,我们一定回去深入的整合PayPalPython的安全事项.
谬误#4:Python是一门脚本语言Python确实可以用来编写脚本,并且因其简单的语法、跨平台并且无所不在于Linux,Macs,和其它Unix机器而成为这个领域的领跑者之一.
事实上,Python可能是常规用途编程语言中最灵活的技术.以下是一些实例:
电信基础设施(Twilio)
支付系统(PayPal,BalancedPayments)
神经科学和心理学(许多,许多,例子)
数值分析和工程(numpy,numba,以及更多其它)
动画(LucasArts,Disney,Dreamworks)
游戏后台(EveOnline,SecondLife,Battlefield,以及其它很多)
Email基础设施(Mailman,Mailgun)
媒体存储和处理(YouTube,Instagram,Dropbox)
操作和系统管理(Rackspace,OpenStack)
自然语言处理(NLTK)
机器学习和计算机版本(scikit-learn,Orange,SimpleCV)
安全性和渗透性测试(很多很多以及eBay/PayPal
大数据(Disco,Hadoopsupport)
如理(CalendarServer,它驱动了AppleiCal)
搜索系统(ITA,Ultraseek,还有Google)
Internet基础设施(DNS)(BIND10)
更别提网站和web服务了,那些都不在少数.事实上,PayPal工程师看起来像是有兴趣致力于基于Python的web特性,比如YouTube和Yelp.如果对Python成功案例的更大清单感兴趣,那就看看官方的清单吧.
谬误#5:Python是弱类型的Python类型系统的特点是拥有强大、灵活的类型操作.维基百科上对此作出的阐述.
而存在一个不争而有趣的事实是,Python是比Java更加强类型的.Java对于原生类型和对象区分了类型系统,它让null存在于一个灰色地带.另一方面,现代的Python拥有一个统一的强类型系统,其中什么都没有(None)的类型是明确指定的.更进一步的,JVM自身也是动态类型的,因为可以把它的根源追溯到由Sun所收购的SmalltalkVM的一个实现.
Python的类型系统很棒,但要提供给企业级使用,目前仍然还有许多更重大的事项需要