డార్క్ 50ఎంఎస్‌లలో కోడ్‌ని ఎలా అమలు చేస్తుంది

డార్క్ 50ఎంఎస్‌లలో కోడ్‌ని ఎలా అమలు చేస్తుంది

అభివృద్ధి ప్రక్రియ ఎంత వేగంగా జరిగితే, టెక్నాలజీ కంపెనీ అంత వేగంగా అభివృద్ధి చెందుతుంది.

దురదృష్టవశాత్తూ, ఆధునిక అప్లికేషన్‌లు మాకు వ్యతిరేకంగా పని చేస్తాయి - మా సిస్టమ్‌లు ఎవరికీ అంతరాయం కలిగించకుండా లేదా పనికిరాని సమయం లేదా అంతరాయాలు కలిగించకుండా నిజ సమయంలో తప్పనిసరిగా నవీకరించబడాలి. అటువంటి వ్యవస్థలకు అమలు చేయడం సవాలుగా మారుతుంది మరియు చిన్న బృందాలకు కూడా సంక్లిష్టమైన నిరంతర డెలివరీ పైప్‌లైన్‌లు అవసరం.

ఈ పైప్‌లైన్‌లు సాధారణంగా స్కోప్‌లో ఇరుకైనవి, నెమ్మదిగా మరియు నమ్మదగనివిగా ఉంటాయి. డెవలపర్‌లు ముందుగా వాటిని మాన్యువల్‌గా నిర్మించి, ఆపై వాటిని నిర్వహించాలి మరియు కంపెనీలు దీన్ని చేయడానికి తరచుగా మొత్తం DevOps బృందాలను నియమించుకుంటాయి.

అభివృద్ధి వేగం ఈ పైపులైన్ల వేగంపై ఆధారపడి ఉంటుంది. ఉత్తమ బృందాలు 5-10 నిమిషాల్లో నియోగించబడతాయి, అయితే సాధారణంగా పనులు చాలా ఎక్కువ సమయం తీసుకుంటాయి, ఒక్కో విస్తరణకు చాలా గంటలు అవసరం.

చీకటిలో దీనికి 50మిసెలు పడుతుంది. యాభై. మిల్లీసెకన్లు. చీకటి - ఇది ప్రోగ్రామింగ్ లాంగ్వేజ్, ఎడిటర్ మరియు ఇన్‌ఫ్రాస్ట్రక్చర్‌తో పూర్తి పరిష్కారం, నిరంతర డెలివరీ కోసం ప్రత్యేకంగా నిర్మించబడింది మరియు భాషతో సహా డార్క్ యొక్క ప్రతి అంశం సురక్షితమైన, తక్షణ విస్తరణను దృష్టిలో ఉంచుకుని నిర్మించబడింది.

నిరంతర డెలివరీ పైప్‌లైన్‌లు ఎందుకు నెమ్మదిగా ఉన్నాయి?

మన దగ్గర పైథాన్ వెబ్ అప్లికేషన్ ఉంది మరియు మేము ఇప్పటికే అద్భుతమైన మరియు ఆధునిక నిరంతర డెలివరీ పైప్‌లైన్‌ని సృష్టించాము. ప్రతిరోజూ ఈ ప్రాజెక్ట్‌లో బిజీగా ఉండే డెవలపర్ కోసం, ఒక చిన్న మార్పును అమలు చేయడం ఇలా కనిపిస్తుంది:

మార్పు

  • gitలో కొత్త శాఖను సృష్టిస్తోంది
  • ఫంక్షన్ స్విచ్ వెనుక మార్పులు చేయడం
  • ఫంక్షన్ స్విచ్‌తో మరియు లేకుండా మార్పులను పరీక్షించడానికి యూనిట్ పరీక్ష

అభ్యర్థనను లాగండి

  • మార్పులకు కట్టుబడి ఉండండి
  • రిమోట్ గితుబ్ రిపోజిటరీకి మార్పులను నెట్టడం
  • అభ్యర్థనను లాగండి
  • CI నేపథ్యంలో స్వయంచాలకంగా నిర్మించబడుతుంది
  • కోడ్ సమీక్ష
  • అవసరమైతే మరికొన్ని సమీక్షలు
  • మార్పులను git మాస్టర్‌లో విలీనం చేస్తోంది.

CI మాస్టర్ మీద నడుస్తుంది

  • npm ద్వారా ఫ్రంటెండ్ డిపెండెన్సీలను ఇన్‌స్టాల్ చేస్తోంది
  • HTML+CSS+JS వనరుల అసెంబ్లీ మరియు ఆప్టిమైజేషన్
  • ఫ్రంటెండ్‌లో రన్నింగ్ యూనిట్ మరియు ఫంక్షనల్ పరీక్షలు
  • PyPI నుండి పైథాన్ డిపెండెన్సీలను ఇన్‌స్టాల్ చేస్తోంది
  • బ్యాకెండ్‌లో రన్నింగ్ యూనిట్ మరియు ఫంక్షనల్ పరీక్షలు
  • రెండు చివర్లలో ఏకీకరణను పరీక్షిస్తోంది
  • CDNకి ఫ్రంటెండ్ వనరులను పంపుతోంది
  • పైథాన్ ప్రోగ్రామ్ కోసం కంటైనర్‌ను నిర్మించడం
  • రిజిస్ట్రీకి కంటైనర్‌ను సమర్పించడం
  • కుబెర్నెట్స్ మానిఫెస్ట్‌ను అప్‌డేట్ చేయండి

