Cómo prueba Kiwi 1000 proyectos de Python

Para hablar ruso publicado versión traducida aquí .

Así es como se nombra la charla de Alex Viscreanu sobre Moscow Python Conf ++. Ahora faltan dos semanas para la conferencia, pero por supuesto, ya escuché de qué hablará Alex. A continuación encontrará algunos spoilers y charlas preparándose detrás del escenario: qué tipo de zoológico de código abierto se desarrolló en Kiwi, cómo prueba el código de Python y cuál es la diferencia entre el zoológico y, por ejemplo, mypy.

- Cu√©ntanos un poco sobre Kiwi, t√ļ mismo y cu√°l es tu trabajo dentro de una empresa.

Kiwi.com es una agencia de viajes en l√≠nea con sede en la Rep√ļblica Checa. Nuestro objetivo es hacer que viajar sea lo m√°s simple y accesible posible . La compa√Ī√≠a fue fundada en 2012 como Skypicker , y desde entonces se ha convertido en uno de los cinco mayores vendedores en l√≠nea de boletos a√©reos en Europa. Fue renombrado a Kiwi.com en 2016.

La caracter√≠stica especial que ofrecemos en Kiwi.com es la interl√≠nea virtual , que nos permite conectar vuelos de compa√Ī√≠as que generalmente no cooperan juntas, y estamos cubriendo los posibles problemas de conexi√≥n causados ‚Äč‚Äčpor vuelos retrasados.

Algunos de los n√ļmeros que administramos en Kiwi.com incluyen 90,000,000+ b√ļsquedas diarias, 25,000 asientos vendidos diariamente, y un total de 15,000,000,000+ combinaciones de vuelos disponibles.

En cuanto a m√≠, soy Alex Viscreanu, un desarrollador full-stack que se mud√≥ de Espa√Īa a la Rep√ļblica Checa para trabajar en Kiwi.com . He trabajado principalmente con Python en el backend y Javascript, junto con frameworks como Backbone.js, Angular o recientemente Vue.js, en la interfaz.

Me uní a Kiwi.com para trabajar dentro del equipo de la Plataforma , por lo que principalmente estoy desarrollando herramientas internas y manteniendo algunos de los servicios utilizados por nuestros desarrolladores. Como esta posición requiere mucho conocimiento sobre la administración de infraestructura y las herramientas de construcción, creo que el título de la posición que mejor se ajuste a lo que estoy haciendo es en realidad DevOps, con una parte más fuerte de Dev que de Ops .

- ¬ŅCu√°ntos desarrolladores de python tienes en Kiwi? ¬ŅCu√°les son sus principales proyectos de Python dentro de una empresa?

Tenemos alrededor de 350 desarrolladores en todas nuestras oficinas. De esos 350 desarrolladores, 200 probablemente trabajan con Python a diario. Con respecto a sus proyectos principales, Kiwi.com est√° utilizando una arquitectura de microservicios , y cada equipo es responsable de una serie de servicios . Cada proyecto tiene su propia importancia dentro de nuestra arquitectura.

No creo que pueda contarte ning√ļn proyecto principal espec√≠fico que sea representativo de lo que todos nuestros desarrolladores est√°n trabajando. El c√≥digo de fondo no se divulga p√ļblicamente, por lo que no hay mucho que pueda decir sobre esto.

Pero tenemos algunos proyectos interesantes disponibles p√ļblicamente en nuestra organizaci√≥n GitHub . All√≠ puede encontrar Phoenix , nuestra herramienta de holgura de anuncios de cortes; Crane , nuestro script para implementar en Rancher directamente desde GitLab; El zool√≥gico , nuestro cat√°logo de servicios y un mont√≥n de proyectos m√°s peque√Īos, pero a√ļn geniales.

- ¬ŅQu√© pasa con CI / CD y la infraestructura de despliegue?

Estamos usando GitLab como nuestro repositorio de código fuente y, por lo tanto, GitLab CI es la solución que integra mejor. También creemos que es una solución bastante buena. Es bastante flexible y nos permite tener tuberías de rendimiento y, junto con Crane, implementaciones directas en diferentes entornos con un simple clic (o automáticamente si eres lo suficientemente valiente).

El CI completo se realiza mediante una flota de instancias de EC2 de autoescalado, lo que nos permite escalar todo lo que necesitamos durante nuestras horas de trabajo, manteniendo el costo bajo al no tener demasiadas instancias no utilizadas fuera de las horas de trabajo.

Para orquestar nuestra infraestructura, actualmente estamos utilizando Rancher, que ha demostrado funcionar bien con nuestra carga y n√ļmero de servicios.

- Parece que Python es tu idioma de elecci√≥n. ¬ŅQu√© otros idiomas usa y para qu√© fines?

El segundo lenguaje más utilizado debe ser JavaScript, utilizado principalmente para todas nuestras interfaces frontend y API GraphQL. También tenemos Kotlin y Java, para las aplicaciones de Android; Swift y Objective-C para iOS; algunos GoLang para un montón de servicios y C / C ++ para nuestro motor de vuelos.

