Pendekatan tanpa server kanggo pangembangan layanan video kanthi cepet

Pendekatan tanpa server kanggo pangembangan layanan video kanthi cepet

Aku kerja ing outsourcing, ing ngendi prinsip utama bisa diterangake kanthi tembung "adol akeh, lakoni kanthi cepet." Luwih cepet kita nindakake, luwih akeh sing bakal kita entuk. Lan, iku seng di pengeni sing kabeh ora dianggo ing crutches lan snot, nanging karo tingkat ditrima saka kualitas. Aku bakal ngandhani sampeyan babagan pengalaman nalika perlu ngembangake layanan promosi ing wektu sing cendhak.

Given: akun root ing AWS, ora ana watesan ing pilihan tumpukan teknologi, siji backend, lan siji sasi kanggo pembangunan.

Tugas: ngleksanakake layanan promosi ing ngendi pangguna ngunggah saka siji nganti patang video kanthi durasi saka siji nganti patang detik, sing banjur diselehake ing seri video asli.

kaputusan

Nulis layanan sepeda dhewe ing wektu sing cendhak iku ora apik. Kajaba iku, supaya layanan bisa ngatasi beban lan kabeh wong bisa nampa video sing dikarepake, prasarana bakal dibutuhake. Lan luwih ora karo tag rega saka pesawat. Mula, kita langsung fokus ing solusi sing wis siap kanthi kustomisasi minimal.

Solusi standar kanggo nggarap video yaiku FFmpeg, sarana konsol lintas platform sing, liwat argumentasi, ngidini sampeyan ngethok lan overdub audio. Kabeh sing kudu ditindakake yaiku nulis bungkus lan ngeculake menyang urip. Kita nulis prototipe sing jahitan loro video bebarengan, lan ... fun wiwit. Pustaka kasebut adhedhasar .NET Core 2, kudu mlaku ing mesin virtual apa wae, mula kita njupuk conto AWS EC2 lan kabeh bakal bisa digunakake.

Teks sing didhelikakeora, iku ora bakal bisa
.
Senajan FFmpeg simplifies tugas, kanggo solusi tenan makarya sampeyan kudu nggawe conto EC2 lan ngrancang infrastruktur jaringan kanggo iku, kalebu Load Balancer. Tugas prasaja kanggo nyebarake saka awal dadi "sethithik" luwih rumit, lan infrastruktur wiwit nuntut dhuwit langsung - saben jam jumlah runtime ditarik saka akun klien.

Layanan kita ora melu proses Long-Running, ora mbutuhake database relasional sing gedhe lan lemu, lan pas karo arsitektur adhedhasar acara kanthi rantai panggilan microservice. Solusi kasebut nyaranake dhewe - kita bisa ninggalake EC2 lan ngetrapake aplikasi tanpa server sing bener, kaya Image Resizer standar adhedhasar AWS Lambda.

Miturut cara, senadyan ora seneng pangembang AWS kanggo .NET, dheweke ndhukung .NET Core 2.1 minangka runtime, sing nyedhiyakake macem-macem kesempatan pangembangan.

Lan ceri ing kue - AWS nyedhiyakake layanan sing kapisah kanggo nggarap file video - AWS Elemental MediaConvert.

Inti saka karya iku luar biasa prasaja: kita njupuk link S3 menyang video metu, nulis liwat AWS Console, .NET SDK utawa mung JSON apa kita arep apa karo video lan nelpon layanan. Dheweke nindakake antrian kanggo ngolah panjaluk sing mlebu, ngunggah asil menyang S3 dhewe lan, sing paling penting, ngasilake Acara CloudWatch kanggo saben owah-owahan status. Iki ngidini kita ngetrapake pemicu lambda kanggo ngrampungake pangolahan video.

Pendekatan tanpa server kanggo pangembangan layanan video kanthi cepet
Iki minangka arsitektur pungkasan:

Kabeh backend diselehake ing rong lambdas. Liyane kanggo muter video vertikal, amarga karya kuwi ora bisa rampung ing siji pass.

Kita bakal nyelehake ngarep ing wangun aplikasi SPA sing ditulis ing JS lan disusun liwat pug ing ember S3 umum. Kanggo ndownload video kasebut dhewe, kita ora butuh kode server - kita mung kudu mbukak titik pungkasan REST sing diwenehake S3. Ing bab mung aja lali kanggo ngatur kabijakan lan CORS.

pitfalls

  • AWS MediaConvert, kanggo sawetara alesan sing ora dingerteni, mung ditrapake swara kanggo saben pecahan video kanthi kapisah, nanging kita butuh lagu sing nyenengake saka kabeh screensaver.
  • Video vertikal kudu diproses kanthi kapisah. AWS ora kaya bar ireng lan sijine rollers ing 90 Β°.

Rink skating sing gampang

Senadyan kabeh kaendahan Stateless, sampeyan kudu nglacak apa sing kudu dilakoni karo video: lim utawa nambah audio kanggo urutan video rampung. Untunge, MediaConvert ndhukung metadata liwat Jobs, lan kita bisa tansah nggunakake flag prasaja saka wangun "isMasterSoundJob", parsing metadata iki ing tataran sembarang.

Serverless kanthi sampurna ngidini nggarap NoOps - pendekatan sing nganggep ora perlu tim kapisah sing tanggung jawab kanggo infrastruktur proyek. Mulane, iku prakara cilik - kita masang solusi ing AWS tanpa partisipasi administrator sistem, sing tansah duwe soko apa tho.
Lan kanggo nyepetake kabeh iki, kita ngotomatisasi script panyebaran sabisa-bisa ing AWS CloudFormation, sing ngidini sampeyan nyebarake kanthi siji tombol langsung saka VS. AkibatΓ©, file 200 baris kode ngijini sampeyan kanggo muter metu solusi siap-digawe, sanajan sintaks CloudFormation bisa gawe kaget yen sampeyan ora biasa.

Total

Serverless ora panacea. Nanging bakal nggawe urip luwih gampang ing kahanan kanthi telung watesan: "sumber daya winates - jangka pendek - dhuwit sithik."

Karakteristik Aplikasi Cocog kanggo Tanpa Server

  • tanpa proses Long-Running. watesan hard API Gateway punika 29 detik, watesan hard lambda 5 menit;
  • diterangake dening arsitektur Event-Driven;
  • pecah dadi komponen sing digandhengake kaya SOA;
  • ora mbutuhake akeh karya karo kondisi sampeyan;
  • ditulis ing .NET Core. Kanggo nggarap .NET Framework, sampeyan isih butuh paling ora Docker kanthi runtime sing cocog.

Keuntungan saka pendekatan Tanpa Server

  • nyuda biaya infrastruktur;
  • nyuda biaya ngirim solusi;
  • skalabilitas otomatis;
  • pembangunan ing pinggiran nglereni kemajuan teknologi.

Kekurangan, kanthi conto tartamtu

  • Tracing lan logging sing disebarake - sebagian ditanggulangi liwat AWS X-Ray lan AWS CloudWatch;
  • debugging ora trep;
  • Cold Start nalika ora ana beban;
  • Antarmuka pangguna-musuh AWS minangka masalah universal :)

Source: www.habr.com

Add a comment