జోష్ ఎవాన్స్ నెట్ఫ్లిక్స్ మైక్రోసర్వీసెస్ యొక్క అస్తవ్యస్తమైన మరియు రంగుల ప్రపంచం గురించి మాట్లాడాడు, చాలా ప్రాథమిక అంశాలతో ప్రారంభించి - మైక్రోసర్వీస్ యొక్క అనాటమీ, పంపిణీ చేయబడిన సిస్టమ్లకు సంబంధించిన సవాళ్లు మరియు వాటి ప్రయోజనాలు. ఈ పునాదిపై ఆధారపడి, అతను మైక్రోసర్వీస్ నైపుణ్యానికి దారితీసే సాంస్కృతిక, నిర్మాణ మరియు కార్యాచరణ పద్ధతులను అన్వేషిస్తాడు.
కార్యాచరణ డ్రిఫ్ట్ కాకుండా, సేవా అంతర్జాతీయీకరణ కోసం కొత్త భాషల పరిచయం మరియు కంటైనర్లు వంటి కొత్త సాంకేతికతలు పర్యావరణానికి కొత్త సంక్లిష్టతను జోడించడానికి చేతన నిర్ణయాలు. నా కార్యకలాపాల బృందం నెట్ఫ్లిక్స్ కోసం ఉత్తమ సాంకేతికత రోడ్మ్యాప్ను ప్రామాణీకరించింది, ఇది జావా మరియు EC2 ఆధారంగా ముందే నిర్వచించబడిన ఉత్తమ అభ్యాసాలలోకి రూపొందించబడింది, అయితే వ్యాపారం పెరిగేకొద్దీ, డెవలపర్లు Python, Ruby, Node-JS మరియు Docker వంటి కొత్త భాగాలను జోడించడం ప్రారంభించారు.
కస్టమర్ ఫిర్యాదుల కోసం ఎదురుచూడకుండా మా ప్రోడక్ట్ అద్భుతంగా పని చేసేలా మొదటిగా వాదించినందుకు నేను చాలా గర్వపడుతున్నాను. ఇవన్నీ చాలా సరళంగా ప్రారంభమయ్యాయి - మేము పైథాన్లో ఆపరేటింగ్ ప్రోగ్రామ్లను మరియు రూబీలో కొన్ని బ్యాక్-ఆఫీస్ అప్లికేషన్లను కలిగి ఉన్నాము, కానీ మా వెబ్ డెవలపర్లు JVMని తొలగించబోతున్నామని మరియు వెబ్ను తరలించబోతున్నామని ప్రకటించినప్పుడు విషయాలు చాలా ఆసక్తికరంగా మారాయి. నోడ్ సాఫ్ట్వేర్ ప్లాట్ఫారమ్కి అప్లికేషన్. js. డాకర్ పరిచయం తర్వాత, విషయాలు చాలా క్లిష్టంగా మారాయి. మేము లాజిక్ని అనుసరించాము మరియు కస్టమర్ల కోసం మేము వాటిని అమలు చేసినప్పుడు మేము రూపొందించిన సాంకేతికతలు వాస్తవికంగా మారాయి, ఎందుకంటే అవి చాలా అర్థవంతంగా ఉన్నాయి. ఇది ఎందుకు అని నేను మీకు చెప్తాను.
API గేట్వే నిజానికి UI డెవలపర్ల కోసం ఎండ్ పాయింట్లుగా పనిచేసే గొప్ప స్క్రిప్ట్లను ఏకీకృతం చేయగల సామర్థ్యాన్ని కలిగి ఉంది. వారు మార్పులు చేసిన తర్వాత వాటిని ఉత్పత్తికి మరియు వినియోగదారు పరికరాలకు అమర్చగలిగే విధంగా ఈ ప్రతి స్క్రిప్ట్లను మార్చారు మరియు ఈ మార్పులన్నీ API గేట్వేలో నడిచే ముగింపు పాయింట్లతో సమకాలీకరించబడ్డాయి.
అయినప్పటికీ, ఇది కొత్త ఏకశిలాను సృష్టించే సమస్యను పునరావృతం చేసింది, ఇక్కడ API సేవ వివిధ వైఫల్య దృశ్యాలు సంభవించే విధంగా కోడ్తో ఓవర్లోడ్ చేయబడింది. ఉదాహరణకు, కొన్ని ఎండ్పాయింట్లు తీసివేయబడ్డాయి లేదా స్క్రిప్ట్లు యాదృచ్ఛికంగా అనేక వెర్షన్లను రూపొందించాయి, ఆ సంస్కరణలు API సేవ యొక్క అందుబాటులో ఉన్న మొత్తం మెమరీని తీసుకుంటాయి.
ఈ ఎండ్పాయింట్లను తీసుకొని వాటిని API సేవ నుండి తీసివేయడం లాజికల్గా ఉంది. దీన్ని చేయడానికి, మేము డాకర్ కంటైనర్లలో చిన్న అప్లికేషన్ల వలె నడిచే Node.js భాగాలను సృష్టించాము. ఈ నోడ్ అప్లికేషన్ల వల్ల ఏర్పడే ఏవైనా సమస్యలు మరియు క్రాష్లను వేరు చేయడానికి ఇది మమ్మల్ని అనుమతించింది.
ఈ మార్పుల ధర చాలా పెద్దది మరియు ఈ క్రింది అంశాలను కలిగి ఉంటుంది:
- ఉత్పాదకత సాధనాలు. కొత్త సాంకేతికతలను నిర్వహించడానికి కొత్త సాధనాలు అవసరం ఎందుకంటే UI బృందం, సమర్థవంతమైన మోడల్ను రూపొందించడానికి చాలా మంచి స్క్రిప్ట్లను ఉపయోగిస్తుంది, అవస్థాపనను నిర్వహించడానికి ఎక్కువ సమయం వెచ్చించాల్సిన అవసరం లేదు, వారు కేవలం స్క్రిప్ట్లను వ్రాసి వాటి కార్యాచరణను తనిఖీ చేయాల్సి ఉంటుంది.
అవకాశ అంతర్దృష్టి మరియు క్రమబద్ధీకరణ - పనితీరు డ్రైవర్ సమాచారాన్ని వెలికితీసేందుకు అవసరమైన కొత్త సాధనాలు ఒక ముఖ్య ఉదాహరణ. ప్రాసెసర్ ఎంత ఆక్రమించబడిందో, మెమరీ ఎలా ఉపయోగించబడుతుందో తెలుసుకోవడం అవసరం మరియు ఈ సమాచారాన్ని సేకరించడానికి వివిధ సాధనాలు అవసరం. - బేస్ ఇమేజ్ల ఫ్రాగ్మెంటేషన్ - సింపుల్ బేస్ AMI మరింత ఫ్రాగ్మెంటెడ్ మరియు స్పెషలైజ్ చేయబడింది.
- నోడ్ నిర్వహణ. క్లౌడ్లో నోడ్లను నిర్వహించడానికి మిమ్మల్ని అనుమతించే ఆఫ్-ది-షెల్ఫ్ ఆర్కిటెక్చర్ లేదా సాంకేతికత అందుబాటులో లేదు, కాబట్టి మేము అమెజాన్ AWSతో స్కేలబుల్ మరియు నమ్మదగిన కంటైనర్ విస్తరణ మరియు క్లౌడ్ ఇంటిగ్రేషన్ను అందించే కంటైనర్ మేనేజ్మెంట్ ప్లాట్ఫారమ్ను టైటస్ని రూపొందించాము.
- లైబ్రరీ లేదా ప్లాట్ఫారమ్ యొక్క నకిలీ. ప్లాట్ఫారమ్ యొక్క అదే ప్రధాన కార్యాచరణతో కొత్త సాంకేతికతలను అందించడం కోసం దానిని క్లౌడ్-ఆధారిత Node.js డెవలపర్ సాధనాల్లోకి నకిలీ చేయడం అవసరం.
- వక్రత మరియు పారిశ్రామిక అనుభవం నేర్చుకోవడం. కొత్త టెక్నాలజీల పరిచయం అనివార్యంగా కొత్త సవాళ్లను సృష్టిస్తుంది, వాటిని అధిగమించి నేర్చుకోవాలి.
అందువలన, మేము ఒక "చదునైన రహదారి"కి మమ్మల్ని పరిమితం చేయలేము మరియు మా సాంకేతికతలను అభివృద్ధి చేయడానికి నిరంతరం కొత్త మార్గాలను నిర్మించవలసి ఉంటుంది. ఖర్చులను తగ్గించడానికి, మేము కేంద్రీకృత మద్దతును పరిమితం చేసాము మరియు JVM, కొత్త నోడ్లు మరియు డాకర్పై దృష్టి సారించాము. మేము ప్రభావవంతమైన ప్రభావానికి ప్రాధాన్యత ఇచ్చాము, వారి నిర్ణయాల ధర గురించి బృందాలకు తెలియజేసాము మరియు వారు ఇప్పటికే అభివృద్ధి చేసిన అధిక-ప్రభావ పరిష్కారాలను తిరిగి ఉపయోగించుకునే మార్గాలను వెతకమని వారిని ప్రోత్సహించాము. అంతర్జాతీయ క్లయింట్లకు ఉత్పత్తిని అందించడానికి సేవను విదేశీ భాషల్లోకి అనువదించేటప్పుడు మేము ఈ విధానాన్ని ఉపయోగించాము. ఉదాహరణలలో సాపేక్షంగా సాధారణ క్లయింట్ లైబ్రరీలు ఉన్నాయి, అవి స్వయంచాలకంగా రూపొందించబడతాయి, తద్వారా పైథాన్ వెర్షన్, రూబీ వెర్షన్, జావా వెర్షన్ మొదలైనవాటిని సృష్టించడం చాలా సులభం.
మేము ఒకే చోట మరియు ఇతర సారూప్య పరిస్థితులలో తమను తాము నిరూపించుకున్న నిరూపితమైన సాంకేతికతలను ఉపయోగించడానికి అవకాశాల కోసం నిరంతరం వెతుకుతున్నాము.
చివరి మూలకం గురించి మాట్లాడుదాం - మార్పులు లేదా వైవిధ్యాలు. మా ఉత్పత్తి యొక్క వినియోగం వారంలోని రోజు మరియు రోజంతా గంటకు అసమానంగా ఎలా మారుతుందో చూడండి. సిస్టమ్పై లోడ్ గరిష్ట స్థాయికి చేరుకున్నప్పుడు, నెట్ఫ్లిక్స్కు ఉదయం 9 గంటలు కష్టతరమైన సమయం అని మీరు చెప్పవచ్చు.
సర్వీస్ డెలివరీలో అంతరాయాలను కలిగించకుండా మరియు మా కస్టమర్లకు అసౌకర్యాన్ని కలిగించకుండా, సాఫ్ట్వేర్ ఆవిష్కరణల అమలులో అధిక వేగాన్ని ఎలా సాధించగలము, అంటే సిస్టమ్లో నిరంతరం కొత్త మార్పులు చేయడం? నెట్ఫ్లిక్స్ కొత్త గ్లోబల్ క్లౌడ్-బేస్డ్ మేనేజ్మెంట్ మరియు కంటిన్యూస్ డెలివరీ (సిడి) ప్లాట్ఫారమ్ అయిన స్పిన్నకర్ని ఉపయోగించడం ద్వారా దీనిని సాధించింది.
విమర్శనాత్మకంగా, స్పిన్నకర్ మా ఉత్తమ అభ్యాసాలను ఏకీకృతం చేయడానికి రూపొందించబడింది, తద్వారా మేము ఉత్పత్తిలో భాగాలను అమర్చినప్పుడు, మేము అవుట్పుట్ను నేరుగా మా మీడియా డెలివరీ సాంకేతికతలోకి అనుసంధానించవచ్చు.
మేము అత్యంత విలువైన రెండు సాంకేతికతలను మా డెలివరీ పైప్లైన్లో చేర్చగలిగాము: ఆటోమేటెడ్ కానరీ విశ్లేషణ మరియు దశలవారీ విస్తరణ. కానరీ విశ్లేషణ అంటే మేము కోడ్ యొక్క కొత్త వెర్షన్కు ట్రాఫిక్ యొక్క ట్రికిల్ను నిర్దేశిస్తాము మరియు మిగిలిన ఉత్పత్తి ట్రాఫిక్ను పాత వెర్షన్ ద్వారా పంపుతాము. కొత్త కోడ్ టాస్క్తో ఎలా వ్యవహరిస్తుందో మేము తనిఖీ చేస్తాము - ఇప్పటికే ఉన్నదాని కంటే మెరుగైన లేదా అధ్వాన్నంగా.
అస్థిరమైన రోల్అవుట్ అంటే ఒక ప్రాంతంలోని రోల్అవుట్లో సమస్యలు ఉంటే, మేము మరొక ప్రాంతంలో రోల్అవుట్కు తరలిస్తాము. ఈ సందర్భంలో, పైన పేర్కొన్న చెక్లిస్ట్ తప్పనిసరిగా ఉత్పత్తి పైప్లైన్లో చేర్చబడాలి. నేను మీకు కొంత సమయాన్ని ఆదా చేస్తాను మరియు మీరు ఈ అంశంపై లోతుగా డైవ్ చేయడానికి ఆసక్తి కలిగి ఉంటే, నా మునుపటి చర్చ, ఇంజినీరింగ్ గ్లోబల్ నెట్ఫ్లిక్స్ కార్యకలాపాలను క్లౌడ్లో చూడమని మీకు సిఫార్సు చేస్తున్నాను. స్లైడ్ దిగువన ఉన్న లింక్ని అనుసరించడం ద్వారా ప్రసంగం యొక్క వీడియో రికార్డింగ్ను వీక్షించవచ్చు.
చర్చ ముగింపులో, నేను Netflix యొక్క సంస్థ మరియు నిర్మాణం గురించి క్లుప్తంగా మాట్లాడతాను. చాలా ప్రారంభంలో మేము ఎలక్ట్రానిక్ డెలివరీ అనే పథకాన్ని కలిగి ఉన్నాము, ఇది NRDP 1.x మీడియా స్ట్రీమింగ్ యొక్క మొదటి వెర్షన్. "బ్యాక్స్ట్రీమ్" అనే పదాన్ని ఇక్కడ ఉపయోగించవచ్చు ఎందుకంటే ప్రారంభంలో వినియోగదారు పరికరంలో తర్వాత ప్లేబ్యాక్ కోసం మాత్రమే కంటెంట్ను డౌన్లోడ్ చేయగలరు. నెట్ఫ్లిక్స్ యొక్క మొట్టమొదటి డిజిటల్ డెలివరీ ప్లాట్ఫారమ్, తిరిగి 2009లో ఇలాగే కనిపించింది.
వినియోగదారు పరికరం NRDP ప్లాట్ఫారమ్ - Netflix రెడీ డివైస్ ప్లాట్ఫారమ్ ఆధారంగా UI ఇంటర్ఫేస్, సెక్యూరిటీ మాడ్యూల్స్, సర్వీస్ యాక్టివేషన్ మరియు ప్లేబ్యాక్తో కూడిన నెట్ఫ్లిక్స్ అప్లికేషన్ను కలిగి ఉంది.
అప్పట్లో యూజర్ ఇంటర్ఫేస్ చాలా సింపుల్గా ఉండేది. ఇది Queque Reader అని పిలువబడే దానిని కలిగి ఉంది మరియు వినియోగదారు క్యూక్కి ఏదైనా జోడించడానికి సైట్కి వెళ్లి, ఆపై వారి పరికరంలో జోడించిన కంటెంట్ను వీక్షిస్తారు. సానుకూల అంశం ఏమిటంటే, ఫ్రంట్ ఎండ్ టీమ్ మరియు బ్యాక్ ఎండ్ టీమ్ ఒకే ఎలక్ట్రానిక్ డెలివరీ సంస్థకు చెందినవి మరియు దగ్గరి పని సంబంధాన్ని కలిగి ఉన్నాయి. XML ఆధారంగా పేలోడ్ సృష్టించబడింది. అదే సమయంలో, DVD వ్యాపారం కోసం నెట్ఫ్లిక్స్ API సృష్టించబడింది, ఇది మా సేవకు ట్రాఫిక్ను మళ్లించడానికి మూడవ పక్షం అప్లికేషన్లను ప్రోత్సహించింది.
అయినప్పటికీ, నెట్ఫ్లిక్స్ API ఒక వినూత్న వినియోగదారు ఇంటర్ఫేస్తో మాకు సహాయం చేయడానికి బాగా సిద్ధమైంది, ఇందులో మొత్తం కంటెంట్ మెటాడేటా, అందుబాటులో ఉన్న చలనచిత్రాల గురించి సమాచారం, ఇది వీక్షణ జాబితాలను రూపొందించే సామర్థ్యాన్ని సృష్టించింది. ఇది JSON స్కీమా, HTTP రెస్పాన్స్ కోడ్ ఆధారంగా ఒక సాధారణ REST APIని కలిగి ఉంది, అదే ఆధునిక ఆర్కిటెక్చర్లో ఉపయోగించబడింది మరియు OAuth సెక్యూరిటీ మోడల్ను కలిగి ఉంది, ఇది ఆ సమయంలో ఫ్రంట్-ఎండ్ అప్లికేషన్కు అవసరమైనది. ఇది స్ట్రీమింగ్ కంటెంట్ డెలివరీ యొక్క పబ్లిక్ మోడల్ నుండి ప్రైవేట్కు మారడం సాధ్యం చేసింది.
పరివర్తనలో సమస్య ఫ్రాగ్మెంటేషన్, ఎందుకంటే ఇప్పుడు మా సిస్టమ్ పూర్తిగా భిన్నమైన ఆపరేషన్ సూత్రాల ఆధారంగా రెండు సేవలను నిర్వహిస్తోంది - ఒకటి రెస్ట్, JSON మరియు OAuth, మరొకటి RPC, XML మరియు NTBA టోకెన్ సిస్టమ్ ఆధారంగా వినియోగదారు భద్రతా విధానం. ఇది మొదటి హైబ్రిడ్ ఆర్కిటెక్చర్.
మా రెండు జట్ల మధ్య తప్పనిసరిగా ఫైర్వాల్ ఉంది ఎందుకంటే ప్రారంభంలో API NCCPతో బాగా స్కేల్ చేయలేదు మరియు ఇది జట్ల మధ్య ఘర్షణకు దారితీసింది. సేవలు, ప్రోటోకాల్లు, సర్క్యూట్లు, సెక్యూరిటీ మాడ్యూల్స్లో తేడాలు ఉన్నాయి మరియు డెవలపర్లు తరచుగా పూర్తిగా భిన్నమైన సందర్భాల మధ్య మారవలసి ఉంటుంది.
ఈ విషయంలో, నేను కంపెనీ సీనియర్ ఇంజనీర్లలో ఒకరితో సంభాషణ చేసాను, నేను వీరిని అడిగాను: “సరైన దీర్ఘకాలిక నిర్మాణం ఏమిటి?” మరియు అతను కౌంటర్ ప్రశ్న అడిగాడు: “మీరు బహుశా మరింత ఆందోళన చెందుతారు. సంస్థాగత పర్యవసానాల గురించి - మనం ఈ విషయాలను ఏకీకృతం చేసి, మనం బాగా నేర్చుకున్న వాటిని అవి విచ్ఛిన్నం చేస్తే ఏమి జరుగుతుంది? ఈ విధానం కాన్వే యొక్క చట్టానికి చాలా సందర్భోచితమైనది: "ఆ సంస్థ యొక్క కమ్యూనికేషన్ నిర్మాణాన్ని ప్రతిబింబించే రూపకల్పన ద్వారా వ్యవస్థలను డిజైన్ చేసే సంస్థలు నిర్బంధించబడతాయి." ఇది చాలా వియుక్త నిర్వచనం, కాబట్టి నేను మరింత నిర్దిష్టమైనదాన్ని ఇష్టపడతాను: “ఏదైనా సాఫ్ట్వేర్ దానిని సృష్టించిన సంస్థాగత నిర్మాణాన్ని ప్రతిబింబిస్తుంది.” ఎరిక్ రేమండ్ నుండి నాకు ఇష్టమైన కోట్ ఇక్కడ ఉంది: "మీకు కంపైలర్పై నాలుగు డెవలపర్ల బృందాలు పని చేస్తుంటే, మీరు ఫోర్-పాస్ కంపైలర్తో ముగుస్తుంది." సరే, నెట్ఫ్లిక్స్లో ఫోర్-పాస్ కంపైలర్ ఉంది మరియు మేము ఆ విధంగా పని చేస్తాము.
ఈ సందర్భంలో తోక కుక్కను ఊపుతుందని మనం చెప్పగలం. మా మొదటి ప్రాధాన్యత పరిష్కారం కాదు, సంస్థ; ఇది మనకు ఉన్న నిర్మాణాన్ని నడిపించే సంస్థ. క్రమంగా, సేవల యొక్క హోడ్జ్పాడ్జ్ నుండి, మేము బ్లేడ్ రన్నర్ అని పిలిచే ఆర్కిటెక్చర్కి మారాము, ఎందుకంటే ఇక్కడ మేము ఎడ్జ్ సేవలు మరియు NCCP యొక్క సామర్థ్యం గురించి మాట్లాడుతున్నాము మరియు నేరుగా Zuul ప్రాక్సీ, API గేట్వే మరియు సంబంధిత ఫంక్షనల్లో వేరు చేయబడి, ఏకీకృతం చేయవచ్చు. "ముక్కలు" మరింత అధునాతన భద్రత, రీప్లే, డేటా సార్టింగ్ మొదలైన లక్షణాలతో కొత్త మైక్రోసర్వీస్లుగా మార్చబడ్డాయి.
అందువల్ల, డిపార్ట్మెంటల్ స్ట్రక్చర్లు మరియు కంపెనీ డైనమిక్స్ సిస్టమ్ డిజైన్ను రూపొందించడంలో ముఖ్యమైన పాత్ర పోషిస్తాయని మరియు మార్పును ప్రోత్సహించే లేదా అడ్డుకునే అంశం అని చెప్పవచ్చు. మైక్రోసర్వీసెస్ ఆర్కిటెక్చర్ సంక్లిష్టమైనది మరియు సేంద్రీయమైనది మరియు దాని ఆరోగ్యం క్రమశిక్షణ మరియు ప్రవేశపెట్టిన గందరగోళంపై ఆధారపడి ఉంటుంది.
ఒక చిన్న ప్రకటన
మాతో ఉన్నందుకు ధన్యవాదాలు. మీరు మా కథనాలను ఇష్టపడుతున్నారా? మరింత ఆసక్తికరమైన కంటెంట్ని చూడాలనుకుంటున్నారా? ఆర్డర్ చేయడం ద్వారా లేదా స్నేహితులకు సిఫార్సు చేయడం ద్వారా మాకు మద్దతు ఇవ్వండి,
ఆమ్స్టర్డామ్లోని ఈక్వినిక్స్ టైర్ IV డేటా సెంటర్లో Dell R730xd 2x చౌకగా ఉందా? ఇక్కడ మాత్రమే
మూలం: www.habr.com