పాత కోడ్‌ని కొత్త దానితో భర్తీ చేస్తోంది

  • కుబెర్నెటెస్ కొత్త కంటైనర్ యొక్క అనేక సందర్భాల్లో స్పిన్ చేస్తుంది
  • కుబెర్నెటెస్ ఆరోగ్యంగా మారడానికి ఉదాహరణల కోసం వేచి ఉన్నాడు
  • కుబెర్నెటెస్ HTTP లోడ్ బ్యాలెన్సర్‌కు ఉదాహరణలను జోడిస్తుంది
  • పాత ఉదంతాలు ఉపయోగంలో లేనంత వరకు కుబెర్నెటెస్ వేచి ఉంది
  • కుబెర్నెటెస్ పాత సందర్భాలను ఆపివేస్తాడు
  • కుబెర్నెటెస్ పాత వాటిని భర్తీ చేసే వరకు కొత్త ఉదంతాలను పునరావృతం చేస్తుంది

కొత్త ఫీచర్ స్విచ్‌ని ప్రారంభిస్తోంది

  • ప్రతిదీ సరిగ్గా ఉందని నిర్ధారించుకోవడానికి కొత్త కోడ్ మీ కోసం మాత్రమే చేర్చబడింది
  • 10% వినియోగదారుల కోసం కొత్త కోడ్ ప్రారంభించబడింది, కార్యాచరణ మరియు వ్యాపార కొలమానాలు ట్రాక్ చేయబడతాయి
  • 50% వినియోగదారుల కోసం కొత్త కోడ్ ప్రారంభించబడింది, కార్యాచరణ మరియు వ్యాపార కొలమానాలు ట్రాక్ చేయబడతాయి
  • 100% వినియోగదారుల కోసం కొత్త కోడ్ ప్రారంభించబడింది, కార్యాచరణ మరియు వ్యాపార కొలమానాలు ట్రాక్ చేయబడతాయి
  • చివరగా మీరు పాత కోడ్‌ను తీసివేసి, మారడానికి మొత్తం విధానాన్ని పునరావృతం చేస్తారు

ఈ ప్రక్రియ సాధనాలు, భాష మరియు సేవా-ఆధారిత నిర్మాణాల వినియోగంపై ఆధారపడి ఉంటుంది, కానీ సాధారణ పరంగా ఇది ఇలా కనిపిస్తుంది. నేను డేటాబేస్ మైగ్రేషన్ డిప్లాయ్‌మెంట్‌లను పేర్కొనలేదు ఎందుకంటే వాటికి చాలా ప్లానింగ్ అవసరం, కానీ డార్క్ దీన్ని ఎలా నిర్వహిస్తుందో నేను మీకు క్రింద చూపుతాను.

ఇక్కడ అనేక భాగాలు ఉన్నాయి మరియు వాటిలో చాలా సులభంగా వేగాన్ని తగ్గించవచ్చు, క్రాష్ చేయవచ్చు, తాత్కాలిక వివాదానికి కారణం కావచ్చు లేదా పని వ్యవస్థను క్రాష్ చేయవచ్చు.

మరియు ఈ పైప్‌లైన్‌లు దాదాపు ఎల్లప్పుడూ ప్రత్యేక కేసు కోసం సృష్టించబడినందున, వాటిపై ఆధారపడటం కష్టం. డాకర్‌ఫైల్‌లో సమస్యలు ఉన్నందున, డజన్ల కొద్దీ సేవల్లో ఒకటి క్రాష్ అయినందున లేదా అవసరమైన నిపుణుడు సెలవులో ఉన్నందున చాలా మందికి కోడ్‌ని అమలు చేయలేని రోజులు ఉన్నాయి.

అధ్వాన్నంగా, ఈ దశల్లో చాలా వరకు ఉపయోగకరమైనది ఏమీ లేదు. మేము నేరుగా వినియోగదారులకు కోడ్‌ని అమలు చేసినప్పుడు ఇది ముందు అవసరం, కానీ ఇప్పుడు మేము కొత్త కోడ్ కోసం టోగుల్‌లను కలిగి ఉన్నాము మరియు ఆ ప్రక్రియలు వేరు చేయబడ్డాయి. ఫలితంగా, కోడ్ అమలు చేయబడిన దశ (పాతది కొత్తదానితో భర్తీ చేయబడుతుంది) ఇప్పుడు కేవలం అనవసరమైన ప్రమాదంగా మారింది.

వాస్తవానికి, ఇది చాలా ఆలోచనాత్మకమైన పైప్‌లైన్. దీన్ని సృష్టించిన బృందం దానిని త్వరగా అమలు చేయడానికి సమయం మరియు డబ్బును విడిచిపెట్టలేదు. సాధారణంగా, విస్తరణ పైప్‌లైన్‌లు చాలా నెమ్మదిగా ఉంటాయి మరియు మరింత నమ్మదగనివిగా ఉంటాయి.

చీకటిలో నిరంతర డెలివరీని అమలు చేయడం

డార్క్‌కి నిరంతర డెలివరీ చాలా ముఖ్యం కాబట్టి మేము ప్రారంభం నుండి ఉప-రెండవ సార్లు లక్ష్యంగా పెట్టుకున్నాము. మేము అనవసరమైన ప్రతిదాన్ని తొలగించడానికి పైప్‌లైన్ యొక్క అన్ని దశల ద్వారా వెళ్ళాము మరియు మిగిలిన వాటిని పాలిష్ చేసాము. ఈ విధంగా మేము దశలను తీసివేసాము.

