Como o Kiwi.com testa 1000 projetos Python

A versão original em inglês deste artigo está aqui .

Este é o título de uma palestra de Alex Viscreanu no Moscow Python Conf ++. Mais duas semanas antes da apresentação, mas eu, é claro, já perguntei a Alex sobre tudo e, abaixo do gato, compartilharei spoilers e nos bastidores para preparar o relatório: que tipo de zoológico de código aberto é o que faz com o nosso código Python e como difere dos camaradas mypy.

- Conte-me um pouco sobre Kiwi, o que você faz na empresa?

Kiwi.com é uma agência de viagens on-line com molho secreto. A empresa foi fundada na República Tcheca em 2012 com o nome Skypicker e, em 2016, o serviço mudou seu nome e mudou-se para Kiwi.com. O Kiwi.com agora está entre os cinco maiores agregadores de passagens aéreas da Europa.

Um recurso interessante do Kiwi.com para os usuários é que encontramos opções de conexão para voos de companhias aéreas que normalmente não funcionam juntas e cuidamos de todos os tipos de problemas de conexão.

Para classificar nossa escala, eis os números sobre o Kiwi.com: mais de 90.000.000 de pesquisas diárias, 25.000 assentos de vendas diárias e mais de 15.000.000.000 de combinações de voos disponíveis.

Quanto a mim, sou desenvolvedor full-stack, mudei da Espanha para a República Tcheca para trabalhar no Kiwi.com. Trabalhei com Python no backend, JavaScript e no zoológico de diferentes tipos no frontend: Backbone.js, Angular, Vue.js.

No Kiwi.com, entrei para a equipe de infraestrutura, desenvolvendo e mantendo principalmente ferramentas internas para desenvolvedores. Este trabalho requer conhecimento aprofundado sobre gerenciamento de infraestrutura e ferramentas de implantação. Acho que podemos dizer que estou realmente desenvolvendo DevOps, com um leve viés na parte Dev .

- Quantos desenvolvedores de Python existem no Kiwi? Para quais projetos você está usando o Python?

Temos mais de 350 desenvolvedores , 200 deles usam Python todos os dias. O Kiwi.com possui uma arquitetura de microsserviço e cada equipe é responsável por vários serviços. Não acho que se possa dizer que um deles seja o mais importante ou que todos os desenvolvedores estejam trabalhando em uma coisa. Além disso, o back-end fechou o código e não posso falar muito sobre isso.

Mas temos alguns projetos interessantes de código aberto disponíveis no GitHub:

  • Phoenix - uma ferramenta para notificações no Slack sobre incidentes;
  • Crane - um script para implantação no Rancher diretamente do GitLab;
  • O zoológico é um conjunto de serviços menores que, no entanto, podem ser muito úteis.

- E o CI / CD e a infraestrutura de implantação?

Usamos o GitLab como um repositório de código-fonte e, é claro, o GitLab CI se integra melhor a ele. Essa é uma solução muito boa, é flexível e permite que você construa pipelines produtivos. E usando um monte de CI do GitLab e nossa ferramenta Crane, podemos implantar projetos em diferentes ambientes com o clique de um botão (ou de forma totalmente automática, se você tiver coragem).

Fornecemos a todo o CI uma frota de instâncias de escala automática do EC2. Devido a isso, você pode adicionar energia facilmente, conforme necessário, e economizar sem manter servidores não utilizados fora do horário comercial.

Estamos orquestrando a infraestrutura com a ajuda do Rancher , que se provou perfeitamente em nossa carga de trabalho e em nossas condições.

- Parece que você prefere Python. Você usa outros idiomas e para quê?

A segunda linguagem mais usada é o JavaScript , principalmente para o frontend e a API GraphQL. Além disso, existem aplicativos Kotlin e Java para Android; Swift e Objective-C para iOS; O GoLang é usado em alguns lugares para vários serviços e o C / C ++ para o mecanismo de busca de voos.

- Você mencionou o projeto de código aberto The Zoo. Por que os projetos de código aberto Kiwi? Qual é o seu benefício?

