Untuk berbahasa Rusia, versi terjemahan yang diposting di sini .Beginilah cara Alex Viscreanu berbicara tentang Moscow Python Conf ++. Sekarang dua minggu sampai sebelum konferensi, tetapi tentu saja, saya sudah mendengar apa yang akan dibicarakan Alex. Temukan di bawah ini beberapa spoiler dan bicaralah tentang persiapan di belakang panggung: apa jenis open source Zoo yang dikembangkan di Kiwi, bagaimana ia menguji kode Python dan apa perbedaan antara The Zoo dan misalnya mypy.
- Ceritakan sedikit tentang Kiwi, diri Anda, dan apa pekerjaan Anda di perusahaan?Kiwi.com adalah agen perjalanan online yang berbasis di Republik Ceko. Kami bertujuan untuk
membuat perjalanan sesederhana dan sesederhana mungkin . Perusahaan ini didirikan pada 2012 sebagai
Skypicker , dan sejak itu telah menjadi salah satu dari lima penjual tiket pesawat online terbesar di Eropa. Itu diubah namanya menjadi Kiwi.com pada tahun 2016.
Fitur khusus yang kami, di Kiwi.com tawarkan, adalah
interlining virtual , yang memungkinkan kami untuk menghubungkan penerbangan dari perusahaan yang biasanya tidak bekerja sama, dan kami sedang membahas kemungkinan masalah koneksi yang disebabkan oleh penerbangan yang tertunda.
Beberapa angka yang kami kelola di Kiwi.com termasuk 90.000.000 pencarian harian, 25.000 kursi terjual setiap hari, dan total 15.000.000.000+ kombinasi penerbangan tersedia.
Mengenai saya, saya Alex Viscreanu,
pengembang tumpukan penuh yang pindah dari Spanyol ke Republik Ceko untuk bekerja di Kiwi.com . Saya telah bekerja terutama dengan Python di backend dan Javascript, bersama dengan kerangka kerja seperti Backbone.js, Angular atau baru-baru ini Vue.js, di frontend.
Saya bergabung dengan Kiwi.com untuk bekerja dalam
tim Platform , jadi saya terutama
mengembangkan alat -
alat internal dan menjaga beberapa layanan yang digunakan oleh pengembang kami. Karena posisi ini membutuhkan banyak pengetahuan tentang manajemen infrastruktur dan membangun alat, saya pikir judul posisi yang paling cocok untuk apa yang saya lakukan sebenarnya adalah
DevOps, dengan Dev yang lebih kuat daripada bagian Ops .
- Berapa banyak pengembang python yang Anda miliki di Kiwi? Apa proyek Python utama mereka dalam suatu perusahaan?Kami memiliki
sekitar 350 pengembang di semua kantor kami. Dari 350 pengembang itu,
200 mungkin bekerja dengan
Python setiap hari. Mengenai proyek utama mereka,
Kiwi.com menggunakan arsitektur microservice , dan
setiap tim bertanggung jawab atas sejumlah layanan . Setiap proyek memiliki kepentingannya sendiri di dalam arsitektur kami.
Saya rasa saya tidak bisa memberi tahu Anda proyek utama tertentu yang akan mewakili apa yang sedang dikerjakan semua pengembang kami. Kode backend tidak diungkapkan secara publik sehingga tidak banyak yang bisa saya katakan tentang ini.
Tetapi kami memiliki beberapa
proyek menarik yang tersedia untuk umum di organisasi
GitHub kami . Di sana Anda dapat menemukan
Phoenix , alat kendur pengumuman pemadaman kami;
Crane , skrip kami untuk disebarkan ke Rancher langsung dari GitLab;
Kebun Binatang , katalog layanan kami dan banyak proyek yang lebih kecil, tetapi tetap keren.
- Bagaimana dengan CI / CD dan menggunakan infrastruktur?Kami menggunakan
GitLab sebagai repositori kode sumber kami, dan karenanya,
GitLab CI adalah solusi yang mengintegrasikan yang terbaik. Kami juga berpikir itu solusi yang cukup bagus. Ini cukup fleksibel dan memungkinkan kami untuk memiliki jaringan yang berkinerja tinggi dan, bersama dengan Crane, mengarahkan penyebaran ke lingkungan yang berbeda dengan klik sederhana (atau secara otomatis jika Anda cukup berani).
Seluruh CI dilakukan oleh armada instance EC2 autoscaling, yang memungkinkan kami untuk skala sejauh yang kami butuhkan selama jam kerja kami sambil menjaga biaya tetap rendah dengan tidak memiliki terlalu banyak instance yang tidak digunakan di luar jam kerja.
Untuk mengatur infrastruktur kami saat ini kami menggunakan Rancher, yang telah terbukti berfungsi baik dengan beban dan jumlah layanan kami.
- Sepertinya Python adalah bahasa pilihan Anda. Bahasa lain apa yang Anda gunakan dan untuk tujuan apa?Bahasa yang paling sering digunakan kedua harus JavaScript, terutama digunakan untuk semua API frontend dan GraphQL kami. Kami juga memiliki Kotlin dan Java, untuk aplikasi Android; Swift dan Objective-C untuk iOS; beberapa GoLang untuk banyak layanan dan C / C ++ untuk mesin penerbangan kami.
- Anda menyebutkan proyek Zoo, yang merupakan Open Source baru dari Kiwi. Mengapa Kiwi bersifat open source? Apa yang menangkap?Seperti banyak perusahaan lain, kami mengandalkan perangkat lunak sumber terbuka pada hampir semua yang kami kembangkan. Mungkin kedengarannya seperti klise, tetapi
ketika Anda mengambil begitu banyak itu juga baik untuk memberi kembali , dan berkontribusi pada pengetahuan kolektif yang membantu semua orang untuk maju.
Kami juga berpikir bahwa proyek sumber terbuka kami dapat memberi manfaat bagi orang lain, dan, pada saat yang sama, kami juga bisa mendapat manfaat dari sudut pandang lain atau solusi yang lebih baik yang tidak kami pertimbangkan / ketahui.
- Lebih lanjut tentang Kebun Binatang. Berapa banyak repositori yang Anda periksa?Kami memiliki sekitar 1.300 repositori di GitLab internal kami dan sekitar 100 di GitHub publik kami. Totalnya mendekati
1500 .
Kami memindai setiap repositori yang kami miliki, terlepas dari apakah layanan terdaftar di The Zoo atau tidak. Alasan utama di balik logika itu adalah bahwa analisis yang kami kumpulkan dari pemindaian bermanfaat bagi kami dan, apalagi, ketika layanan terdaftar di The Zoo, datanya sudah ada di sana.
- Itu angka yang mengesankan! Dan berapa banyak kesalahan yang biasanya Anda temukan? Adakah tangkapan yang bagus untuk Anda ingat?Saat ini dalam database kami, kami menemukan sekitar
26000 masalah , yang berarti sekitar 20 masalah per repositori. Perlu diingat bahwa kebanyakan dari mereka tidak sepenuhnya masalah tetapi hanya rekomendasi.
Semua masalah yang tepat adalah hasil tangkapan yang bagus.
Proses penulisan cek untuk kebun binatang biasanya dimulai dengan mengidentifikasi beberapa masalah pada beberapa repositori. Kemudian, jika kita menganggap bahwa itu adalah sesuatu yang berbahaya untuk dimiliki di lebih banyak tempat kita lanjutkan menulis cek untuk The Zoo, hanya untuk memastikan bahwa kita dapat dengan mudah mengidentifikasi proyek mana yang terpengaruh sehingga kita dapat memperbaikinya sesegera mungkin.
Jangan benar-benar mengharapkan pelanggaran keamanan yang kritis atau masalah konteks yang rumit. Kami memanfaatkan alat-alat lain untuk tujuan itu dan, bahkan jika kami mengintegrasikannya di platform kami, The Zoo tidak dimaksudkan sebagai garis deteksi pertama untuk masalah-masalah seperti itu. Biasanya lebih tentang memastikan bahwa semua repositori kami mengikuti beberapa pedoman umum.
- Kebun binatang itu sendiri tidak memiliki cek secara default, terserah pengembang untuk menulis beberapa cek. Anda menciptakan Kebun Binatang dan menulis semua jenis cek untuk itu. Apa saja cek ini, dapatkah Anda menyebutkan beberapa saja?Ya, The Zoo dimaksudkan sebagai platform di mana siapa pun dapat menulis cek mereka sendiri. Kami memiliki milik kami sendiri, yang sangat khusus untuk pengaturan dan konfigurasi kami, tetapi kami juga ingin membukanya.
Seperti yang saya jelaskan sebelumnya, cek kami didasarkan pada masalah yang kami temukan pada layanan kami. Masalah ini berkisar dari hanya rekomendasi README untuk memastikan pengumpulan informasi yang lebih mudah hingga audit konfigurasi lebih lanjut seperti konfigurasi nginx.
- Sepertinya hal-hal yang harus diperiksa oleh setiap perusahaan besar! Akankah Anda memberi tahu lebih banyak tentang mereka selama pembicaraan Anda?Lebih dari isi cek, saya pikir lebih penting kemampuan untuk menjalankannya di semua repositori dengan cara yang sederhana. Tentu saja saya akan memberikan informasi tentang apa yang kami, di Kiwi.com, periksa, dan semoga orang lain mendapat manfaat dari pengetahuan kami.
Saya benar-benar mendorong orang untuk bermain dengannya, menulis cek mereka sendiri dan berkontribusi pada basis pengetahuan umum. Saya yakin seseorang akan menemukan sesuatu yang sesuai dengan kebutuhan mereka.
- Terima kasih! Akhirnya, jika Anda dapat kembali 5 tahun yang lalu, saran apa yang berhubungan dengan Python yang akan Anda berikan kepada diri yang lebih muda?Ini bukan yang mudah ... Sebagai seseorang yang baru mulai menulis Python 3 sekitar 1,5 tahun yang lalu saya sangat merekomendasikan memulai sesegera mungkin dengannya. Ini adalah evolusi alami dari bahasa yang mengatur dasar-dasar bahasa. Saat ini saya tidak akan kembali ke kode dengan Python 2, dan bukan hanya karena dukungan yang hampir selesai, tetapi karena saya merasa jauh lebih nyaman dengan fitur-fiturnya.
Tentu saja saya juga membawa bagasi perpustakaan yang baik yang akhirnya saya temukan dengan waktu, bersama dengan beberapa praktik baik yang saya pelajari dan saya masih belajar.
Datanglah ke Moscow Python Conf ++ pada 5 April untuk mempelajari detail bekerja dengan proyek open source yang menarik ini dan mungkin cara meminjam pengalaman Kiwi.