对于俄语讲的翻译版本在这里 。这就是Alex Viscreanu在莫斯科Python Conf ++上的演讲的命名方式。 现在距会议召开还有两个星期,但是,当然,我已经听过亚历克斯将要说的话。 在下面找到一些破坏者,并在后台进行讨论:在Kiwi中开发什么样的开源Zoo,如何测试Python代码以及The Zoo与mypy之间有什么区别。
-告诉我们一些关于奇异果,自己以及您在公司中的工作是什么?Kiwi.com是一家位于捷克共和国的在线旅行社。 我们的目标是
使旅行尽可能简单和方便 。 该公司成立于2012年,当时名为
Skypicker ,从那时起,它已成为欧洲五大在线机票销售商之一。 它于2016年更名为Kiwi.com。
我们在Kiwi.com上提供的特殊功能是
虚拟衬里,它使我们能够连接通常不合作的公司的航班,并且我们正在解决因航班延误而引起的可能的接驳问题。
我们在Kiwi.com上管理的一些数字包括每日搜索量超过90,000,000,每天售出25,000个座位以及总共15,000,000,000+个航班组合。
关于我,我是
全栈开发人员 Alex Viscreanu,
他从西班牙移居到捷克共和国,在Kiwi.com工作 。 我主要在后端使用Python和Javascript,在前端使用Backbone.js,Angular或最近的Vue.js等框架。
我加入Kiwi.com是在
Platform团队中工作的,所以我主要是在
开发内部工具并保留开发人员使用的某些服务。 因为这个职位需要大量有关基础架构管理和构建工具的知识,所以我认为最适合我所从事工作的职位是
DevOps,其Dev比Ops更为强大 。
-您在Kiwi中有多少个python开发人员? 公司中主要的Python项目是什么?我们在所有办公室中都有
大约350名开发人员 。 在这350名开发人员中,每天可能有
200名使用
Python 。 关于主要项目,
Kiwi.com使用微服务架构 ,
每个团队负责许多服务 。 每个项目在我们的架构中都有自己的重要性。
我认为我无法告诉您任何可以代表我们所有开发人员正在从事的工作的特定主要项目。 后端代码没有公开披露,因此我对此无话可说。
但是我们有一些
有趣的项目可以在我们的GitHub组织
上公开获得 。 在这里,您可以找到
Phoenix ,这是我们的停运公告松弛工具;
Crane ,我们的脚本,用于直接从GitLab部署到Rancher;
Zoo ,我们的服务目录和许多较小但仍然很酷的项目。
-CI / CD和部署基础架构如何?我们正在使用
GitLab作为我们的源代码存储库,因此,
GitLab CI是集成了最佳解决方案的解决方案。 我们也认为这是一个很好的解决方案。 它非常灵活,它使我们能够拥有高性能的流水线,并与Crane一起,只需单击一下即可将部署直接定向到不同的环境(如果您足够勇敢,则可以自动部署)。
整个配置项由一组自动缩放的EC2实例执行,这使我们能够在工作时间内扩展到所需的规模,同时通过在工作时间之外没有太多未使用的实例来降低成本。
为了协调我们的基础架构,我们目前使用的是Rancher,事实证明它可以与我们的负载和服务数量一起很好地工作。
-好像Python是您选择的语言。 您还使用什么其他语言以及用于什么目的?第二种最常用的语言必须是JavaScript,主要用于我们所有的前端和GraphQL API。 我们还为Android应用提供了Kotlin和Java。 iOS的Swift和Objective-C; 一些GoLang提供了一系列服务,而C / C ++提供了我们的航班引擎。
-您提到了Zoo项目,它是Kiwi的新开源项目。 为什么猕猴桃会开源? 有什么收获?与许多其他公司一样,我们开发的几乎所有产品都依赖开源软件。 也许听起来像是陈词滥调,但是
当您付出如此之多时,回馈他人并为有助于每个人前进的集体知识做出贡献
也是很好的 。
我们还认为,我们开源的项目可以使其他人受益,同时,我们也可以从其他我们未考虑/不知道的观点或更好的解决方案中受益。
-有关动物园的更多信息。 您要检查多少个存储库?我们内部的GitLab上有大约1300个存储库,公共GitHub上有大约100个存储库。 总计接近
1500 。
我们会扫描我们拥有的每个存储库,而与服务是否在The Zoo中注册无关。 该逻辑背后的主要原因是,我们从扫描中收集的分析信息对我们有益,而且,当服务在The Zoo中注册时,数据将已经存在。
-真是令人印象深刻的数字! 您通常会发现多少错误? 有什么好的收获让您记住吗?当前,在我们的数据库中,我们
发现了大约
26000个问题 ,这意味着每个存储库大约有20个问题。 请记住,其中大多数并不是严格意义上的问题,而只是建议。
所有适当的问题都是不错的选择。
为动物园写支票的过程通常是从确定某个存储库中的某个问题开始的。 然后,如果我们认为在更多地方放置它可能会很危险,那么我们将继续为The Zoo编写支票,以确保我们可以轻松确定受影响的项目,以便我们尽快对其进行修复。
真的不要期望严重的安全漏洞或棘手的上下文问题。 我们为此目的利用了其他工具,即使将它们集成到了平台中,The Zoo也不是检测此类问题的第一线。 通常更多的是要确保我们所有的存储库都遵循一些通用准则。
-Zoo本身默认情况下没有任何检查,开发人员可以自行编写一些检查。 您创建了Zoo,并为其编写了各种检查。 这些检查是什么,您能列举几个吗?是的,Zoo是一个平台,任何人都可以编写自己的支票。 我们拥有自己的设备,这对于我们的设置和配置来说非常特殊,但是我们也希望将其开源。
如前所述,我们的检查基于我们在服务中发现的问题。 这个问题的范围很广,从README建议以确保更轻松的信息收集到更高级的配置审核(如nginx配置)。
-好像每个大公司都应该检查的事情! 您会在谈话中进一步介绍它们吗?除了检查的内容之外,我认为以简单的方式使它们在所有存储库上运行的能力更为重要。 当然,我会在Kiwi.com上提供有关我们正在检查的内容的信息,希望其他人将从我们的知识中受益。
我完全鼓励人们使用它,编写自己的支票并为一般知识库做出贡献。 我确信有人会找到适合他们需求的东西。
-谢谢! 最后,如果您可以在5年前返回,那么您会给年轻的自己一个与Python相关的建议吗?这不是一件容易的事...作为大约1.5年前刚开始编写Python 3的人,我强烈建议您尽快开始使用它。 语言的自然演变决定了语言的基本原理。 现在,我不会再使用Python 2编写代码,这不仅是因为支持即将结束,而且因为我对它的功能更加满意。
当然,我还会随身携带一堆好书,这些书最终会随着时间的推移而发现,以及一些我已经学习并且还在学习的良好实践。
请于4月5日参加Moscow Python Conf ++ ,以了解使用此有趣的开源项目的详细信息,并可能以某种方式借鉴了Kiwi的经验。