Como muitas outras empresas, usamos código aberto em quase tudo o que desenvolvemos. Pode parecer um clichê, mas quando você recebe tanto, seria bom dar algo em troca. É uma contribuição ao conhecimento coletivo que ajuda a todos nós a avançar.

Além do fato de nos beneficiarmos com o que publicamos em código aberto, também é útil para nós. Outras pessoas podem olhar o produto de um ângulo completamente diferente e oferecer algo que não pensamos ou suspeitamos.

- Conte-nos um pouco mais sobre o zoológico. Quantos repositórios você verifica com ele?

Temos aproximadamente 1.300 repositórios no GitLab interno e cerca de 100 no GitHub público. Total próximo a 1500 .

Analisamos cada um de nossos repositórios, mesmo que o serviço não esteja registrado no The Zoo. A idéia é que, em primeiro lugar, quanto mais análises, mais precisas forem as conclusões e, em segundo lugar, quando no futuro o serviço se conectar ao The Zoo, já teremos dados sobre comportamentos passados.

- Um número impressionante! E quantos erros você costuma encontrar? Você se lembra de alguma captura especial?

Agora, em nosso banco de dados, existem aproximadamente 26.000 problemas encontrados , ou seja, cerca de 20 problemas por projeto. É verdade que a maioria deles não é "problemas-problemas", mas simplesmente recomendações.

É ótimo quando você pode detectar automaticamente erros significativos.

Geralmente, uma nova verificação aparece no zoológico após a descoberta de algum problema em um dos repositórios. Se parece que isso também pode aparecer em outros lugares, iniciamos uma nova verificação no zoológico. Apenas para facilitar a determinação de quais projetos são afetados e para corrigir o erro em qualquer lugar o mais rápido possível.

Você não deve esperar que o Zoo encontre violações críticas de segurança ou problemas complexos de código. Temos outras ferramentas para eles e, mesmo se as implementarmos na plataforma, vale a pena detectar bugs críticos antes mesmo do The Zoo. Em vez disso, é necessário para que uma única diretriz seja respeitada em todos os repositórios.

- Ou seja, o zoológico, como tal, não possui nenhuma verificação padrão? Você precisa disso para que seja conveniente para o desenvolvedor fazer as verificações que ele deseja? Você criou o Zoo e está testando muito de tudo com ele. Você pode dar alguns exemplos?

É verdade que o zoológico é uma plataforma na qual todos podem escrever seus próprios testes. Nossas verificações são adequadas para nossa configuração bastante específica, mas queremos abri-las também.

Como eu disse, as verificações são baseadas nos problemas encontrados em nossos serviços. Eles variam de recomendações do README a verificações de configuração mais complexas, como o nginx.

- Parece um "must have" para qualquer grande empresa! Você vai falar sobre isso com mais detalhes no seu relatório sobre o Moscow Python Conf ++?

Eu acho que será mais interessante como tornar fácil e rápido a execução de testes em todos os repositórios. Mas, é claro, vou falar sobre o que verificamos no Kiwi.com. Espero que isso seja útil para os convidados da conferência.

Peço a todos que experimentem o zoológico, joguem com ele, escrevam seus próprios cheques e, assim, expandam a base de conhecimento geral. Estou certo de que você encontrará algo adequado para você.

Obrigado! Por fim, se você pudesse voltar 5 anos, que conselho sobre Python você daria a si mesmo?

Não é fácil ... comecei a escrever em Python 3 há apenas um ano e meio, mas, no passado, eu recomendaria começar o mais cedo possível. Python 3 é uma evolução natural da linguagem ; define o básico. Agora, eu nunca voltaria ao Python 2. O ponto não é apenas que o fim de seu suporte está próximo, mas na maioria das vezes eu já estou acostumado com os recursos da nova versão.

Na viagem no tempo, eu pegava a bagagem de algumas boas bibliotecas que conheci durante esse período e algumas boas práticas que ainda estou aprendendo.

Venha no dia 5 de abril ao Moscow Python Conf ++ para descobrir os detalhes de como trabalhar com este interessante projeto de código aberto e, talvez, emprestar a experiência do Kiwi em algo.

Source: https://habr.com/ru/post/pt444214/


All Articles