Para russo falando postado versão traduzida aqui .Foi assim que a palestra de Alex Viscreanu sobre Moscow Python Conf ++ nomeou. Agora, faltam duas semanas para a conferência, mas é claro, eu já ouvi o que Alex vai falar. Encontre abaixo alguns spoilers e fale sobre a preparação dos bastidores: que tipo de zoológico de código aberto foi desenvolvido em Kiwi, como ele testa o código Python e qual a diferença entre o zoológico e, por exemplo, o mypy.
- Conte-nos um pouco sobre Kiwi, você mesmo e qual é o seu trabalho dentro de uma empresa?Kiwi.com é uma agência de viagens on-line com sede na República Tcheca. Nosso objetivo é
tornar a viagem o mais simples e acessível possível . A empresa foi fundada em 2012 como
Skypicker e, desde então, tornou-se um dos cinco maiores vendedores on-line de passagens aéreas da Europa. Foi renomeado para Kiwi.com em 2016.
O recurso especial que oferecemos, no Kiwi.com, é o
entrelaçamento virtual , que nos permite conectar voos de empresas que normalmente não cooperam juntas e estamos cobrindo os possíveis problemas de conexão causados por atrasos nos voos.
Alguns dos números que gerenciamos no Kiwi.com incluem mais de 90.000.000 de pesquisas diárias, 25.000 assentos vendidos diariamente e um total de mais de 15.000.000.000 de combinações de voos disponíveis.
Em relação a mim, sou Alex Viscreanu,
desenvolvedor full-stack que se mudou da Espanha para a República Tcheca para trabalhar no Kiwi.com . Eu trabalhei principalmente com Python no back-end e Javascript, juntamente com estruturas como Backbone.js, Angular ou recentemente Vue.js, no front-end.
Entrei para o Kiwi.com para trabalhar na
equipe da
plataforma , então estou
desenvolvendo principalmente
ferramentas internas e mantendo alguns dos serviços usados por nossos desenvolvedores. Como essa posição exige muito conhecimento sobre gerenciamento de infraestrutura e ferramentas de construção, acho que o título da posição que melhor se adequa ao que estou fazendo é, na verdade
, o DevOps, com uma parte Dev mais forte do que Ops .
- Quantos desenvolvedores de python você tem no Kiwi? Quais são seus principais projetos Python dentro de uma empresa?Temos
cerca de 350 desenvolvedores em todos os nossos escritórios. Desses 350 desenvolvedores,
200 provavelmente trabalham com
Python diariamente. Em relação aos seus principais projetos, o
Kiwi.com está usando uma arquitetura de microsserviço , e
cada equipe é responsável por vários serviços . Todo projeto tem sua própria importância dentro de nossa arquitetura.
Acho que não posso contar a você qualquer projeto principal específico que represente o que todos os nossos desenvolvedores estão trabalhando. O código de back-end não é divulgado publicamente, portanto não há muito o que dizer sobre isso.
Mas temos alguns
projetos interessantes disponíveis publicamente em nossa organização do
GitHub . Lá você encontra o
Phoenix , nossa ferramenta de folga de anúncios de interrupções;
Crane , nosso script para implantar no Rancher diretamente do GitLab;
O Zoo , nosso catálogo de serviços e um monte de projetos menores, mas ainda legais.
- E o CI / CD e implantar infraestrutura?Estamos usando o
GitLab como nosso repositório de código-fonte e, portanto, o
GitLab CI é a solução que integra melhor. Também achamos que é uma solução muito boa. É bastante flexível e nos permite ter pipelines de alto desempenho e, juntamente com a Crane, implantações diretas em diferentes ambientes com um simples clique (ou automaticamente, se você for corajoso o suficiente).
Todo o IC é realizado por uma frota de instâncias de EC2 com escalonamento automático, o que nos permite escalar o quanto for necessário durante o horário de trabalho, mantendo o custo baixo por não haver muitas instâncias não utilizadas fora do horário de trabalho.
Para orquestrar nossa infraestrutura, atualmente estamos usando o Rancher, que provou funcionar bem com nossa carga e número de serviços.
- Parece que Python é a sua língua preferida. Quais outros idiomas você está usando e para que fins?A segunda linguagem mais usada deve ser o JavaScript, usado principalmente para todas as nossas APIs de front-end e GraphQL. Também temos Kotlin e Java, para os aplicativos Android; Swift e Objective-C para os iOS; alguns GoLang para vários serviços e C / C ++ para o nosso mecanismo de vôos.
- Você mencionou o projeto Zoo, que é um novo código-fonte aberto do Kiwi. Por que o Kiwi abre código-fonte? Qual é o problema?Como muitas outras empresas, contamos com o software de código aberto em quase tudo o que desenvolvemos. Talvez pareça um clichê, mas
quando você gasta tanto, também é bom retribuir e contribuir com esse conhecimento coletivo que ajuda todos a seguir em frente.
Também achamos que os projetos de código aberto podem beneficiar outras pessoas e, ao mesmo tempo, também podemos nos beneficiar de outros pontos de vista ou de soluções melhores que não consideramos / conhecíamos.
- Mais sobre o Zoo. Quantos repositórios você verifica com ele?Temos cerca de 1300 repositórios no GitLab interno e cerca de 100 no GitHub público. No total, é perto de
1500 .
Analisamos todos os repositórios que temos, independentemente de o serviço estar registrado no The Zoo ou não. A principal razão por trás dessa lógica é que as análises que coletamos da verificação são benéficas para nós e, além disso, quando o serviço é registrado no zoológico, os dados já estarão lá.
- Esse é um número impressionante! E quantos erros você normalmente encontra? Alguma boa captura para você se lembrar?Atualmente, em nosso banco de dados, foram encontrados cerca de
26000 problemas , o que significa cerca de 20 problemas por repositório. Lembre-se de que a maioria deles não é estritamente um problema, mas apenas recomendações.
Todas as questões adequadas são boas capturas.
O processo para fazer uma verificação no zoológico geralmente começa identificando algum problema em algum repositório. Então, se considerarmos que é algo que pode ser perigoso ter em mais lugares, procederemos à verificação do The Zoo, apenas para garantir que possamos identificar facilmente quais projetos são afetados, para que possamos corrigi-lo o mais rápido possível.
Não espere realmente violações de segurança críticas ou problemas de contexto complicados. Aproveitamos outras ferramentas para esse fim e, mesmo se as integramos à nossa plataforma, o Zoo não deve ser a primeira linha de detecção para esses problemas. Geralmente, trata-se de garantir que todos os nossos repositórios sigam algumas diretrizes comuns.
- O Zoológico em si não possui nenhum cheque por padrão; cabe ao desenvolvedor fazer alguns cheques. Você criou o Zoo e escreve todos os tipos de verificação. Quais são essas verificações, você pode citar algumas?Sim, o zoológico é uma plataforma onde qualquer pessoa pode preencher seus próprios cheques. Nós temos os nossos, que são bastante específicos para nossa instalação e configuração, mas também queremos abri-los em código-fonte.
Como expliquei anteriormente, nossas verificações se baseiam nos problemas encontrados em nossos serviços. Esses problemas variam de apenas recomendações do LEIA-ME para garantir uma coleta de informações mais fácil a auditorias de configuração mais avançadas, como configurações do nginx.
- Parece que todas as grandes empresas deveriam checar! Você vai contar mais sobre eles durante sua palestra ?Mais do que o conteúdo das verificações, acho que é mais importante a capacidade de executá-las em todos os repositórios de uma maneira simples. É claro que darei informações sobre o que nós, no Kiwi.com, estamos verificando, e espero que outras pessoas se beneficiem do nosso conhecimento.
Incentivo totalmente as pessoas a brincar com ele, a escrever seus próprios cheques e a contribuir com a base de conhecimento geral. Tenho certeza de que alguém encontrará algo que se adapte às suas necessidades.
Obrigado! Por fim, se você puder voltar há cinco anos, que conselho você daria a um eu mais jovem?Não é fácil ... Como alguém que começou a escrever Python 3 há cerca de 1,5 anos, recomendo começar o mais rápido possível. É uma evolução natural da linguagem que estabelece os fundamentos da linguagem. No momento, eu não voltaria ao código com o Python 2, e não apenas pelo fim do suporte, mas porque me sinto muito mais confortável com seus recursos.
É claro que eu também carregaria uma bagagem de boas bibliotecas que acabei descobrindo com o tempo, juntamente com algumas boas práticas que aprendi e ainda estou aprendendo.
Visite o Moscow Python Conf ++ em 5 de abril para aprender os detalhes de como trabalhar com este interessante projeto de código-fonte aberto e, talvez, de alguma forma, emprestar a experiência do Kiwi.