Kiwi.com如何测试1000个Python项目

本文的原始英文版在这里

这是莫斯科Python Conf ++中Alex Viscreanu演讲的标题。 演出开始还有两个星期,但是我当然已经问过Alex一切了,在这件事之下我将分享剧透和后台来准备这份报告:什么样的开源Zoo会对我们的Python代码做什么以及与mypy同志有何不同。

-告诉我一些有关奇异果的信息,您在公司中做什么?

Kiwi.com是一家拥有秘密调味料的在线旅行社。 该公司于2012年在捷克共和国以Skypicker的名称成立,并于2016年更名,并移至Kiwi.com。 Kiwi.com现在是欧洲最大的五家机票整合商之一。

Kiwi.com对用户的一个很酷的功能是,我们为通常无法一起使用的航空公司找到了连接选项,并在连接时解决了各种问题。

为了评估我们的规模,这是Kiwi.com上的数字:每日搜索量超过90,000,000,每天有25,000个销售席位,以及超过1,500万个可用航班组合。

对于我来说,我是一名全职开发人员,从西班牙移居到捷克共和国,在Kiwi.com工作。 我在后端使用Python,在前端使用JavaScript和各种动物园,例如Backbone.js,Angular,Vue.js。

在Kiwi.com,我加入了基础架构团队,因此我主要为开发人员开发和维护内部工具 。 这项工作需要有关基础架构管理和部署工具的深入知识,我想我们可以说我实际上是在进行DevOps,而Dev部分则略有偏差

-Kiwi中有多少Python开发人员? 您正在使用Python执行哪些项目?

我们有350多个开发人员 ,其中每天有200个使用Python。 Kiwi.com具有微服务架构 ,每个团队负责多项服务。 我认为不能说其中之一是最重要的,或者所有开发人员都在做一件事情。 而且,后端有封闭的代码,我不能过多地谈论它。

但是我们在GitHub上有一些有趣的开源项目:

  • Phoenix -Slack中用于通知事件的工具;
  • Crane-直接从GitLab部署到Rancher的脚本;
  • Zoo是一组较小的服务,但是它们仍然非常有用。

-CI / CD和部署基础架构如何?

我们将GitLab用作源代码存储库,当然, GitLab CI与其集成得最好。 这是一个很好的解决方案,它很灵活,可以让您建立生产性管道。 借助一堆GitLab CI和我们的Crane工具,我们只需单击一个按钮即可将项目部署在不同的环境中(如果有胆量,则可以全自动进行)。

我们为所有CI提供了一系列EC2自动缩放实例。 因此,您可以轻松地根据需要添加电源,并且节省时间,而无需在下班时间保持未使用的服务器。

我们正在Rancher的帮助下对基础架构进行编排, Rancher在我们的工作量和条件下都证明了自己的完美。

-似乎您更喜欢Python。 您是否使用其他任何语言?

第二种最常用的语言是JavaScript ,主要用于前端和GraphQL API。 此外,还有适用于Android应用程序的Kotlin和Java。 iOS的Swift和Objective-C; GoLang在某些地方用于大量服务,而C / C ++用于航班搜索引擎。

-您提到了开源项目The Zoo。 为什么猕猴桃是开源项目? 您有什么好处?

像许多其他公司一样,我们在开发的几乎所有产品中都使用开源。 这听起来像是陈词滥调,但是当您得到很多时,最好给一些回报。 这是对集体知识的贡献 ,可以帮助我们所有人前进。

除了我们将从开源中发布的内容中受益之外,它对我们也很有用。 其他人可以从完全不同的角度看待产品,并提供我们没有想到或怀疑的东西。

-告诉我们更多有关动物园的信息。 您要检查多少个存储库?

我们在内部GitLab中有大约1300个存储库,在公共GitHub中有大约100个存储库。 总数接近1500

即使服务未在The Zoo中注册,我们也会扫描每个存储库。 这个想法是,首先,分析越多,结论越准确;其次,当将来该服务连接到The Zoo时,我们将已经拥有有关过去行为的数据。

-令人印象深刻的数字! 您通常会发现多少个错误? 你还记得一些特别的收获吗?

现在,在我们的数据库中, 发现了大约26,000个问题 ,即每个项目大约20个问题。 没错,大多数不是“问题—问题”,而只是建议。

当您可以自动捕获重大错误时,这很棒。

通常,在其中一个存储库中发现一些问题之后,新的检查就会出现在The Zoo中。 如果在我们看来也可以在其他地方出现,请在“动物园”中进行一次新检查。 只是为了轻松确定受影响的项目,并确保我们可以尽快修复所有错误。

您不应期望The Zoo找到严重的安全漏洞或复杂的代码问题。 我们为它们提供了其他工具,即使我们在平台中实现它们,也值得在The Zoo之前检测到关键错误。 而是需要这样做,以便在所有存储库中遵循一条准则。

-也就是说,Zoo本身没有任何默认检查吗? 您是否需要它,以便开发人员可以方便地编写他想要的任何支票? 您已经创建了Zoo,并且正在使用它进行很多测试。 你能举一些例子吗?

没错, The Zoo是一个平台 ,每个人都可以在其中编写自己的测试。 我们的检查适合于我们相当具体的配置,但是我们也想打开它们。

正如我所说,检查是基于我们服务中发现的问题。 它们的范围从README建议到更复杂的配置检查,例如nginx。

-听起来像任何大公司的“必备”! 您会在莫斯科Python Conf ++ 报告中更详细地说明这一点吗?

我认为如何使在所有存储库中轻松快速地运行测试将变得更加有趣。 但是,当然,我会告诉您我们在Kiwi.com上检查的内容。 我希望这对会议嘉宾有用。

我敦促每个人尝试“动物园”,玩弄它,编写自己的支票,从而扩大一般的知识库。 我相信您可以在其中找到适合您的东西。

-谢谢! 最后,如果您可以回溯5年,您会给自己关于Python的哪些建议?

这并不容易。我只是一年半以前才开始用Python 3编写代码,但是对于我自己来说,我强烈建议尽早开始编写。 Python 3是该语言的自然演变 ;它定义了基础知识。 现在,我将永远不会再回到Python 2上来。问题的意义不仅在于对它的支持即将结束,而且在很大程度上,我已经习惯了新版本的功能。

时光倒流,我会would着这段时间遇到的一些优秀图书馆,以及仍在学习中的一些良好实践。

4月5日到Moscow Python Conf ++来了解使用这个有趣的开源项目的细节,也许还可以借鉴Kiwi的经验。

Source: https://habr.com/ru/post/zh-CN444214/


All Articles