జెస్సీ ఫ్రేజెల్ (జెస్సీ ఫ్రేజెల్లె) రేక్‌జావిక్‌లో జరిగిన ఫ్యూచర్ ఆఫ్ సాఫ్ట్‌వేర్ డెవలప్‌మెంట్ కాన్ఫరెన్స్‌లో డిప్లాయ్‌లెస్ (డిప్లాయ్‌మెంట్ అవసరం లేదు) అనే కొత్త పదాన్ని రూపొందించారు.

డార్క్ "నియోగించని" భావనపై ఆధారపడి ఉంటుందని మేము వెంటనే నిర్ణయించుకున్నాము (ధన్యవాదాలు జెస్సీ ఫ్రేజెల్ నియోలాజిజం కోసం). డిప్లాయ్‌లెస్ అంటే ఏదైనా కోడ్ తక్షణమే అమలు చేయబడుతుంది మరియు ఉత్పత్తిలో ఉపయోగించడానికి సిద్ధంగా ఉంటుంది. వాస్తవానికి, విచ్ఛిన్నమైన లేదా అసంపూర్ణమైన కోడ్‌ని పాస్ చేయడానికి మేము అనుమతించము (నేను భద్రతా సూత్రాలను క్రింద వివరిస్తాను).

డార్క్ డెమోలో, మేము ఇంత త్వరగా ఎలా అమర్చగలిగాము అని తరచుగా అడిగారు. విచిత్రమైన ప్రశ్న. కోడ్‌ను పోల్చడం, కంపైల్ చేయడం, కంటైనర్‌లో ప్యాక్ చేయడం, వర్చువల్ మెషీన్‌ను ప్రారంభించడం, కోల్డ్‌ను కంటైనర్‌ను ప్రారంభించడం మరియు ఇలాంటివన్నీ - అన్నీ 50 ఎంఎస్‌లలో ఉండే ఒక రకమైన సూపర్ టెక్నాలజీని మేము కనుగొన్నామని వ్యక్తులు బహుశా అనుకుంటారు. ఇది దాదాపు సాధ్యం కాదు. కానీ మేము ఇవన్నీ అవసరం లేని ప్రత్యేక విస్తరణ ఇంజిన్‌ను సృష్టించాము.

డార్క్ రన్ వ్యాఖ్యాతలను క్లౌడ్‌లో నడుపుతుంది. మీరు ఫంక్షన్ లేదా HTTP లేదా ఈవెంట్ హ్యాండ్లర్‌లో కోడ్‌ని వ్రాస్తున్నారని అనుకుందాం. మేము వ్యత్యాసాన్ని అబ్‌స్ట్రాక్ట్ సింటాక్స్ ట్రీకి (మా ఎడిటర్ మరియు సర్వర్లు అంతర్గతంగా ఉపయోగించే కోడ్ అమలు) మా సర్వర్‌లకు పంపుతాము, ఆపై అభ్యర్థనలు వచ్చినప్పుడు ఆ కోడ్‌ని అమలు చేస్తాము. కాబట్టి విస్తరణ డేటాబేస్‌లోకి కేవలం నిరాడంబరమైన ప్రవేశం వలె కనిపిస్తుంది - తక్షణం మరియు ప్రాథమికమైనది. ఇది కనీస స్థాయిని కలిగి ఉన్నందున విస్తరణ చాలా వేగంగా ఉంది.

భవిష్యత్తులో, మేము డార్క్‌ని ఇన్‌ఫ్రాస్ట్రక్చర్ కంపైలర్‌గా మార్చాలని ప్లాన్ చేస్తున్నాము, అది అప్లికేషన్‌ల యొక్క అధిక పనితీరు మరియు విశ్వసనీయత కోసం ఆదర్శవంతమైన మౌలిక సదుపాయాలను సృష్టించి, అమలు చేస్తుంది. తక్షణ విస్తరణ, వాస్తవానికి, ఇక్కడే ఉంది.

సురక్షిత విస్తరణ

స్ట్రక్చర్డ్ ఎడిటర్

డార్క్ ఎడిటర్‌లో కోడ్ ఇన్ డార్క్ వ్రాయబడింది. నిర్మాణాత్మక ఎడిటర్ సింటాక్స్ లోపాలను అనుమతించదు. నిజానికి, డార్క్‌కి ఎనలైజర్ కూడా లేదు. మీరు టైప్ చేస్తున్నప్పుడు, మేము నేరుగా అబ్‌స్ట్రాక్ట్ సింటాక్స్ ట్రీ (AST)తో పని చేస్తున్నాము. పారెడిట్, స్కెచ్-ఎన్-స్కెచ్, టోఫు, ఎండు ద్రాక్ష и MPS.

డార్క్‌లో ఏదైనా అసంపూర్తి కోడ్ చెల్లుబాటు అయ్యే ఎగ్జిక్యూషన్ సెమాంటిక్స్‌ను కలిగి ఉంటుంది హాజెల్‌లో టైప్ చేసిన రంధ్రాలు. ఉదాహరణకు, మీరు ఫంక్షన్ కాల్‌ని మార్చినట్లయితే, కొత్తది ఉపయోగించబడే వరకు మేము పాత ఫంక్షన్‌ని నిల్వ చేస్తాము.

