
Karena banyak dari kita sedang mempersiapkan untuk konferensi PyCon, kami ingin berbicara sedikit tentang bagaimana Python digunakan di Netflix. Kami menggunakan Python sepanjang seluruh siklus hidup: dari memutuskan seri mana yang akan dibiayai, dan diakhiri dengan karya CDN untuk mengirimkan video ke 148 juta pengguna. Kami berkontribusi pada banyak paket Python open source, beberapa di antaranya disebutkan di bawah ini. Jika ada sesuatu yang menarik minat Anda, lihat
situs lowongan kami atau cari kami di PyCon.
Buka terhubung
Open Connect adalah Jaringan Pengiriman Konten Netflix (CDN). Cara sederhana, meskipun tidak akurat, untuk menghadirkan infrastruktur Netflix adalah ini: semua yang terjadi sebelum Anda menekan tombol Play pada remote control (misalnya, masuk, menentukan rencana tarif, sistem rekomendasi, memilih film) berfungsi di Amazon Web Services (AWS) , dan semua yang terjadi setelah itu (mis. streaming video) berfungsi melalui Open Connect. Konten di-hosting di jaringan server Open Connect CDN sedekat mungkin dengan pengguna akhir untuk meningkatkan kualitas tampilan bagi pelanggan dan mengurangi biaya untuk Netflix dan mitra kami, penyedia Internet.
Berbagai sistem perangkat lunak diperlukan untuk merancang, mengembangkan, dan mengoperasikan CDN, dan banyak di antaranya ditulis dengan Python. Perangkat jaringan berbasis CDN terutama dikendalikan oleh aplikasi Python. Aplikasi semacam itu memantau status peralatan jaringan: perangkat mana yang digunakan, model mana, dengan komponen perangkat keras mana, di mana mereka berada. Konfigurasi perangkat ini dikendalikan oleh beberapa sistem lain, termasuk "sumber kebenaran", aplikasi konfigurasi perangkat, dan cadangan. Interaksi perangkat untuk mengumpulkan data kesehatan dan data operasional lainnya adalah aplikasi Python lainnya. Python telah lama menjadi bahasa pemrograman yang populer di web karena ini adalah bahasa intuitif yang memungkinkan Anda untuk dengan cepat memecahkan masalah jaringan. Banyak perpustakaan yang bermanfaat telah dikembangkan yang membuat bahasanya lebih cocok untuk pembelajaran dan penggunaan.
Rekayasa permintaan
Demand Engineering bertanggung jawab untuk
menangani kegagalan regional , distribusi lalu lintas, operasi bandwidth dan kinerja server di cloud Netflix. Kita dapat dengan bangga mengatakan bahwa alat kita dibangun terutama di atas Python. Layanan failover menggunakan numpy dan scipy untuk analisis numerik, boto3 untuk membuat perubahan pada infrastruktur AWS, rq untuk menjalankan beban kerja asinkron, semua dibungkus dalam lapisan Flask API tipis. Kemampuan untuk pergi dengan kegagalan di shell
bpython dan berimprovisasi lebih dari sekali menyelamatkan situasi.
Kami secara aktif menggunakan Jupyter Notebooks dan
nteract untuk menganalisis data operasional dan
alat visualisasi prototipe untuk mendeteksi regresi kapasitas.
INTI
Tim CORE menggunakan Python untuk menganalisis statistik dan mengeluarkan peringatan. Kami mengandalkan banyak perpustakaan statistik dan matematika (numpy, scipy, rupture, panda) untuk mengotomatisasi analisis 1000 sinyal terkait ketika sistem peringatan menunjukkan masalah. Kami telah mengembangkan sistem korelasi deret waktu yang digunakan baik di dalam tim dan di luarnya, serta sistem kerja terdistribusi untuk memparalelkan sejumlah besar pekerjaan analitis untuk mendapatkan hasil yang cepat.
Kami juga biasanya menggunakan Python untuk otomatisasi, penelitian, dan tugas penyaringan data dan sebagai alat visualisasi yang nyaman.
Memantau, mengingatkan, dan pemulihan otomatis
Tim Insight Engineering bertanggung jawab untuk pengembangan dan pengoperasian alat-alat untuk pengenalan cepat masalah, peringatan, diagnostik dan perbaikan otomatis. Dengan semakin populernya Python, tim sekarang mendukung klien Python untuk sebagian besar layanannya. Salah satu contoh adalah perpustakaan klien
Spectator untuk kode yang merekam metrik seri waktu dimensional. Kami membuat pustaka Python untuk berinteraksi dengan layanan lain di platform Netflix. Selain perpustakaan, produk
Winston dan
Bolt dibangun menggunakan kerangka Python (Gunicorn + Flask + Flask-RESTPlus).
Keamanan informasi
Tim keamanan informasi menggunakan Python untuk sejumlah tugas penting, termasuk mengotomatisasi keamanan, mengklasifikasikan risiko, mengidentifikasi dan secara otomatis memperbaiki kerentanan. Kami menerbitkan kode sumber untuk beberapa produk yang sukses, termasuk
Security Monkey (proyek open source kami yang paling aktif). Python digunakan untuk melindungi sumber daya SSH kami dengan
Bless . Tim keamanan infrastruktur menggunakan Python untuk mengonfigurasi izin IAM menggunakan
Repokid . Skrip python membantu menghasilkan sertifikat TLS di
Lemur .
Beberapa proyek terbaru kami termasuk Prism: kerangka kerja batch yang membantu insinyur keamanan menganalisis keadaan infrastruktur dan mengidentifikasi faktor risiko dan kerentanan dalam kode sumber. Kami saat ini menyediakan perpustakaan Python dan Ruby untuk Prism. Alat Diffy forensik (komputer forensik) sepenuhnya ditulis dalam Python. Kami juga menggunakan Python untuk menemukan data sensitif menggunakan Lanius.
Algoritma personalisasi
Kami menggunakan Python secara luas dalam
kerangka pembelajaran mesin untuk personalisasi . Beberapa model diajarkan di sini yang memberikan aspek-aspek kunci dari fungsionalitas Netflix: mulai dari
algoritma rekomendasi hingga
algoritma seleksi dan
pemasaran . Sebagai contoh, beberapa algoritma menggunakan TensorFlow, Keras dan PyTorch untuk mempelajari jaringan saraf yang dalam, XGBoost dan LightGBM untuk mempelajari pohon keputusan dengan peningkatan gradien atau tumpukan Python yang lebih luas (misalnya, perpustakaan numpy, scipy, sklearn perpustakaan, matplotlib, panda, pustaka cvxpy). Karena kami terus-menerus mencoba pendekatan baru, untuk banyak percobaan kami menggunakan notebook Jupyter. Kami juga telah mengembangkan sejumlah perpustakaan tingkat tinggi untuk mengintegrasikan notebook dengan
ekosistem lainnya (misalnya, akses ke data, mencatat fakta dan mengekstraksi atribut, mengevaluasi model, dan menerbitkan).
Infrastruktur Pembelajaran Mesin
Selain personalisasi, Netflix menerapkan pembelajaran mesin ke ratusan tugas lain di seluruh perusahaan. Banyak dari aplikasi ini berjalan di Metaflow, platform Python yang membuatnya mudah untuk mengeksekusi proyek-proyek ML dan menjalankannya dari tahap prototipe ke produksi.
Metaflow mendorong batas-batas Python: kami menggunakan kode Python yang diparalelkan dan dioptimalkan dengan baik untuk mengekstraksi data pada 10 Gb / s, memproses ratusan juta titik data dalam memori dan mengatur perhitungan pada puluhan ribu inti CPU.
Notes
Kami di Netflix adalah pengguna setia notebook Jupyter, dan kami telah menulis tentang
alasan dan sifat investasi ini .
Tapi Python memainkan peran besar dalam bagaimana layanan ini disediakan. Ini adalah bahasa utama untuk mengembangkan, men-debug, meneliti, dan membuat prototipe berbagai interaksi dengan ekosistem Jupyter. Kami menggunakan Python untuk membuat ekstensi khusus untuk server Jupyter, yang memungkinkan kami untuk mengelola tugas-tugas seperti pencatatan, pengarsipan, penerbitan, dan kloning buku catatan atas nama pengguna. Kami memberi pengguna kami banyak pilihan dalam Python melalui berbagai kernel Jupyter dan mengontrol penyebaran spesifikasi kernel ini menggunakan Python juga.
Orkestrasi
Tim Orkestrasi Data Besar bertanggung jawab untuk menyediakan semua layanan dan alat untuk merencanakan dan melaksanakan ETL dan jaringan pipa Adhoc.
Banyak komponen orkestrasi ditulis dalam Python. Dimulai dengan penjadwal yang menggunakan
notepad Jupyter dan
papermill untuk jenis pekerjaan templat (Spark, Presto ...). Ini memberi pengguna cara standar dan mudah untuk mengekspresikan pekerjaan yang perlu dilakukan.
Di sini Anda dapat membaca lebih lanjut tentang itu. Kami menggunakan notebook sebagai daftar nyata operasi dalam produksi ("buku pedoman") dalam situasi di mana intervensi manusia diperlukan, misalnya, memulai kembali segala sesuatu yang telah jatuh dalam satu jam terakhir.
Untuk penggunaan internal, kami membangun platform yang dikendalikan oleh peristiwa yang sepenuhnya ditulis dalam Python. Ini menerima aliran acara dari sejumlah sistem yang digabungkan menjadi satu alat. Ini memungkinkan Anda untuk menentukan kondisi untuk memfilter peristiwa, meresponsnya, atau merutekan. Sebagai hasilnya, kami dapat mengisolasi layanan microser dan memastikan transparansi dalam segala hal yang terjadi pada platform data.
Tim kami juga telah mengembangkan klien
pygenie , yang berinteraksi dengan layanan penyelesaian pekerjaan
gabungan Genie . Secara internal, kami memiliki ekstensi tambahan ke perpustakaan ini yang menerapkan perjanjian bisnis dan terintegrasi dengan platform Netflix. Perpustakaan ini adalah cara utama bagi pengguna untuk berinteraksi secara terprogram dengan platform big data.
Akhirnya, tim kami berkontribusi pada proyek sumber terbuka
papermill dan
lembar memo : kami menambahkan kode untuk kasus penggunaan kami sendiri dan eksternal. Upaya kami diterima dengan baik di komunitas open source, yang sangat kami sukai.
Platform eksperimental
Tim perhitungan ilmiah menciptakan platform untuk eksperimen: tes AB dan lainnya. Ilmuwan dan insinyur dapat bereksperimen dengan inovasi di tiga bidang: data, statistik, dan visualisasi.
Repositori metrik kami adalah platform Python berbasis
PyPika yang memungkinkan Anda untuk menulis kueri SQL
berparameter yang dapat digunakan kembali. Ini adalah titik masuk untuk setiap analisis baru.
Pustaka Causal Models dari model kausal didasarkan pada Python dan R: di sini, para ilmuwan diberikan kesempatan untuk mengeksplorasi model-model kausal baru. Ini menggunakan PyArrow dan RPy2, sehingga statistik mudah dihitung dalam bahasa apa pun.
Perpustakaan visualisasi didasarkan pada
Plotly . Karena Plotly adalah spesifikasi umum untuk visualisasi, ada banyak alat keluaran yang masuk ke platform kami.
Ekosistem afiliasi
Tim ekosistem mitra menggunakan Python untuk menguji aplikasi Netflix pada perangkat. Python membentuk inti dari infrastruktur integrasi berkelanjutan yang baru, termasuk mengelola server orkestrasi kami, mengelola Spinnaker, permintaan dan pemfilteran suite pengujian, dan uji perencanaan berjalan pada perangkat dan wadah. Analisis pasca peluncuran tambahan dilakukan dalam Python menggunakan TensorFlow untuk menentukan tes mana yang paling mungkin menyebabkan masalah pada perangkat mana.
Pengkodean video dan pengembangan cloud media
Tim kami menangani pengodean (dan transkode) katalog Netflix dan juga menggunakan pembelajaran mesin untuk menganalisis katalog ini.
Kami menggunakan Python di sekitar 50 proyek, seperti
vmaf dan
mezzfs , membuat solusi visi komputer menggunakan platform
pereduksi peta yang disebut
Archer , dan menggunakan Python untuk banyak proyek internal.
Kami juga telah membuka beberapa alat untuk memfasilitasi pengembangan / distribusi proyek Python, seperti
setupmeta dan
pickley .
Animasi Netflix dan NVFX
Python adalah standar industri untuk semua aplikasi utama yang kami gunakan untuk membuat konten animasi dan VFX, jadi tidak perlu dikatakan bahwa kami menggunakannya secara intensif. Semua integrasi kami dengan Maya dan Nuke dibuat dengan Python, dan sebagian besar alat Shotgun kami juga. Kami baru saja mulai membuat alat di awan dan akan mengerahkan banyak Python AMI / wadah khusus di sana.
Pembelajaran mesin dalam konten, sains, dan analitik
Tim pembelajaran mesin dalam konten menggunakan Python secara ekstensif untuk mengembangkan model pembelajaran mesin yang merupakan inti dari prediksi ukuran audiens, pandangan, dan metrik lainnya untuk semua konten.