本文的原始英文版在这里 。这是莫斯科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的经验。