డార్క్‌లోని ప్రతి ప్రోగ్రామ్‌కు దాని స్వంత అర్థం ఉంటుంది, కాబట్టి అసంపూర్తిగా ఉన్న కోడ్ పూర్తయిన కోడ్ పని చేయకుండా నిరోధించదు.

ఎడిటింగ్ మోడ్‌లు

మీరు రెండు సందర్భాల్లో డార్క్‌లో కోడ్‌ని వ్రాస్తారు. మొదటిది: మీరు కొత్త కోడ్ వ్రాస్తున్నారు మరియు మీరు మాత్రమే వినియోగదారు. ఉదాహరణకు, ఇది REPLలో ఉంది మరియు ఇతర వినియోగదారులు దీన్ని ఎప్పటికీ యాక్సెస్ చేయలేరు లేదా మీరు ఎక్కడా సూచించని కొత్త HTTP మార్గం. ఇక్కడ మీరు ఎటువంటి జాగ్రత్తలు లేకుండా పని చేయవచ్చు మరియు ఇప్పుడు మీరు అభివృద్ధి వాతావరణంలో ఎలా పని చేస్తారో ఇది చాలా చక్కనిది.

రెండవ పరిస్థితి: కోడ్ ఇప్పటికే వాడుకలో ఉంది. మీ కోడ్ (ఫంక్షన్‌లు, ఈవెంట్ హ్యాండ్లర్లు, డేటాబేస్‌లు, రకాలు) గుండా ట్రాఫిక్ ఉంటే, మీరు జాగ్రత్తగా ఉండాలి. దీన్ని చేయడానికి, మేము ఉపయోగించిన అన్ని కోడ్‌లను బ్లాక్ చేస్తాము మరియు దానిని సవరించడానికి మరిన్ని నిర్మాణాత్మక సాధనాలను ఉపయోగించడం అవసరం. నేను దిగువ నిర్మాణ సాధనాలను కవర్ చేస్తాను: HTTP మరియు ఈవెంట్ హ్యాండ్లర్‌ల కోసం ఫంక్షన్ స్విచ్‌లు, డేటాబేస్‌ల కోసం శక్తివంతమైన మైగ్రేషన్ ప్లాట్‌ఫారమ్ మరియు ఫంక్షన్‌లు మరియు రకాల కోసం కొత్త సంస్కరణ పద్ధతి.

ఫంక్షన్ స్విచ్‌లు

పద్ధతుల్లో ఒకటి అనవసరమైన సంక్లిష్టతను తొలగించండి చీకటిలో - ఒకే పరిష్కారంతో బహుళ సమస్యలను పరిష్కరించండి. ఫీచర్ స్విచ్‌లు అనేక విభిన్న విధులను నిర్వహిస్తాయి: స్థానిక అభివృద్ధి వాతావరణాన్ని భర్తీ చేయడం, git శాఖలు, కోడ్‌ని అమలు చేయడం మరియు కొత్త కోడ్ యొక్క సాంప్రదాయిక నెమ్మదిగా మరియు నియంత్రిత విడుదల.

ఫీచర్ స్విచ్‌ని సృష్టించడం మరియు అమలు చేయడం మా ఎడిటర్‌లో ఒక ఆపరేషన్‌లో జరుగుతుంది. ఇది కొత్త కోడ్ కోసం ఖాళీ స్థలాన్ని సృష్టిస్తుంది మరియు పాత మరియు కొత్త కోడ్‌లకు యాక్సెస్ నియంత్రణలను అందిస్తుంది, అలాగే కొత్త కోడ్‌ని దశలవారీగా లేదా తొలగించడానికి బటన్లు మరియు ఆదేశాలను అందిస్తుంది.

ఫంక్షన్ స్విచ్‌లు డార్క్ లాంగ్వేజ్‌లో నిర్మించబడ్డాయి మరియు అసంపూర్తిగా ఉన్న స్విచ్‌లు కూడా వాటి ప్రయోజనాన్ని అందిస్తాయి - స్విచ్‌లోని షరతు పాటించకపోతే, పాత బ్లాక్ చేయబడిన కోడ్ అమలు చేయబడుతుంది.

అభివృద్ధి పర్యావరణం

ఫీచర్ స్విచ్‌లు స్థానిక అభివృద్ధి వాతావరణాన్ని భర్తీ చేస్తాయి. ఈ రోజు, బృందాలు అందరూ ఒకే విధమైన సాధనాలు మరియు లైబ్రరీలను ఉపయోగిస్తున్నారని నిర్ధారించుకోవడం కష్టంగా ఉంది (కోడ్ ఫార్మాటర్‌లు, లింటర్‌లు, ప్యాకేజీ మేనేజర్‌లు, కంపైలర్‌లు, ప్రీప్రాసెసర్‌లు, టెస్టింగ్ టూల్స్ మొదలైనవి) డార్క్‌తో, స్థానికంగా డిపెండెన్సీలను ఇన్‌స్టాల్ చేయాల్సిన అవసరం లేదు, స్థానిక డాకర్ ఇన్‌స్టాలేషన్‌ను నిర్వహించండి లేదా అభివృద్ధి మరియు ఉత్పాదక వాతావరణాల మధ్య కనీసం సమానమైన సమానత్వాన్ని నిర్ధారించడానికి ఇతర చర్యలు తీసుకోండి. అటువంటి సమానత్వం ఇప్పటికీ అసాధ్యమని పరిగణనలోకి తీసుకుంటుంది, మేము దాని కోసం ప్రయత్నిస్తున్నట్లు కూడా నటించము.

