Yandex merilis kode sumber Userver, kerangka kerja untuk membuat aplikasi di C++

Yandex telah menerbitkan kode sumber dari bingkai tampilan pengguna, yang memungkinkan Anda membuat aplikasi C++ yang dimuat tinggi yang bekerja dalam mode asinkron. Bingkai telah diuji pada unggahan level Yandex dan digunakan dalam layanan seperti Yandex Go, Lavka, Pengiriman, Pasar, dan proyek fintech.

tampilan pengguna paling cocok untuk mengembangkan aplikasi dengan arsitektur layanan mikro. Awalnya, tandaatau dikembangkan untuk Yandex Taxi, dengan bantuannya, tim berubah dari aplikasi monolitik menjadi arsitektur yang memungkinkan Anda mengembangkan komponen independen yang terpisah (layanan mikro) dan menggunakannya dalam aplikasi yang berbeda.

Hari ini kami mengumumkan rilis kerangka kerja pengguna sumber terbuka untuk membangun aplikasi beban tinggi. Bagi kami, ini adalah cara penting untuk berbagi pengalaman dalam mengembangkan layanan mikro yang telah kami kumpulkan. Berikut ini tautan ke repositori GitHub dengan kode sumber, dokumentasi, sampel, templat untuk membuat layanan Anda sendiri (dengan CI yang dikonfigurasi, lingkungan pembuatan dan pengujian), dan layanan konfigurasi dinamis. Semua ini dirilis di bawah lisensi Apache 2.0.

Layanan mikro bersifat otonom, jadi aplikasi berdasarkan arsitektur seperti itu mudah diperbarui dan menambahkan fitur baru ke dalamnya. Oleh karena itu, layanan mikro untuk menemukan driver untuk pesanan Taksi dapat digunakan untuk tugas serupa, misalnya, menemukan kurir untuk memenuhi pesanan Pengiriman Yandex. Hal yang sama dapat dilakukan dengan perhitungan waktu kedatangan pengemudi atau kurir dan banyak tugas lainnya.

Kerangka kerja ini awalnya dibuat dengan penekanan pada keandalan dan kenyamanan, dan di dalamnya menyediakan semua yang Anda butuhkan untuk pengembangan, diagnostik, pemantauan, debugging, dan eksperimen. Misalnya, userver menyarankan cara memperbaiki kesalahan pada tahap pembuatan, mengetahui cara bekerja dengan database yang berbeda, mengubah parameter dengan cepat, dll.

Mengenai komposisi, disebutkan bahwa driver untuk pekerjaan asinkron dengan DBMS disertakan (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), klien dan server yang bekerja secara asinkron untuk berbagai protokol (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitif tingkat rendah untuk mengelola sinkronisasi dan akses ke kemampuan sistem serta komponen tingkat tinggi untuk bekerja dengan caching, tugas, kunci terdistribusi, pelacakan, metrik, statistik, dan data dalam format JSON/YAML/BSON, plus mendukung perubahan konfigurasi layanan dengan cepat, tanpa menghentikannya.

Adapun kekurangannya arsitektur monolitik disebutkan sebagai berikut:

  • Konsolidasi semua kode dalam monolit. Dengan basis kode yang besar, pembuatan dan pengujian dapat memakan waktu berjam-jam, dan penerapan dapat memakan waktu satu hari penuh.
  • Tutup interaksi dari berbagai bagian kode. Anda harus berusaha keras untuk meninjau kode sehingga antarmuka ke berbagai bagian monolit tidak menjadi berantakan.
  • Kerapuhan. Perubahan dalam satu modul dapat merusak modul lain.
  • Area tanggung jawab yang kabur. Selama proses pengembangan, banyak bagian dari kode yang digeneralisasi, mulai digunakan oleh tim yang berbeda, dan ini bagus. Namun akibatnya, tidak jelas siapa yang bertanggung jawab atas modul yang dihasilkan: penulis pertama; mereka yang paling banyak mengedit; atau mereka yang paling aktif menggunakan modul dalam kode.

Sebelumnya, Yandex mentransfer teknologi kunci lainnya dalam bentuk proyek terbuka, misalnya, sistem manajemen basis data terdistribusi YDB, yang mampu memproses jutaan permintaan per detik, serta perpustakaan pembelajaran mesin CatBoost, yang digunakan Yandex dalam Pencarian dan lainnya. jasa.

Akhirnya bagi mereka yang tertarik untuk mengetahui lebih banyak tentangnyaHarap dicatat bahwa Userver saat ini didukung untuk Ubuntu, Debian, Fedora, Arch, Gentoo, sistem macOS, x86, x86_64, AArch64, arsitektur Arm, GCC 8+ dan kompiler Clang 9+, standar C++17, C+ +20, C ++23.

Kode userver ditulis dalam C++ dan Ini terbuka di bawah lisensi Apache 2.0 dan dapat dikonsultasikan dari link berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.