Pendekatan tanpa server pikeun ngembangkeun gancang jasa pidéo anu tiasa dianggo

Pendekatan tanpa server pikeun ngembangkeun gancang jasa pidéo anu tiasa dianggo

Kuring digawé di outsourcing, dimana prinsip utama bisa digambarkeun ku frase "ngajual pisan, ngalakukeun eta gancang". The gancang urang ngalakukeun eta, beuki kami bakal earn. Na, éta desirable yén sagalana jalan teu on crutches na snot, tapi kalawan tingkat kualitas ditarima. Kuring bakal nyarioskeun ka anjeun ngeunaan pangalaman kuring nalika perlu pikeun ngembangkeun jasa promosi dina waktos anu pondok.

dibikeun: akun root dina AWS, euweuh larangan dina pilihan tumpukan téhnologi, hiji backend, sarta sabulan pikeun ngembangkeun.

Tugas: nerapkeun layanan promosi dimana pamaké unggah ti hiji nepi ka opat video langgeng ti hiji nepi ka opat detik, nu lajeng study dina runtuyan video aslina.

kaputusan

Nulis jasa sapédah anjeun sorangan dina waktu anu singget ieu sanés ide anu saé. Salaku tambahan, supados palayanan tiasa ngatasi beban sareng pikeun sadayana nampi pidéo anu dipikahoyong, infrastruktur bakal diperyogikeun. Sarta preferably henteu kalawan tag harga ti pesawat. Ku alatan éta, urang langsung difokuskeun solusi siap-dijieun kalawan kustomisasi minimal.

Solusi standar pikeun damel sareng pidéo nyaéta FFmpeg, utilitas konsol cross-platform anu, ngalangkungan argumen, ngamungkinkeun anjeun motong sareng overdub audio. Sadaya anu kedah dilakukeun nyaéta nyerat bungkus sareng ngaleupaskeun kana kahirupan. Urang nulis prototipe nu stitches dua video babarengan, jeung ... fun dimimitian. Perpustakaan dumasar kana .NET Core 2, éta kedah dijalankeun dina mesin virtual naon waé, janten urang nyandak conto AWS EC2 sareng sadayana bakal jalan.

téks disumputkeunhenteu, éta moal jalan
.
Sanaos FFmpeg nyederhanakeun tugas, pikeun solusi anu leres-leres damel anjeun kedah nyiptakeun conto EC2 sareng ngarancang infrastruktur jaringan pikeun éta, kalebet Load Balancer. Tugas saderhana pikeun nyebarkeun ti mimiti janten "saeutik" langkung pajeulit, sareng infrastruktur mimiti nungtut artos langsung - unggal jam jumlah runtime ditarik tina akun klien.

Ladenan kami henteu ngalibetkeun prosés Long-Running, henteu meryogikeun database relational anu ageung sareng gajih, sareng pas pisan kana arsitektur dumasar-acara sareng ranté telepon microservice. Solusina nunjukkeun sorangan - urang tiasa ngantunkeun EC2 sareng nerapkeun aplikasi tanpa server anu leres, sapertos Image Resizer standar dumasar kana AWS Lambda.

Ku jalan kitu, sanajan teu resep AWS pamekar atra pikeun .NET, aranjeunna ngarojong .NET Core 2.1 sakumaha runtime, nu nyadiakeun rentang pinuh ku kasempetan ngembangkeun.

Jeung céri on jajan - AWS nyadiakeun layanan misah pikeun gawé bareng file video - AWS Element MediaConvert.

Intina karya téh incredibly basajan: urang nyandak hiji link S3 ka video kaluar, nulis ngaliwatan AWS Konsol, .NET SDK atawa ngan saukur JSON naon urang rék ngalakukeun jeung video tur nelepon jasa. Éta sorangan ngalaksanakeun antrian pikeun ngolah pamundut anu asup, unggah hasil ka S3 sorangan sareng, anu paling penting, ngahasilkeun Acara CloudWatch pikeun tiap parobahan status. Hal ieu ngamungkinkeun urang pikeun nerapkeun pemicu lambda pikeun ngarengsekeun pamrosésan pidéo.