క్లోన్ చేయబడిన స్థానిక వాతావరణాన్ని సృష్టించడానికి బదులుగా, డార్క్‌లోని స్విచ్‌లు అభివృద్ధి వాతావరణాన్ని భర్తీ చేసే ఉత్పత్తిలో కొత్త శాండ్‌బాక్స్‌ను సృష్టిస్తాయి. భవిష్యత్తులో మేము అప్లికేషన్‌లోని ఇతర భాగాలను (ఉదా. ఇన్‌స్టంట్ డేటాబేస్ క్లోన్‌లు) శాండ్‌బాక్స్ చేయడానికి ప్లాన్ చేస్తాము, అయినప్పటికీ ఇది ప్రస్తుతం అంత ముఖ్యమైనదిగా కనిపించడం లేదు.

శాఖలు మరియు విస్తరణలు

సిస్టమ్‌లలోకి కొత్త కోడ్‌ని పరిచయం చేయడానికి ఇప్పుడు అనేక మార్గాలు ఉన్నాయి: git శాఖలు, విస్తరణ దశ మరియు ఫీచర్ టోగుల్స్. వారు వర్క్‌ఫ్లో యొక్క వివిధ భాగాలలో ఒకే సమస్యను పరిష్కరిస్తారు: ముందస్తు విస్తరణ దశలలో git, పాత కోడ్ నుండి కొత్తదానికి మార్పులో విస్తరణ మరియు కొత్త కోడ్ యొక్క నియంత్రిత విడుదల కోసం ఫీచర్ స్విచ్‌లు.

అత్యంత ప్రభావవంతమైన మార్గం ఫంక్షన్ స్విచ్‌లు (అదే సమయంలో అర్థం చేసుకోవడానికి మరియు ఉపయోగించడానికి సులభమైనది). వారితో మీరు ఇతర రెండు పద్ధతులను పూర్తిగా వదిలివేయవచ్చు. డిప్లాయ్‌మెంట్‌ను తీసివేయడానికి ఇది ప్రత్యేకంగా ఉపయోగపడుతుంది - ఏమైనప్పటికీ కోడ్‌ని ఎనేబుల్ చేయడానికి మేము ఫీచర్ స్విచ్‌లను ఉపయోగిస్తుంటే, సర్వర్‌లను కొత్త కోడ్‌కి తరలించే దశ అనవసరమైన రిస్క్‌లను మాత్రమే సృష్టిస్తుంది.

Git ఉపయోగించడం కష్టం, ముఖ్యంగా ప్రారంభకులకు, మరియు చాలా పరిమితంగా ఉంటుంది, కానీ ఇది అనుకూలమైన శాఖలను కలిగి ఉంటుంది. మేము git యొక్క అనేక లోపాలను పరిష్కరించాము. డార్క్ నిజ సమయంలో సవరించదగినది మరియు Google డాక్స్-శైలి సహకారాన్ని ప్రారంభిస్తుంది కాబట్టి మీరు కోడ్‌ని సమర్పించాల్సిన అవసరం లేదు మరియు మీరు తక్కువ తరచుగా రీబేస్ చేయవచ్చు మరియు విలీనం చేయవచ్చు.

ఫీచర్ స్విచ్‌లు సురక్షిత విస్తరణకు ప్రధానమైనవి. ఇన్‌స్టంట్ డిప్లాయ్‌మెంట్‌లతో కలిసి, సిస్టమ్‌ను తగ్గించే ఒక పెద్ద మార్పుకు పాల్పడకుండా, చిన్న, తక్కువ-రిస్క్ భాగాలుగా భావనలను త్వరగా పరీక్షించడానికి అవి మిమ్మల్ని అనుమతిస్తాయి.

సంస్కరణ

మేము ఫంక్షన్లు మరియు రకాలను మార్చడానికి సంస్కరణను ఉపయోగిస్తాము. మీరు ఒక ఫంక్షన్‌ని మార్చాలనుకుంటే, డార్క్ ఆ ఫంక్షన్‌కి కొత్త వెర్షన్‌ని క్రియేట్ చేస్తుంది. మీరు HTTP లేదా ఈవెంట్ హ్యాండ్లర్‌లోని స్విచ్‌ని ఉపయోగించి ఈ సంస్కరణకు కాల్ చేయవచ్చు. (ఇది కాల్ గ్రాఫ్‌లో డీప్‌గా ఉన్న ఫంక్షన్ అయితే, ప్రతి ఫంక్షన్‌కి సంబంధించిన కొత్త వెర్షన్ అలాగే క్రియేట్ చేయబడుతుంది. ఇది ఓవర్‌కిల్ లాగా అనిపించవచ్చు, కానీ మీరు వాటిని ఉపయోగిస్తే తప్ప ఫంక్షన్‌లు దారిలోకి రావు, కాబట్టి మీరు కూడా చేయలేరు గమనించండి.)

అదే కారణాల వల్ల, మేము వెర్షన్ రకాలు. మేము మా టైప్ సిస్టమ్ గురించి వివరంగా మాట్లాడాము మునుపటి పోస్ట్‌లో.

వెర్షన్ ఫంక్షన్లు మరియు రకాల ద్వారా, మీరు క్రమంగా మీ అప్లికేషన్‌లో మార్పులు చేయవచ్చు. మీ అప్లికేషన్‌లకు ఒకేసారి అన్ని మార్పులను చేయనవసరం లేకుండా, ప్రతి ఒక్క హ్యాండ్లర్ కొత్త వెర్షన్‌తో పని చేస్తుందో లేదో మీరు తనిఖీ చేయవచ్చు (కానీ మీకు కావాలంటే దీన్ని త్వరగా చేయడానికి మా వద్ద సాధనాలు ఉన్నాయి).

