Pendekatan tanpa pelayan untuk pembangunan pantas perkhidmatan video yang berfungsi

Pendekatan tanpa pelayan untuk pembangunan pantas perkhidmatan video yang berfungsi

Saya bekerja dalam penyumberan luar, di mana prinsip utama boleh diterangkan dengan frasa "jual banyak, lakukan dengan cepat." Lagi cepat kita buat, lagi banyak yang kita akan dapat. Dan, adalah wajar bahawa semuanya berfungsi bukan pada tongkat dan ingus, tetapi dengan tahap kualiti yang boleh diterima. Saya akan memberitahu anda tentang pengalaman saya apabila perlu membangunkan perkhidmatan promosi dalam tempoh yang singkat.

Diberi: akaun root pada AWS, tiada sekatan pada pilihan susunan teknologi, satu hujung belakang dan satu bulan untuk pembangunan.

Tugas: melaksanakan perkhidmatan promosi di mana pengguna memuat naik daripada satu hingga empat video berdurasi dari satu hingga empat saat, yang kemudiannya dibenamkan dalam siri video asal.

keputusan

Menulis perkhidmatan basikal anda sendiri dalam masa yang singkat bukanlah idea yang baik. Di samping itu, agar perkhidmatan dapat menampung beban dan untuk semua orang menerima video yang diidamkan, infrastruktur akan diperlukan. Dan sebaik-baiknya bukan dengan tanda harga dari kapal terbang. Oleh itu, kami segera menumpukan pada penyelesaian siap pakai dengan penyesuaian minimum.

Penyelesaian standard untuk bekerja dengan video ialah FFmpeg, utiliti konsol merentas platform yang, melalui hujah, membolehkan anda memotong dan melakukan overdub audio. Apa yang perlu dilakukan ialah menulis pembungkus dan melepaskannya ke dalam kehidupan. Kami menulis prototaip yang menggabungkan dua video, dan... keseronokan bermula. Pustaka adalah berdasarkan .NET Core 2, ia harus dijalankan pada mana-mana mesin maya, jadi kami mengambil contoh AWS EC2 dan semuanya akan berfungsi

Teks tersembunyitidak, ia tidak akan berfungsi
.
Walaupun FFmpeg memudahkan tugas, untuk penyelesaian yang benar-benar berkesan, anda perlu mencipta contoh EC2 dan mereka bentuk infrastruktur rangkaian untuknya, termasuk Pengimbang Beban. Tugas mudah untuk melaksanakan dari awal menjadi "sedikit" lebih rumit, dan infrastruktur mula meminta wang serta-merta - setiap jam jumlah untuk masa jalan dikeluarkan daripada akaun pelanggan.

Perkhidmatan kami tidak melibatkan proses Jangka Panjang, tidak memerlukan pangkalan data hubungan yang besar dan gemuk, dan sesuai dengan sempurna ke dalam seni bina berasaskan acara dengan rangkaian panggilan perkhidmatan mikro. Penyelesaiannya mencadangkan sendiri - kita boleh meninggalkan EC2 dan melaksanakan aplikasi tanpa pelayan benar, seperti Resizer Imej standard berdasarkan AWS Lambda.

Ngomong-ngomong, walaupun pembangun AWS jelas tidak menyukai .NET, mereka menyokong .NET Core 2.1 sebagai masa jalan, yang menyediakan rangkaian penuh peluang pembangunan.

Dan ceri pada kek - AWS menyediakan perkhidmatan berasingan untuk bekerja dengan fail video - AWS Elemental MediaConvert.

Intipati kerja adalah sangat mudah: kami mengambil pautan S3 ke video keluar, menulis melalui AWS Console, .NET SDK atau hanya JSON perkara yang ingin kami lakukan dengan video dan menghubungi perkhidmatan tersebut. Ia sendiri melaksanakan baris gilir untuk memproses permintaan masuk, memuat naik hasilnya ke S3 sendiri dan, yang paling penting, menjana Acara CloudWatch untuk setiap perubahan status. Ini membolehkan kami melaksanakan pencetus lambda untuk melengkapkan pemprosesan video.

