Versi bahasa Inggris asli dari artikel ini ada di sini .Ini adalah judul pembicaraan Alex Viscreanu di Moscow Python Conf ++. Dua minggu lagi sebelum pertunjukan, tetapi tentu saja, saya sudah menanyakan semuanya kepada Alex dan di bawah kucing saya akan berbagi spoiler dan di belakang panggung untuk menyiapkan laporan: Kebun Binatang open-source seperti apa yang dilakukan dengan kode Python kami dan bagaimana perbedaannya dari kawan mypy.
- Ceritakan sedikit tentang Kiwi, apa yang Anda lakukan di perusahaan?Kiwi.com adalah agen perjalanan online dengan saus rahasia. Perusahaan ini didirikan di Republik Ceko pada 2012 dengan nama Skypicker, dan pada 2016 layanan ini berganti nama dan pindah ke Kiwi.com. Kiwi.com sekarang berada di lima agregator tiket pesawat terbesar di Eropa.
Fitur keren Kiwi.com untuk pengguna adalah kami menemukan opsi koneksi untuk penerbangan yang biasanya tidak bekerja bersama, dan kami menangani semua jenis masalah koneksi.
Untuk menilai skala kami, berikut adalah angka-angka tentang Kiwi.com: 90.000.000 pencarian harian, 25.000 kursi penjualan harian, dan lebih dari 15.000.000.000 kombinasi penerbangan yang tersedia.
Bagi saya, saya adalah pengembang penuh, pindah dari Spanyol ke Republik Ceko untuk bekerja di Kiwi.com. Saya bekerja dengan Python di backend, JavaScript, dan kebun binatang dari berbagai jenis di frontend: Backbone.js, Angular, Vue.js.
Di Kiwi.com, saya bergabung dengan tim infrastruktur, jadi saya terutama
mengembangkan dan memelihara alat internal untuk pengembang. Pekerjaan ini membutuhkan pengetahuan mendalam tentang manajemen infrastruktur dan alat penyebaran, saya pikir kita dapat mengatakan bahwa saya benar-benar melakukan
DevOps, dengan sedikit bias di bagian Dev .
- Berapa banyak pengembang Python yang ada di Kiwi? Untuk proyek apa Anda menggunakan Python?Kami memiliki lebih dari
350 pengembang , 200 di antaranya menggunakan Python setiap hari. Kiwi.com memiliki
arsitektur layanan mikro, dan setiap tim bertanggung jawab atas beberapa layanan. Saya tidak berpikir bahwa dapat dikatakan bahwa salah satunya adalah yang paling penting, atau semua pengembang mengerjakan satu hal. Selain itu, backend memiliki kode tertutup, dan saya tidak bisa bicara terlalu banyak tentangnya.
Tetapi kami memiliki beberapa proyek open source menarik yang tersedia di GitHub:
- Phoenix - alat untuk pemberitahuan di Slack tentang insiden;
- Crane - skrip untuk ditempatkan ke Rancher langsung dari GitLab;
- Kebun Binatang adalah seperangkat layanan yang lebih kecil yang bisa sangat berguna.
- Bagaimana dengan CI / CD dan infrastruktur penyebaran?Kami menggunakan
GitLab sebagai repositori kode sumber, dan, tentu saja,
GitLab CI terintegrasi paling baik dengannya. Ini adalah solusi yang cukup bagus, fleksibel dan memungkinkan Anda membangun saluran pipa yang produktif. Dan menggunakan sekelompok GitLab CI dan alat Derek kami, kami dapat menyebarkan proyek di lingkungan yang berbeda dengan mengklik tombol (atau sepenuhnya otomatis jika Anda punya nyali).
Kami menyediakan semua CI dengan armada instance autocale EC2. Karena hal ini, Anda dapat dengan mudah menambah daya sesuai kebutuhan, dan menghemat tanpa memegang server yang tidak digunakan selama jam libur.
Kami mengatur infrastruktur dengan bantuan
Rancher , yang telah membuktikan dirinya dengan sempurna dalam beban kerja kami dan dalam kondisi kami.
- Sepertinya Anda lebih suka Python. Apakah Anda menggunakan bahasa lain, dan untuk apa?Bahasa kedua yang paling banyak digunakan adalah
JavaScript , terutama untuk frontend dan GraphQL API. Selain itu, ada Kotlin dan Java untuk aplikasi Android; Swift dan Objective-C untuk iOS; GoLang digunakan di beberapa tempat untuk banyak layanan, dan C / C ++ untuk mesin pencari penerbangan.
- Anda menyebutkan proyek sumber terbuka The Zoo. Mengapa proyek open source Kiwi? Apa manfaatnya bagi Anda?Seperti banyak perusahaan lain, kami menggunakan open source di hampir semua yang kami kembangkan. Ini mungkin terdengar seperti klise, tetapi ketika Anda mendapatkan begitu banyak, akan lebih baik untuk memberikan sesuatu sebagai balasannya.
Ini merupakan kontribusi terhadap pengetahuan kolektif yang membantu kita semua bergerak maju.
Selain fakta bahwa kita akan mendapat manfaat dari apa yang kita posting di open source, itu juga berguna bagi kita. Orang lain dapat melihat produk dari sudut yang sama sekali berbeda dan menawarkan sesuatu yang tidak kami duga atau duga.
- Ceritakan sedikit tentang Kebun Binatang. Berapa banyak repositori yang Anda periksa?Kami memiliki sekitar 1.300 repositori di GitLab internal dan sekitar 100 di GitHub publik. Total mendekati
1500 .
Kami memindai masing-masing repositori kami, walaupun layanan ini tidak terdaftar di The Zoo. Idenya adalah bahwa, pertama, semakin banyak analitik, semakin akurat kesimpulannya, dan kedua, ketika di masa depan layanan terhubung ke The Zoo, kita sudah memiliki data tentang perilaku masa lalu.
- Jumlah yang mengesankan! Dan berapa banyak kesalahan yang biasanya Anda temukan? Apakah Anda ingat tangkapan khusus?Sekarang dalam database kami terdapat sekitar
26.000 masalah yang ditemukan , yaitu sekitar 20 masalah per proyek. Benar, kebanyakan dari mereka bukan "masalah-masalah", tetapi hanya rekomendasi.
Ini bagus ketika Anda dapat secara otomatis menangkap kesalahan signifikan.
Biasanya cek baru muncul di The Zoo setelah beberapa masalah ditemukan di salah satu repositori. Jika menurut kami ini juga dapat muncul di tempat lain, kami memulai pemeriksaan baru di The Zoo. Untuk memudahkan menentukan proyek mana yang terpengaruh, dan pastikan bahwa kami dapat memperbaiki kesalahan di mana saja sesegera mungkin.
Anda seharusnya tidak mengharapkan The Zoo menemukan pelanggaran keamanan kritis atau masalah kode kompleks. Kami memiliki alat lain untuk mereka, dan bahkan jika kami mengimplementasikannya di platform, ada baiknya mendeteksi bug penting bahkan sebelum The Zoo. Sebaliknya, diperlukan agar satu pedoman dihormati dalam semua repositori.
- Yaitu, Kebun Binatang tidak memiliki pemeriksaan default? Apakah Anda memerlukannya sehingga nyaman bagi pengembang untuk menulis cek yang ia inginkan? Anda telah membuat The Zoo dan sedang menguji banyak hal dengan itu. Bisakah Anda memberikan beberapa contoh?Benar,
The Zoo adalah sebuah platform di mana setiap orang dapat menulis ujian mereka sendiri. Cek kami cocok untuk konfigurasi kami yang agak spesifik, tetapi kami juga ingin membukanya.
Seperti yang saya katakan, cek didasarkan pada masalah yang ditemukan di layanan kami. Mulai dari rekomendasi README hingga pemeriksaan konfigurasi yang lebih kompleks, seperti nginx.
- Kedengarannya seperti "harus dimiliki" untuk perusahaan besar mana pun! Apakah Anda akan menceritakan hal ini secara lebih rinci dalam laporan Anda tentang Moscow Python Conf ++?Saya pikir akan lebih menarik bagaimana membuatnya mudah dan cepat untuk menjalankan tes di semua repositori. Tapi, tentu saja, saya akan memberi tahu Anda tentang apa yang kami periksa di Kiwi.com. Saya berharap ini akan bermanfaat bagi para tamu konferensi.
Saya mendorong semua orang untuk mencoba The Zoo, bermain dengannya, menulis cek mereka sendiri dan dengan demikian memperluas basis pengetahuan umum. Saya yakin di dalamnya Anda dapat menemukan sesuatu yang cocok untuk Anda.
- Terima kasih! Akhirnya, jika Anda bisa kembali 5 tahun, saran apa tentang Python yang akan Anda berikan kepada diri sendiri?Itu tidak mudah ... Saya mulai menulis dalam Python 3 hanya satu setengah tahun yang lalu, tetapi bagi diri saya sendiri di masa lalu saya akan sangat menyarankan memulai sedini mungkin.
Python 3 adalah evolusi alami dari bahasa , ia mendefinisikan dasar-dasarnya. Sekarang saya tidak akan pernah kembali ke Python 2. Intinya tidak hanya bahwa akhir dukungannya sudah dekat, tetapi sebagian besar saya sudah terbiasa dengan fitur-fitur versi baru.
Kembali dalam perjalanan waktu, saya akan mengambil bagasi beberapa perpustakaan bagus yang saya temui selama ini, dan beberapa praktik bagus yang masih saya pelajari.
Datanglah ke Moscow Python Conf ++ pada 5 April untuk mencari tahu detail bekerja dengan proyek open source yang menarik ini, dan, mungkin, untuk meminjam pengalaman Kiwi dalam sesuatu.