ఇప్పుడు జరుగుతున్నట్లుగా, అన్నింటినీ ఒకేసారి పూర్తిగా అమలు చేయడం కంటే ఇది చాలా సురక్షితమైనది.

కొత్త ప్యాకేజీ సంస్కరణలు మరియు ప్రామాణిక లైబ్రరీ

మీరు డార్క్‌లో ప్యాకేజీని అప్‌డేట్ చేసినప్పుడు, మేము మొత్తం కోడ్‌బేస్‌లోని ప్రతి ఫంక్షన్ లేదా టైప్ వినియోగాన్ని వెంటనే భర్తీ చేయము. ఇది సురక్షితం కాదు. కోడ్ ఉపయోగించిన అదే సంస్కరణను ఉపయోగించడం కొనసాగుతుంది మరియు మీరు స్విచ్‌లను ఉపయోగించి సందర్భానుసారంగా కొత్త వెర్షన్‌కు ఫంక్షన్‌లు మరియు రకాల వినియోగాన్ని అప్‌డేట్ చేస్తారు.

డార్క్ 50ఎంఎస్‌లలో కోడ్‌ని ఎలా అమలు చేస్తుంది
డార్క్‌లో ఆటోమేటిక్ ప్రాసెస్‌లో కొంత భాగం స్క్రీన్‌షాట్, డిక్ట్::గెట్ ఫంక్షన్ యొక్క రెండు వెర్షన్‌లను చూపుతుంది. Dict::get_v0 ఏదైనా రకాన్ని అందించింది (దీనిని మేము విస్మరిస్తున్నాము), మరియు Dict::get_v1 ఎంపిక రకాన్ని అందించింది.

మేము తరచుగా ప్రామాణిక లైబ్రరీ యొక్క కొత్త ఫీచర్‌ను అందిస్తాము మరియు పాత సంస్కరణలను మినహాయిస్తాము. కోడ్‌లో పాత సంస్కరణలు ఉన్న వినియోగదారులు ఇప్పటికీ వాటికి యాక్సెస్‌ను కలిగి ఉంటారు, కానీ కొత్త వినియోగదారులు వాటిని యాక్సెస్ చేయలేరు. ఫీచర్ స్విచ్‌లను ఉపయోగించి 1 దశలో పాత వెర్షన్‌ల నుండి కొత్త వాటికి వినియోగదారులను తరలించడానికి మేము సాధనాలను అందించబోతున్నాము.

డార్క్ ఒక ప్రత్యేక లక్షణాన్ని కూడా అందిస్తుంది: మేము మీ ఉత్పత్తి కోడ్‌ని అమలు చేస్తున్నందున, మార్పులను మీకు తెలియజేయడానికి కొత్త మరియు పాత ప్రశ్నల అవుట్‌పుట్‌ను సరిపోల్చడం ద్వారా కొత్త వెర్షన్‌లను మనమే పరీక్షించుకోవచ్చు. ఫలితంగా, తరచుగా గుడ్డిగా (లేదా విస్తృతమైన భద్రతా పరీక్ష అవసరం) చేసే ప్యాకేజీ నవీకరణలు చాలా తక్కువ ప్రమాదాన్ని కలిగిస్తాయి మరియు స్వయంచాలకంగా జరగవచ్చు.

డార్క్ యొక్క కొత్త వెర్షన్లు

పైథాన్ 2 నుండి పైథాన్ 3కి మార్పు ఒక దశాబ్దం పాటు కొనసాగింది మరియు ఇప్పటికీ సవాలుగా ఉంది. మేము నిరంతర డెలివరీ కోసం డార్క్‌ని రూపొందిస్తున్నందున, మేము ఈ భాషా మార్పులను పరిగణనలోకి తీసుకోవాలి.

మేము భాషలో చిన్న మార్పులు చేసినప్పుడు, మేము డార్క్ యొక్క కొత్త సంస్కరణను సృష్టిస్తాము. పాత కోడ్ డార్క్ పాత వెర్షన్‌లోనే ఉంది మరియు కొత్త కోడ్ కొత్త వెర్షన్‌లో ఉపయోగించబడుతుంది. డార్క్ కొత్త వెర్షన్‌కి అప్‌గ్రేడ్ చేయడానికి మీరు స్విచ్‌లు లేదా ఫీచర్ వెర్షన్‌లను ఉపయోగించవచ్చు.

డార్క్ ఇటీవలే ప్రవేశపెట్టబడినందున ఇది చాలా ఉపయోగకరంగా ఉంటుంది. భాష లేదా లైబ్రరీకి అనేక మార్పులు విఫలం కావచ్చు. ఇన్‌క్రిమెంటల్ లాంగ్వేజ్ వెర్షన్‌లు చిన్నపాటి అప్‌డేట్‌లను చేయడానికి మమ్మల్ని అనుమతిస్తుంది, అంటే మనం ఎక్కువ మంది యూజర్‌లను పొందే వరకు మేము మా సమయాన్ని వెచ్చించవచ్చు మరియు భాష గురించి అనేక నిర్ణయాలను వాయిదా వేయవచ్చు మరియు అందువల్ల మరింత సమాచారం ఉంటుంది.

డేటాబేస్ వలసలు