Pendekatan tanpa pelayan untuk pembangunan pantas perkhidmatan video yang berfungsi
Inilah rupa seni bina akhir:

Seluruh bahagian belakang ditempatkan dalam dua lambda. Satu lagi adalah untuk memutar video menegak, kerana kerja sedemikian tidak boleh dilakukan dalam satu laluan.

Kami akan meletakkan bahagian hadapan dalam bentuk aplikasi SPA yang ditulis dalam JS dan disusun melalui pug dalam baldi S3 awam. Untuk memuat turun video itu sendiri, kami tidak memerlukan sebarang kod pelayan - kami hanya perlu membuka titik akhir REST yang diberikan oleh S3 kepada kami. Satu-satunya perkara ialah jangan lupa untuk mengkonfigurasi dasar dan CORS.

Perangkap

  • AWS MediaConvert, atas sebab yang tidak diketahui, hanya menggunakan bunyi pada setiap serpihan video secara berasingan, tetapi kami memerlukan lagu ceria daripada keseluruhan penyelamat skrin.
  • Video menegak perlu diproses secara berasingan. AWS tidak suka bar hitam dan meletakkan penggelek pada 90°.

Gelanggang luncur yang mudah

Walaupun semua keindahan Stateless, anda perlu menjejaki perkara yang perlu dilakukan dengan video: gam atau tambah audio pada urutan video yang telah siap. Nasib baik, MediaConvert menyokong menghantar metadata melalui Jobsnya, dan kami sentiasa boleh menggunakan bendera ringkas dalam bentuk "isMasterSoundJob", menghuraikan metadata ini pada mana-mana peringkat.

Tanpa pelayan dengan sempurna membenarkan bekerja dengan NoOps - pendekatan yang menganggap tidak perlunya pasukan berasingan yang bertanggungjawab untuk infrastruktur projek. Oleh itu, ia adalah perkara kecil - kami menggunakan penyelesaian pada AWS tanpa penyertaan pentadbir sistem, yang sentiasa mempunyai sesuatu untuk dilakukan.
Dan untuk mempercepatkan semua ini, kami mengautomasikan skrip penggunaan sebanyak mungkin pada AWS CloudFormation, yang membolehkan anda menggunakan satu butang terus daripada VS. Akibatnya, fail 200 baris kod membolehkan anda melancarkan penyelesaian sedia, walaupun sintaks CloudFormation boleh mengejutkan jika anda tidak terbiasa dengannya.

Dalam jumlah

Tanpa pelayan bukan ubat penawar. Tetapi ia akan menjadikan hidup lebih mudah dalam situasi dengan tiga had: "sumber terhad—jangka pendek—sedikit wang."

Ciri-ciri Aplikasi Sesuai untuk Tanpa Pelayan

  • tanpa proses Jangka Panjang. Had keras API Gateway ialah 29 saat, had keras lambda ialah 5 minit;
  • diterangkan oleh seni bina Didorong Peristiwa;
  • terurai kepada komponen berganding longgar seperti SOA;
  • tidak memerlukan banyak kerja dengan keadaan anda;
  • ditulis dalam .NET Core. Untuk bekerja dengan Rangka Kerja .NET, anda masih memerlukan sekurang-kurangnya Docker dengan masa jalan yang sesuai.

Faedah pendekatan Tanpa Pelayan

  • mengurangkan kos infrastruktur;
  • mengurangkan kos penghantaran penyelesaian;
  • kebolehskalaan automatik;
  • pembangunan di pinggir kemajuan teknologi.

Kelemahan, dengan contoh khusus

  • Pengesanan dan pengelogan yang diedarkan - sebahagiannya diselesaikan melalui AWS X-Ray dan AWS CloudWatch;
  • penyahpepijatan yang menyusahkan;
  • Mula Sejuk apabila tiada beban;
  • Antara muka bermusuhan pengguna AWS adalah masalah sejagat :)

Sumber: www.habr.com

Tambah komen