Pendekatan tanpa server pikeun ngembangkeun gancang jasa pidéo anu tiasa dianggo
Ieu mangrupikeun arsitéktur ahir:

Sakabeh backend ieu housed dina dua lambdas. Anu sanésna nyaéta pikeun muterkeun pidéo nangtung, sabab padamelan sapertos kitu henteu tiasa dilakukeun dina hiji pas.

Urang bakal nempatkeun hareup dina bentuk hiji aplikasi SPA ditulis dina JS sarta disusun via pug dina ember S3 umum. Pikeun ngaunduh pidéo sorangan, kami henteu peryogi kode server - kami ngan ukur kedah muka titik tungtung REST anu disayogikeun ku S3. Hiji-hijina hal nyaéta ulah hilap ngonpigurasikeun kawijakan sareng CORS.

Pitfalls

  • AWS MediaConvert, pikeun sababaraha alesan kanyahoan, ngan lumaku sora pikeun tiap fragmen video misah, tapi urang kudu lagu riang ti sakabéh screensaver.
  • Video vertikal kedah diolah nyalira. AWS teu resep bar hideung nempatkeun gilinding dina 90 °.

Gampang skating rink

Sanaos sadaya kaéndahan Stateless, anjeun kedah ngalacak naon anu kedah dilakukeun sareng pidéo: lem atanapi tambahkeun audio kana sekuen pidéo anu parantos réngsé. Untungna, MediaConvert ngarojong ngaliwatan metadata ngaliwatan Jobs na, sarta kami salawasna bisa ngagunakeun bandéra basajan tina formulir "isMasterSoundJob", parsing metadata ieu dina sagala tahapan.

Serverless sampurna ngamungkinkeun gawé bareng NoOps - pendekatan nu nganggap unnecessaryness sahiji tim misah jawab infrastruktur proyék. Ku alatan éta, éta masalah leutik - urang nyebarkeun solusi dina AWS tanpa partisipasi administrator sistem, anu salawasna mibanda hal pikeun ngalakukeun atoh.
Sareng pikeun nyepetkeun sadayana ieu, urang ngajadikeun otomatis skrip panyebaran saloba mungkin dina AWS CloudFormation, anu ngamungkinkeun anjeun nyebarkeun sareng hiji tombol langsung ti VS. Hasilna, file 200 baris kode ngidinan Anjeun pikeun gulung kaluar solusi siap-dijieun, sanajan sintaksis CloudFormation tiasa ngareureuwas lamun anjeun unaccustomed kana eta.

dina total

Serverless sanes panacea. Tapi éta bakal ngagampangkeun kahirupan dina kaayaan anu aya tilu wates: "sumber daya terbatas - jangka pondok - artos sakedik."

Karakteristik Aplikasi Cocog jeung Serverless

  • tanpa prosés Long-Running. API Gateway wates teuas nyaéta 29 detik, lambda wates teuas nyaéta 5 menit;
  • digambarkeun ku arsitéktur Acara-disetir;
  • ngarecah jadi komponén leupas gandeng kawas SOA;
  • teu merlukeun loba gawé kalawan kaayaan anjeun;
  • ditulis dina .NET Core. Pikeun damel sareng .NET Framework, anjeun masih peryogi sahenteuna Docker kalayan runtime anu pas.

Kauntungan tina pendekatan Serverless

  • ngurangan biaya infrastruktur;
  • ngurangan biaya delivering solusi;
  • scalability otomatis;
  • ngembangkeun di ujung motong tina kamajuan téhnologis.

Kakurangan, kalawan conto husus

  • Disebarkeun tracing jeung logging - sawaréh direngsekeun ngaliwatan AWS X-Ray jeung AWS CloudWatch;
  • debugging teu merenah;
  • Tiis Mimitian nalika euweuh beban;
  • Antarbeungeut pangguna-musuhan AWS mangrupikeun masalah universal :)

sumber: www.habr.com

Tambahkeun komentar