సురక్షిత డేటాబేస్ మైగ్రేషన్ కోసం ఉంది ప్రామాణిక సూత్రం:

  • కొత్త మరియు పాత ఫార్మాట్‌లకు మద్దతు ఇవ్వడానికి కోడ్‌ని తిరిగి వ్రాయండి
  • మొత్తం డేటాను కొత్త ఆకృతికి మార్చండి
  • పాత డేటా యాక్సెస్‌ని తీసివేయండి

ఫలితంగా, డేటాబేస్ మైగ్రేషన్ చాలా సమయం పడుతుంది మరియు చాలా వనరులు అవసరం. మరియు మేము గడువు ముగిసిన స్కీమాలతో ముగుస్తుంది, ఎందుకంటే టేబుల్ లేదా కాలమ్ పేరును పరిష్కరించడం వంటి సాధారణ పనులు కూడా విలువైనవి కావు.

డార్క్ సమర్థవంతమైన డేటాబేస్ మైగ్రేషన్ ప్లాట్‌ఫారమ్‌ను కలిగి ఉంది, ఇది (మేము ఆశిస్తున్నాము) ప్రక్రియను చాలా సులభతరం చేస్తుంది కాబట్టి మీరు దాని గురించి భయపడరు. డార్క్‌లోని అన్ని డేటా స్టోర్‌లు (కీ-వాల్యూ స్టోర్‌లు లేదా పెర్సిస్టెంట్ హ్యాష్ టేబుల్‌లు) ఒక రకాన్ని కలిగి ఉంటాయి. డేటా స్టోర్‌ను మైగ్రేట్ చేయడానికి, మీరు రెండు రకాల మధ్య విలువలను మార్చడానికి కొత్త రకాన్ని మరియు రోల్‌బ్యాక్ మరియు రోల్‌ఫార్వర్డ్ ఫంక్షన్‌ను కేటాయించండి.

డార్క్‌లోని డేటా స్టోర్‌లు వెర్షన్ వేరియబుల్ పేర్ల ద్వారా యాక్సెస్ చేయబడతాయి. ఉదాహరణకు, యూజర్‌ల డేటా స్టోర్‌కు మొదట యూజర్‌లు-v0 అని పేరు పెట్టబడుతుంది. వేరే రకంతో కొత్త వెర్షన్ సృష్టించబడినప్పుడు, పేరు యూజర్లు-v1కి మారుతుంది. యూజర్స్-v0 ద్వారా డేటా సేవ్ చేయబడి, మీరు యూజర్స్-v1 ద్వారా యాక్సెస్ చేస్తే, రోల్ ఫార్వర్డ్ ఫంక్షన్ వర్తించబడుతుంది. యూజర్‌లు-v1 ద్వారా డేటా సేవ్ చేయబడి, మీరు యూజర్‌లు-v0 ద్వారా యాక్సెస్ చేస్తే, రోల్‌బ్యాక్ ఫంక్షన్ వర్తించబడుతుంది.

డార్క్ 50ఎంఎస్‌లలో కోడ్‌ని ఎలా అమలు చేస్తుంది
డేటాబేస్ మైగ్రేషన్ స్క్రీన్ పాత డేటాబేస్ ఫీల్డ్ పేర్లు, రోల్‌ఓవర్ మరియు రోల్‌బ్యాక్ ఎక్స్‌ప్రెషన్‌లు మరియు మైగ్రేషన్‌ని ఎనేబుల్ చేయడానికి సూచనలను చూపుతుంది.

యూజర్‌లు-v0 నుండి యూజర్‌లు-v1కి కాల్‌లను రూట్ చేయడానికి ఫీచర్ స్విచ్‌లను ఉపయోగించండి. ప్రమాదాన్ని తగ్గించడానికి ఒక్కోసారి ఒక HTTP హ్యాండ్లర్‌ను ఇలా చేయవచ్చు మరియు స్విచ్‌లు ఒక్కో వినియోగదారు ప్రాతిపదికన పని చేస్తాయి కాబట్టి మీరు ఊహించిన విధంగా ప్రతిదీ పని చేస్తుందని ధృవీకరించవచ్చు. యూజర్లు-v0 మిగిలి లేనప్పుడు, డార్క్ బ్యాక్‌గ్రౌండ్‌లో మిగిలిన డేటా మొత్తాన్ని పాత ఫార్మాట్ నుండి కొత్తదానికి మారుస్తుంది. మీరు దానిని కూడా గమనించలేరు.

పరీక్ష

చీకటి ఉంది స్టాటిక్ టైపింగ్‌తో ఫంక్షనల్ ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు మార్పులేని విలువలు, కాబట్టి డైనమిక్‌గా టైప్ చేసిన ఆబ్జెక్ట్-ఓరియెంటెడ్ లాంగ్వేజెస్‌తో పోలిస్తే దాని టెస్టింగ్ ఉపరితలం చాలా తక్కువగా ఉంటుంది. కానీ మీరు ఇంకా పరీక్షించవలసి ఉంటుంది.
డార్క్‌లో, మీరు ఎడిట్ చేస్తున్న కోడ్ కోసం ఎడిటర్ స్వయంచాలకంగా యూనిట్ పరీక్షలను బ్యాక్‌గ్రౌండ్‌లో రన్ చేస్తుంది మరియు డిఫాల్ట్‌గా అన్ని ఫీచర్ స్విచ్‌ల కోసం ఆ పరీక్షలను అమలు చేస్తుంది. భవిష్యత్తులో, బగ్‌లను కనుగొనడానికి స్వయంచాలకంగా కోడ్‌ను ఫజ్ చేయడానికి స్టాటిక్ రకాలను ఉపయోగించాలనుకుంటున్నాము.

