Serverlos Approche fir séier Entwécklung vun engem funktionnéierende Videoservice

Serverlos Approche fir séier Entwécklung vun engem funktionnéierende Videoservice

Ech schaffen am Outsourcing, wou den Haaptprinzip ka beschriwwe ginn duerch den Ausdrock "vill verkafen, maacht et séier." Wat mir méi séier maachen, wat mir méi verdéngen. An et ass wënschenswäert datt alles net op Krutzen a Schnéi funktionnéiert, awer mat engem akzeptablen Qualitéitsniveau. Ech soen Iech iwwer meng Erfahrung wann et néideg war e Promotiounsservice an enger kuerzer Zäit z'entwéckelen.

Färdeg: root Kont op AWS, keng Restriktiounen op der Wiel vun Technologie Stack, ee Backend, an ee Mount fir Entwécklung.

Eng Aufgab: e Promotiounsservice implementéieren, wou d'Benotzer vun engem bis véier Videoen eropluede vun enger bis véier Sekonnen, déi dann an der ursprénglecher Videoserie agebonne sinn.

Decisioun

Ären eegene Vëlo Service an esou kuerzer Zäit ze schreiwen ass keng gutt Iddi. Zousätzlech, fir datt de Service mat der Belaaschtung këmmert an datt jidderee de begeeschterte Video kritt, wäert Infrastruktur erfuerderlech sinn. An am léifsten net mam Präiss Tag aus dem Fliger. Dofir konzentréiere mir eis direkt op fäerdeg Léisunge mat minimaler Personnalisatioun.

D'Standardléisung fir mat Video ze schaffen ass FFmpeg, e Cross-Plattform Konsol Utility deen Iech duerch Argumenter erlaabt Iech Audio ze schneiden an ze iwwerdubben. Alles wat bleift ze maachen ass e Wrapper ze schreiwen an et an d'Liewen ze befreien. Mir schreiwen e Prototyp deen zwee Videoen zesumme setzt, an ... de Spaass fänkt un. D'Bibliothéik baséiert op .NET Core 2, et soll op all virtuell Maschinn lafen, also huelen mir eng AWS EC2 Instanz an alles funktionnéiert

Verstoppt Textnee, et wäert net schaffen
.
Obwuel FFmpeg d'Aufgab vereinfacht, fir eng wierklech funktionéierend Léisung musst Dir eng EC2 Instanz erstellen an eng Netzwierkinfrastruktur dofir designen, och e Load Balancer. Déi einfach Aufgab vun Null ofzesetzen gëtt "e bëssen" méi komplizéiert, an d'Infrastruktur fänkt direkt Suen ze verlaangen - all Stonn gëtt de Betrag fir d'Runtime vum Clientskonto zréckgezunn.

Eise Service implizéiert net laang lafende Prozesser, erfuerdert keng grouss a fett relational Datebank, a passt perfekt an eng Event-baséiert Architektur mat enger Kette vu Mikroservice-Uriff. D'Léisung proposéiert sech selwer - mir kënnen EC2 opginn an eng richteg-serverlos Applikatioun implementéieren, wéi de Standard Image Resizer baséiert op AWS Lambda.

Iwwregens, trotz der offensichtlecher Oflehnung vun AWS Entwéckler fir .NET, ënnerstëtzen se .NET Core 2.1 als Runtime, déi eng ganz Palette vun Entwécklungsméiglechkeeten ubitt.

An d'Kiischt op de Kuch - AWS gëtt eng separat Service fir mat Video Fichieren ze schaffen - AWS Elemental MediaConvert.

D'Essenz vun der Aarbecht ass onheemlech einfach: mir huelen e S3 Link op den erausgaang Video, schreiwen duerch AWS Console, .NET SDK oder einfach JSON wat mir mam Video maache wëllen an de Service nennen. Et selwer implementéiert Schlaangen fir d'Veraarbechtung vun erakommen Ufroen, lued d'Resultat op S3 selwer erop an, am wichtegsten, generéiert e CloudWatch Event fir all Statusännerung. Dëst erlaabt eis Lambda Trigger ëmzesetzen fir d'Videoveraarbechtung komplett ze maachen.

Serverlos Approche fir séier Entwécklung vun engem funktionnéierende Videoservice
Dëst ass wéi déi definitiv Architektur ausgesäit:

De ganze Backend ass an zwee Lambdas ënnerbruecht. En aneren ass fir vertikale Videoen ze rotéieren, well sou Aarbecht kann net an engem Pass gemaach ginn.

Mir wäerten d'Front an der Form vun enger SPA Applikatioun geschriwwen an JS a kompiléiert iwwer Pug an engem ëffentleche S3 Eemer. Fir d'Videoen selwer erofzelueden, brauche mir kee Servercode - mir brauche just d'REST Endpunkter opzemaachen, déi S3 eis ubitt. Déi eenzeg Saach ass vergiesst net Politiken a CORS ze konfiguréieren.

alleng

  • AWS MediaConvert, aus engem onbekannte Grond, gëlt nëmmen Toun op all Videofragment getrennt, awer mir brauche e lëschtegt Lidd aus dem ganzen Screensaver.
  • Vertikal Videoe musse separat veraarbecht ginn. AWS huet schwaarz Baren net gär a setzt d'Roller op 90°.

Einfach Skatepist

Trotz all der Schéinheet vu Stateless, musst Dir verfollegen wat mam Video gemaach muss ginn: Kleeblatt oder Audio der fäerdeg Video Sequenz. Glécklecherweis ënnerstëtzt MediaConvert Metadaten duerch seng Jobs ze passéieren, a mir kënnen ëmmer en einfache Fändel vun der Form "isMasterSoundJob" benotzen, dës Metadaten zu all Etapp parséieren.

Serverlos erlaabt perfekt mat NoOps ze schaffen - eng Approche déi d'Onnéidegheet vun engem separaten Team verantwortlech fir d'Projetinfrastruktur iwwerhëlt. Dofir war et eng kleng Saach - mir deployéieren d'Léisung op AWS ouni d'Participatioun vu Systemadministratoren, déi souwisou ëmmer eppes ze maachen hunn.
A fir dëst alles ze beschleunegen, automatiséieren mir den Deployment Skript sou vill wéi méiglech op AWS CloudFormation, wat Iech erlaabt Iech mat engem Knäppchen direkt vum VS z'installéieren. Als Resultat, eng Datei vun 200 Zeilen Code erlaabt Iech eng fäerdeg Léisung auszerollen, obwuel d'CloudFormation Syntax schockéiert ka sinn, wann Dir et net gewinnt sidd.

Total

Serverlos ass keng Panacea. Awer et wäert d'Liewen vill méi einfach maachen an Situatiounen mat dräi Limiten: "limitéiert Ressourcen - kuerzfristeg - wéineg Suen."

Charakteristike vun Uwendungen Gëeegent fir Serverlos

  • ouni laang Lafen Prozesser. API Gateway schwéier Limite ass 29 Sekonnen, Lambda schwéier Limite ass 5 Minutten;
  • beschriwwen vun Event-Undriff Architektur;
  • brécht a locker gekoppelte Komponenten wéi SOA;
  • erfuerdert net vill Aarbecht mat Ärem Zoustand;
  • geschriwwen an .NET Kär. Fir mam .NET Framework ze schaffen, brauch Dir nach ëmmer op d'mannst Docker mat der entspriechender Runtime.

Virdeeler vun der Serverless Approche

  • reduzéiert Infrastruktur Käschten;
  • reduzéiert d'Käschte fir d'Liwwerung vun der Léisung;
  • automatesch Skalierbarkeet;
  • Entwécklung op der Spëtzt vum technologesche Fortschrëtt.

Nodeeler, mat engem spezifesche Beispill

  • Verdeelt Tracing a Logging - deelweis geléist duerch AWS X-Ray an AWS CloudWatch;
  • onbequem Debugging;
  • Kale Start wann et keng Laascht ass;
  • AWS User-feindlech Interface ass en universelle Problem :)

Source: will.com

Setzt e Commentaire