WordStream 选择 Python 作为其平台
简介
WordStream 是一家为持续优化和扩展 PPC 和 SEO 工作提供关键词管理解决方案的供应商,涉及到大量的关键词。 WordStream 提供可扩展的、私有的在线关键词工作台,用于进行关键词发现、关键词建议、关键词研究、关键词分组、关键词组织、搜索营销工作流程,以及将研究转化为行动。
WordStream 自 2007 年开始开发,由一个八人工程团队开发和支持。服务器系统大约有 25,000 行 Python 代码。该软件部署在我们的服务器上,并支持全球数千名用户。
架构
从软件角度来看,WordStream 是一个高可用、大规模可扩展、分布式、多层客户端/服务器数据库应用程序。该产品由三个独立的模块组成
- 服务器后端是用 Python 编写的,提供数据存储和处理功能。
- 图形用户界面前端是用 Adobe Flex 编写的,为服务器暴露的功能提供辅助。它需要与服务器的实时连接才能工作。
- JavaScript “跟踪代码” 安装在客户端网页上,并为服务器提供主动的 Web 分析。
目前我们在 WordStream 中使用的一些其他技术包括 Adobe Flex、Linux、Apache 和 C/C++。至于开发过程工具,我们正在使用 PyDev Extensions、Trac、Buildbot、Review Board 和 Git。
使用 Python 的决定
从项目开始就使用了 Python。招募有 Python 经验的新开发人员有点困难,但是到目前为止,我们的经验是 Python 是一种非常容易上手学习的语言。一旦您学会了 Python,就很难回到使用 C/C++ 之类的其他语言了。
我们决定使用 Python 作为 WordStream 平台的原因有以下几个。
首先,Python 代码非常易读且通用。任何语言背景的开发人员都可以阅读和理解代码,而无需过多地查阅文档。
其次,Python 是一个非常成熟的平台,拥有丰富的第三方库和工具。Python 的调试工具套件很容易找到并且运行良好。
第三,Python 可以在平台边界之间无缝工作,这解放了我们的开发人员,使他们可以使用任何平台进行日常开发。它也很容易在生产环境中部署,并获得所有主要 Linux 发行版的广泛支持。
此外,由于动态类型系统、对常用数据结构(例如,哈希映射、集合和列表)的本机支持、“开箱即用”的标准库以及合理的错误处理,Python 适合快速原型设计和开发。
我们选择 Python 的另一个原因是,它是一种出色的语言,可以轻松地解析和操作集合(迭代、连接、相交等)。
最后但并非最不重要的一点是,如果性能成为问题,则可以使用 Python/C API 轻松编写扩展。
请理解,我们确实评估了其他解决方案,其中包括 Ruby 和 Java。但我们当时对 Ruby 的印象是它太不成熟了,而且 Java 通常用起来令人不快。
项目成果
我们必须为客户提供 24/7/365 的可用性,因为 WordStream 是一种在线软件即服务解决方案,供世界各地的人们使用。考虑到这个先决条件,Python 的表现非常出色。
事实证明,Python 是一种在解析和数据操作方面都非常强大且灵活的语言。网上有很多好评和赞誉 Python 的文章,该产品绝对物有所值。
作为一个早期阶段的初创公司,说服有才华的工程师离开他们目前的工作岗位并加入我们的开发团队始终是一个挑战。我们最有成效的工程人员之一具有 C/C++ 编程背景,之前没有 Python 的经验,但能够快速学习并使用该语言进行高效工作。事实上,他表示 Python 语言的高效率是他加入我们的原因之一!
Python 在原始处理性能和多线程环境中的操作方面确实存在一些小的缺点。但是,可以使用 C 扩展或通过构建多进程执行模型轻松解决这些问题。
结论
总之,我们相信将我们的产品技术基于 Python 的选择,由于其提高了生产力、可靠性和可扩展性,为 WordStream 提供了相对于竞争对手的战略技术优势。
关于作者
Gerard Escalante 是 WordStream 的工程副总裁。他在加拿大滑铁卢大学拥有计算机工程应用科学学士学位。
Philip Stefou 是 WordStream 的高级软件工程师。