అదనంగా, డార్క్ మీ ఇన్‌ఫ్రాస్ట్రక్చర్‌ను ఉత్పత్తిలో నడుపుతుంది, ఇది కొత్త అవకాశాలను తెరుస్తుంది. మేము HTTP అభ్యర్థనలను డార్క్ ఫ్రేమ్‌వర్క్‌లో స్వయంచాలకంగా సేవ్ చేస్తాము (మేము ప్రస్తుతానికి అన్ని అభ్యర్థనలను సేవ్ చేస్తున్నాము, కానీ మేము పొందేందుకు మారాలనుకుంటున్నాము). మేము వాటికి వ్యతిరేకంగా కొత్త కోడ్‌ని పరీక్షిస్తాము మరియు యూనిట్ పరీక్షలను అమలు చేస్తాము మరియు మీకు కావాలంటే, మీరు ఆసక్తికరమైన ప్రశ్నలను సులభంగా యూనిట్ పరీక్షలుగా మార్చవచ్చు.

మనం ఏమి వదిలించుకున్నాము?

మాకు విస్తరణ లేదు, కానీ మాకు ఫీచర్ స్విచ్‌లు ఉన్నాయి కాబట్టి, విస్తరణ పైప్‌లైన్‌లో 60% మిగిలి ఉంది. మాకు గిట్ బ్రాంచ్‌లు లేదా పుల్ రిక్వెస్ట్‌లు అవసరం లేదు, బ్యాకెండ్ వనరులు మరియు కంటైనర్‌లను నిర్మించడం, వనరులు మరియు కంటైనర్‌లను రిజిస్ట్రీలకు నెట్టడం లేదా కుబెర్నెట్‌లకు విస్తరణ దశలు.

డార్క్ 50ఎంఎస్‌లలో కోడ్‌ని ఎలా అమలు చేస్తుంది
ప్రామాణిక నిరంతర డెలివరీ పైప్‌లైన్ (ఎడమ) మరియు చీకటి నిరంతర డెలివరీ (కుడి) పోలిక డార్క్ డెలివరీ 6 దశలు మరియు ఒక సైకిల్‌ను కలిగి ఉంటుంది, అయితే సాంప్రదాయ వెర్షన్‌లో 35 దశలు మరియు 3 సైకిళ్లు ఉంటాయి.

డార్క్‌లో, విస్తరణలో 6 దశలు మరియు 1 చక్రం (అనేక సార్లు పునరావృతమయ్యే దశలు) మాత్రమే ఉంటాయి, అయితే ఆధునిక నిరంతర డెలివరీ పైప్‌లైన్ 35 దశలు మరియు 3 చక్రాలను కలిగి ఉంటుంది. చీకటిలో, మీరు చూడకుండానే పరీక్షలు స్వయంచాలకంగా నడుస్తాయి; డిపెండెన్సీలు స్వయంచాలకంగా వ్యవస్థాపించబడతాయి; git లేదా Githubకి సంబంధించిన ప్రతిదీ ఇకపై అవసరం లేదు; డాకర్ కంటైనర్‌లను నిర్మించడం, పరీక్షించడం మరియు రవాణా చేయడం అవసరం లేదు; కుబెర్నెట్‌లకు విస్తరణ ఇకపై అవసరం లేదు.

చీకటిలో మిగిలిన దశలు కూడా సులభతరం అయ్యాయి. ఫీచర్ టోగుల్‌లను ఒకే చర్యతో నియంత్రించవచ్చు కాబట్టి, పాత కోడ్‌ను తీసివేయడానికి మొత్తం విస్తరణ పైప్‌లైన్‌ని రెండవసారి చూడవలసిన అవసరం లేదు.

మేము సాధ్యమైనంత ఉత్తమంగా కోడ్ డెలివరీని సరళీకృతం చేసాము, నిరంతర డెలివరీ యొక్క సమయాన్ని మరియు ప్రమాదాలను తగ్గించాము. మేము ప్యాకేజీలు, డేటాబేస్ మైగ్రేషన్‌లు, టెస్టింగ్, వెర్షన్ నియంత్రణ, డిపెండెన్సీ ఇన్‌స్టాలేషన్, డెవలప్‌మెంట్ మరియు ప్రొడక్షన్ ఎన్విరాన్‌మెంట్‌ల మధ్య సమానత్వం మరియు వేగవంతమైన మరియు సురక్షితమైన భాషా వెర్షన్ అప్‌గ్రేడ్‌లను కూడా చాలా సులభతరం చేసాము.

దీని గురించిన ప్రశ్నలకు నేను సమాధానం ఇస్తాను హ్యాకర్‌న్యూస్.

డార్క్ పరికరం గురించి మరింత తెలుసుకోవడానికి, చదవండి డార్క్ గురించి వ్యాసం, ట్విట్టర్లో మమ్మల్ని అనుసరించండి (లేదా వద్ద నాకు) లేదా బీటా కోసం సైన్ అప్ చేయండి మరియు రాబోయే పోస్ట్‌ల గురించి తెలియజేయండి. మీరు సెప్టెంబర్‌లో స్ట్రేంజ్‌లూప్‌కి వెళుతున్నట్లయితే, మా లాంచీకి రండి.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి