నేను అవుట్సోర్సింగ్లో పని చేస్తున్నాను, ఇక్కడ ప్రధాన సూత్రాన్ని "చాలా అమ్మండి, త్వరగా చేయండి" అనే పదబంధం ద్వారా వివరించవచ్చు. ఎంత వేగంగా చేస్తే అంత ఎక్కువ సంపాదిస్తాం. మరియు, ప్రతిదీ క్రచెస్ మరియు చీమిడిపై కాకుండా, ఆమోదయోగ్యమైన నాణ్యతతో పనిచేయడం మంచిది. తక్కువ వ్యవధిలో ప్రచార సేవను అభివృద్ధి చేయడానికి అవసరమైనప్పుడు నా అనుభవం గురించి నేను మీకు చెప్తాను.
May: AWSలో రూట్ ఖాతా, టెక్నాలజీ స్టాక్ ఎంపికపై ఎటువంటి పరిమితులు లేవు, ఒక బ్యాకెండ్ మరియు అభివృద్ధి కోసం ఒక నెల.
ఆబ్జెక్టివ్: వినియోగదారులు ఒకటి నుండి నాలుగు సెకన్ల వరకు ఉండే వీడియోలను అప్లోడ్ చేసే ప్రచార సేవను అమలు చేయండి, అవి అసలు వీడియో సిరీస్లో పొందుపరచబడతాయి.
నిర్ణయం
ఇంత తక్కువ సమయంలో మీ స్వంత సైకిల్ సేవ రాయడం మంచిది కాదు. అదనంగా, సేవ లోడ్ను ఎదుర్కోవటానికి మరియు ప్రతి ఒక్కరూ గౌరవనీయమైన వీడియోను స్వీకరించడానికి, మౌలిక సదుపాయాలు అవసరం. మరియు ప్రాధాన్యంగా విమానం నుండి ధర ట్యాగ్తో కాదు. అందువల్ల, మేము తక్షణమే కనీస అనుకూలీకరణతో రెడీమేడ్ పరిష్కారాలపై దృష్టి పెడతాము.
వీడియోతో పని చేయడానికి ప్రామాణిక పరిష్కారం FFmpeg, ఇది క్రాస్-ప్లాట్ఫారమ్ కన్సోల్ యుటిలిటీ, ఇది వాదనల ద్వారా, ఆడియోను కత్తిరించడానికి మరియు ఓవర్డబ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. రేపర్ వ్రాసి జీవితంలోకి విడుదల చేయడమే మిగిలి ఉంది. మేము రెండు వీడియోలను కలిపి ఒక నమూనాను వ్రాస్తాము మరియు... వినోదం ప్రారంభమవుతుంది. లైబ్రరీ .NET కోర్ 2పై ఆధారపడి ఉంటుంది, ఇది ఏదైనా వర్చువల్ మెషీన్లో అమలు చేయబడాలి, కాబట్టి మేము AWS EC2 ఉదాహరణని తీసుకుంటాము మరియు ప్రతిదీ పని చేస్తుంది
దాచిన వచనంలేదు, అది పని చేయదు
.
FFmpeg పనిని సులభతరం చేసినప్పటికీ, నిజంగా పని చేసే పరిష్కారం కోసం మీరు EC2 ఉదాహరణను సృష్టించాలి మరియు దాని కోసం లోడ్ బ్యాలెన్సర్తో సహా నెట్వర్క్ ఇన్ఫ్రాస్ట్రక్చర్ను రూపొందించాలి. మొదటి నుండి అమలు చేసే సాధారణ పని "కొంచెం" మరింత క్లిష్టంగా మారుతుంది మరియు మౌలిక సదుపాయాలు వెంటనే డబ్బును డిమాండ్ చేయడం ప్రారంభిస్తాయి - ప్రతి గంటకు రన్టైమ్ కోసం మొత్తం క్లయింట్ ఖాతా నుండి ఉపసంహరించబడుతుంది.
మా సేవ దీర్ఘకాలిక ప్రక్రియలను కలిగి ఉండదు, పెద్ద మరియు కొవ్వు సంబంధిత డేటాబేస్ అవసరం లేదు మరియు మైక్రోసర్వీస్ కాల్ల గొలుసుతో ఈవెంట్-ఆధారిత ఆర్కిటెక్చర్కు సరిగ్గా సరిపోతుంది. పరిష్కారం స్వయంగా సూచిస్తుంది - మేము EC2ని వదిలివేసి, AWS లాంబ్డా ఆధారంగా ప్రామాణిక ఇమేజ్ రీసైజర్ వంటి నిజమైన-సర్వర్లెస్ అప్లికేషన్ను అమలు చేయవచ్చు.
మార్గం ద్వారా, .NET కోసం AWS డెవలపర్ల యొక్క స్పష్టమైన అయిష్టత ఉన్నప్పటికీ, వారు .NET కోర్ 2.1కి రన్టైమ్గా మద్దతు ఇస్తారు, ఇది పూర్తి స్థాయి అభివృద్ధి అవకాశాలను అందిస్తుంది.
మరియు కేక్పై చెర్రీ - AWS వీడియో ఫైల్లతో పనిచేయడానికి ప్రత్యేక సేవను అందిస్తుంది - AWS ఎలిమెంటల్ మీడియాకన్వర్ట్.
పని యొక్క సారాంశం చాలా సులభం: మేము అవుట్గోయింగ్ వీడియోకి S3 లింక్ని తీసుకుంటాము, AWS కన్సోల్, .NET SDK లేదా JSON ద్వారా మేము వీడియోతో ఏమి చేయాలనుకుంటున్నాము మరియు సేవకు కాల్ చేస్తాము. ఇది ఇన్కమింగ్ అభ్యర్థనలను ప్రాసెస్ చేయడానికి క్యూలను అమలు చేస్తుంది, ఫలితాన్ని S3కి అప్లోడ్ చేస్తుంది మరియు ముఖ్యంగా, ప్రతి స్థితి మార్పు కోసం క్లౌడ్వాచ్ ఈవెంట్ను రూపొందిస్తుంది. వీడియో ప్రాసెసింగ్ను పూర్తి చేయడానికి లాంబ్డా ట్రిగ్గర్లను అమలు చేయడానికి ఇది మమ్మల్ని అనుమతిస్తుంది.
తుది నిర్మాణం ఇలా కనిపిస్తుంది:
మొత్తం బ్యాకెండ్ రెండు లాంబ్డాలలో ఉంచబడింది. మరొకటి నిలువు వీడియోలను తిప్పడం కోసం, అలాంటి పనిని ఒక పాస్లో చేయలేము.
మేము JSలో వ్రాసిన మరియు పబ్లిక్ S3 బకెట్లో పగ్ ద్వారా సంకలనం చేయబడిన SPA అప్లికేషన్ రూపంలో ముందు భాగాన్ని ఉంచుతాము. వీడియోలను స్వయంగా డౌన్లోడ్ చేయడానికి, మాకు సర్వర్ కోడ్ అవసరం లేదు - S3 మాకు అందించే REST ఎండ్ పాయింట్లను తెరవాలి. ఏకైక విషయం ఏమిటంటే విధానాలు మరియు CORS లను కాన్ఫిగర్ చేయడం మర్చిపోవద్దు.
ఆపదలను
- AWS MediaConvert, కొన్ని తెలియని కారణాల వల్ల, ప్రతి వీడియో ఫ్రాగ్మెంట్కి విడిగా ధ్వనిని మాత్రమే వర్తింపజేస్తుంది, అయితే మనకు మొత్తం స్క్రీన్సేవర్ నుండి ఆనందకరమైన పాట అవసరం.
- వర్టికల్ వీడియోలను విడిగా ప్రాసెస్ చేయాలి. AWS బ్లాక్ బార్లను ఇష్టపడదు మరియు రోలర్లను 90° వద్ద ఉంచుతుంది.
సులభమైన స్కేటింగ్ రింక్
స్టేట్లెస్ యొక్క అన్ని అందం ఉన్నప్పటికీ, మీరు వీడియోతో ఏమి చేయాలో ట్రాక్ చేయాలి: జిగురు లేదా పూర్తయిన వీడియో క్రమానికి ఆడియోను జోడించండి. అదృష్టవశాత్తూ, MediaConvert దాని ఉద్యోగాల ద్వారా మెటాడేటాను పాస్ చేయడానికి మద్దతు ఇస్తుంది మరియు మేము ఎల్లప్పుడూ "isMasterSoundJob" ఫారమ్ యొక్క సాధారణ ఫ్లాగ్ని ఉపయోగించవచ్చు, ఈ మెటాడేటాను ఏ దశలోనైనా అన్వయించవచ్చు.
సర్వర్లెస్ NoOpsతో పని చేయడానికి సంపూర్ణంగా అనుమతిస్తుంది - ప్రాజెక్ట్ అవస్థాపనకు బాధ్యత వహించే ప్రత్యేక బృందం యొక్క అనవసరతను భావించే విధానం. అందువల్ల, ఇది చాలా చిన్న విషయం - మేము సిస్టమ్ నిర్వాహకుల భాగస్వామ్యం లేకుండా AWSలో పరిష్కారాన్ని అమలు చేస్తాము, వారు ఎల్లప్పుడూ ఏమైనప్పటికీ ఏదైనా చేయవలసి ఉంటుంది.
మరియు వీటన్నింటిని వేగవంతం చేయడానికి, మేము AWS క్లౌడ్ఫార్మేషన్లో వీలైనంత వరకు విస్తరణ స్క్రిప్ట్ను ఆటోమేట్ చేస్తాము, ఇది VS నుండి నేరుగా ఒక బటన్తో అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఫలితంగా, 200 లైన్ల కోడ్ ఫైల్ మిమ్మల్ని రెడీమేడ్ సొల్యూషన్ను రూపొందించడానికి అనుమతిస్తుంది, అయితే క్లౌడ్ఫార్మేషన్ సింటాక్స్ మీకు అలవాటు లేకుంటే అది షాకింగ్గా ఉంటుంది.
మొత్తం
సర్వర్లెస్ సర్వరోగ నివారిణి కాదు. కానీ ఇది మూడు పరిమితులతో కూడిన పరిస్థితుల్లో జీవితాన్ని చాలా సులభతరం చేస్తుంది: "పరిమిత వనరులు-స్వల్పకాలిక-కొద్దిగా డబ్బు."
సర్వర్లెస్కు అనువైన అప్లికేషన్ల లక్షణాలు
- దీర్ఘకాలిక ప్రక్రియలు లేకుండా. API గేట్వే హార్డ్ పరిమితి 29 సెకన్లు, లాంబ్డా హార్డ్ పరిమితి 5 నిమిషాలు;
- ఈవెంట్-డ్రైవెన్ ఆర్కిటెక్చర్ ద్వారా వివరించబడింది;
- SOA వంటి వదులుగా కపుల్డ్ భాగాలుగా విచ్ఛిన్నమవుతుంది;
- మీ పరిస్థితితో ఎక్కువ పని అవసరం లేదు;
- .NET కోర్లో వ్రాయబడింది. .NET ఫ్రేమ్వర్క్తో పని చేయడానికి, మీకు ఇప్పటికీ తగిన రన్టైమ్తో కనీసం డాకర్ అవసరం.
సర్వర్లెస్ విధానం యొక్క ప్రయోజనాలు
- మౌలిక సదుపాయాల ఖర్చులను తగ్గిస్తుంది;
- పరిష్కారం పంపిణీ ఖర్చు తగ్గిస్తుంది;
- ఆటోమేటిక్ స్కేలబిలిటీ;
- సాంకేతిక పురోగతి యొక్క అత్యాధునిక అభివృద్ధి.
ప్రతికూలతలు, ఒక నిర్దిష్ట ఉదాహరణతో
- పంపిణీ చేయబడిన ట్రేసింగ్ మరియు లాగింగ్ - AWS X-Ray మరియు AWS CloudWatch ద్వారా పాక్షికంగా పరిష్కరించబడింది;
- అసౌకర్య డీబగ్గింగ్;
- లోడ్ లేనప్పుడు కోల్డ్ స్టార్ట్;
- AWS వినియోగదారు-శత్రు ఇంటర్ఫేస్ సార్వత్రిక సమస్య :)
మూలం: www.habr.com