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.