- Usted mencion√≥ el proyecto Zoo, que es un nuevo c√≥digo abierto de Kiwi. ¬ŅPor qu√© Kiwi abre las cosas de c√≥digo fuente? ¬ŅCu√°l es el truco?

Como muchas otras compa√Ī√≠as, confiamos en el software de c√≥digo abierto en casi todo lo que desarrollamos. Tal vez suene como un clich√©, pero cuando tomas tanto, tambi√©n es bueno devolver y contribuir a ese conocimiento colectivo que ayuda a todos a seguir adelante.

También creemos que los proyectos de fuentes abiertas pueden beneficiar a otras personas y, al mismo tiempo, también podemos beneficiarnos de otros puntos de vista o mejores soluciones que no consideramos / conocíamos.

- M√°s sobre el zool√≥gico. ¬ŅCu√°ntos repositorios revisas con √©l?

Tenemos alrededor de 1300 repositorios en nuestro GitLab interno y alrededor de 100 en nuestro GitHub p√ļblico. En total est√° cerca de 1500 .

Escaneamos todos los repositorios que tenemos, independientemente de si el servicio está registrado en The Zoo o no. La razón principal detrás de esa lógica es que los análisis que recopilamos del escaneo son beneficiosos para nosotros y, además, cuando el servicio se registra en The Zoo, los datos ya estarán allí.

- Ese es un n√ļmero impresionante! ¬ŅY cu√°ntos errores encuentras normalmente? ¬ŅAlguna buena captura para que recuerdes?

Actualmente en nuestra base de datos tenemos alrededor de 26000 problemas encontrados , lo que significa alrededor de 20 problemas por repositorio. Tenga en cuenta que la mayoría de ellos no son estrictamente problemas, sino solo recomendaciones.

Todos los problemas adecuados son buenas capturas.

El proceso para escribir un cheque para el zool√≥gico generalmente comienza identificando alg√ļn problema en alg√ļn repositorio. Luego, si consideramos que es algo que podr√≠a ser peligroso tener en m√°s lugares, procedemos a escribir el cheque para The Zoo, solo para asegurarnos de que podamos identificar f√°cilmente qu√© proyectos se ven afectados para poder solucionarlo lo antes posible.

Realmente no esperes infracciones de seguridad críticas o problemas de contexto difíciles. Aprovechamos otras herramientas para ese propósito e, incluso si las integramos en nuestra plataforma, The Zoo no está destinado a ser la primera línea de detección para tales problemas. Por lo general, se trata más de garantizar que todos nuestros repositorios sigan algunas pautas comunes.

- El zool√≥gico en s√≠ no tiene ninguna verificaci√≥n por defecto, depende del desarrollador escribir algunas verificaciones. Usted cre√≥ el zool√≥gico y escribe todo tipo de cheques para √©l. ¬ŅQu√© son estos controles? ¬ŅPuedes nombrar algunos?

Sí, The Zoo está destinado a ser una plataforma donde cualquiera puede escribir sus propios cheques. Tenemos los nuestros, que son bastante particulares para nuestra configuración y configuración, pero también queremos abrirlos de código abierto.

Como expliqué anteriormente, nuestros controles se basan en los problemas que encontramos en nuestros servicios. Estos problemas van desde solo las recomendaciones README para garantizar una recopilación de información más fácil hasta auditorías de configuración más avanzadas como las configuraciones nginx.

- ¬°Parecen cosas sobre las que todas las grandes empresas deber√≠an verificar! ¬ŅSabr√°s m√°s sobre ellos durante tu charla ?

Más que el contenido de los controles, creo que es más importante la capacidad de ejecutarlos en todos los repositorios de una manera simple. Por supuesto, daré información sobre lo que nosotros, en Kiwi.com, estamos verificando, y espero que otras personas se beneficien de nuestro conocimiento.

Animo totalmente a las personas a jugar con él, escribir sus propios cheques y contribuir a la base de conocimiento general. Estoy seguro de que alguien encontrará algo que se ajuste a sus necesidades.

- gracias! Finalmente, si puede regresar hace 5 a√Īos, ¬Ņqu√© consejo relacionado con Python le dar√° a un yo m√°s joven?

No es f√°cil ... Como alguien que acaba de comenzar a escribir Python 3 hace aproximadamente 1,5 a√Īos, recomiendo comenzar lo antes posible. Es una evoluci√≥n natural del lenguaje que establece los fundamentos del lenguaje. En este momento no volver√≠a al c√≥digo con Python 2, y no solo por el extremo cercano del soporte, sino porque me siento mucho m√°s c√≥modo con sus caracter√≠sticas.

Por supuesto, también llevaría un equipaje de buenas bibliotecas que terminé descubriendo con el tiempo, junto con algunas buenas prácticas que aprendí y todavía estoy aprendiendo.

Venga a Mosc√ļ Python Conf ++ el 5 de abril para conocer los detalles de trabajar con este interesante proyecto de c√≥digo abierto y quiz√°s de alguna manera tome prestada la experiencia de Kiwi.

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


All Articles