మోనోర్పోజిటరీలు: దయచేసి, తప్పక

మోనోర్పోజిటరీలు: దయచేసి, తప్పక

కోర్సు విద్యార్థుల కోసం తయారు చేసిన వ్యాసం యొక్క అనువాదం "DevOps అభ్యాసాలు మరియు సాధనాలు" OTUS ఎడ్యుకేషనల్ ప్రాజెక్ట్‌లో.

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

మనం దీని గురించి ఎందుకు మాట్లాడుతున్నాం?

మాట్ క్లైన్ వ్యాసం రాశారు "మోనోరెపోస్: దయచేసి వద్దు!"  (అనువాదకుడి గమనిక: హబ్రేపై అనువాదం "మోనోర్పోజిటరీలు: దయచేసి చేయవద్దు") నాకు మాట్ అంటే ఇష్టం, అతను చాలా తెలివైనవాడని నేను అనుకుంటున్నాను మరియు మీరు అతని అభిప్రాయాన్ని చదవాలి. అతను మొదట పోల్‌ను ట్విట్టర్‌లో పోస్ట్ చేశాడు:

మోనోర్పోజిటరీలు: దయచేసి, తప్పక

అనువాదం:
ఈ నూతన సంవత్సర రోజున, మోనోర్‌పోజిటరీలు ఎంత హాస్యాస్పదంగా ఉన్నాయో నేను వాదించబోతున్నాను. 2019 ప్రశాంతంగా ప్రారంభమైంది. దీని స్ఫూర్తితో, నేను మీకు సర్వే అందిస్తున్నాను. పెద్ద మతోన్మాదులు ఎవరు? మద్దతుదారులు:
- మోనోరెపో
- రస్ట్
- సరికాని పోల్ / రెండూ

నా ప్రతిస్పందన ఏమిటంటే, "నేను అక్షరాలా ఆ వ్యక్తులలో ఇద్దరూ." రస్ట్ ఎలా డ్రగ్ అని మాట్లాడే బదులు, అతను మోనోర్‌పోజిటరీల గురించి తప్పుగా ఎందుకు భావిస్తున్నాడో చూద్దాం. మీ గురించి కొంచెం. నేను చెఫ్ సాఫ్ట్‌వేర్ CTOని. మాకు దాదాపు 100 మంది ఇంజనీర్లు ఉన్నారు, 11-12 సంవత్సరాల క్రితం కోడ్ బేస్ మరియు 4 ప్రధాన ఉత్పత్తులు ఉన్నాయి. ఈ కోడ్‌లో కొంత పాలీరిపోజిటరీ (నా ప్రారంభ స్థానం), కొన్ని మోనోర్‌పోజిటరీ (నా ప్రస్తుత స్థానం)లో ఉన్నాయి.

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

నేను మాట్ పాయింట్ యొక్క మొదటి భాగాన్ని అంగీకరిస్తున్నాను:

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

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

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

  • కోడ్‌బేస్ స్థూలంగా ఉంది - నాకు ఈ వ్యర్థాలు అవసరం లేదు.
  • నేను అవసరం లేని ఈ వ్యర్థ పదార్థాలన్నింటినీ పరీక్షించవలసి ఉంటుంది కాబట్టి పరీక్షించడం చాలా కష్టం.
  • బాహ్య డిపెండెన్సీలతో పనిచేయడం చాలా కష్టం.
  • నాకు నా స్వంత వర్చువల్ వెర్షన్ నియంత్రణ వ్యవస్థలు కావాలి.

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

ఇది కమ్యూనికేషన్‌ను రేకెత్తిస్తుంది మరియు సమస్యలను చూపుతుంది

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

ఆర్కిటెక్చర్ మరింత క్లిష్టంగా మారడంతో, ఒక బృందం దానిని ఒంటరిగా నిర్వహించదు. చాలా కొద్ది మంది ఇంజనీర్లు మొత్తం వ్యవస్థను తమ తలలో కలిగి ఉంటారు. మీరు B, C మరియు D బృందాలు ఉపయోగించే భాగస్వామ్య భాగం Aని నిర్వహిస్తున్నారని అనుకుందాం. టీమ్ A రీఫ్యాక్టరింగ్ చేస్తోంది, APIని మెరుగుపరుస్తుంది మరియు అంతర్గత అమలును కూడా మారుస్తోంది. ఫలితంగా, మార్పులు వెనుకకు అనుకూలంగా లేవు. మీకు ఏ సలహా ఉంది?

  • పాత APIని ఉపయోగించిన అన్ని స్థలాలను కనుగొనండి.
  • కొత్త APIని ఉపయోగించలేని ప్రదేశాలు ఉన్నాయా?
  • మీరు ఇతర భాగాలు విచ్ఛిన్నం కాలేదని నిర్ధారించుకోవడానికి వాటిని సరిచేసి పరీక్షించగలరా?
  • ఈ బృందాలు ప్రస్తుతం మీ మార్పులను పరీక్షించగలవా?

దయచేసి ఈ ప్రశ్నలు రిపోజిటరీ రకం నుండి స్వతంత్రంగా ఉన్నాయని గమనించండి. మీరు B, C మరియు D జట్లను కనుగొనవలసి ఉంటుంది. మీరు వారితో మాట్లాడాలి, సమయాన్ని కనుగొనాలి, వారి ప్రాధాన్యతలను అర్థం చేసుకోవాలి. కనీసం మీరు చేస్తారని మేము ఆశిస్తున్నాము.

ఎవరూ దీన్ని నిజంగా చేయాలని కోరుకోరు. ఇది కేవలం హేయమైన APIని పరిష్కరించడం కంటే చాలా తక్కువ వినోదం. అదంతా మానవత్వం మరియు గజిబిజి. పాలీరెపోజిటరీలో, మీరు కేవలం మార్పులు చేయవచ్చు, సమీక్ష కోసం ఆ కాంపోనెంట్‌పై పని చేసే వ్యక్తులకు (బహుశా B, C లేదా D కాదు) ఇచ్చి, ఆపై కొనసాగండి. B, C మరియు D బృందాలు ప్రస్తుతానికి వాటి ప్రస్తుత వెర్షన్‌తో ఉండగలవు. వారు మీ మేధావిని గుర్తించినప్పుడు వారు పునరుద్ధరించబడతారు!

మోనోర్‌పోజిటరీలో, బాధ్యత డిఫాల్ట్‌గా మార్చబడుతుంది. A బృందం వారి భాగాన్ని మార్చుకుంటుంది మరియు జాగ్రత్తగా లేకపోతే, వెంటనే B, C మరియు Dలను విచ్ఛిన్నం చేస్తుంది. ఇది A యొక్క ఇంటి వద్ద B, C మరియు D చూపడానికి దారి తీస్తుంది, బృందం A అసెంబ్లీని ఎందుకు విచ్ఛిన్నం చేసిందో ఆశ్చర్యానికి గురి చేస్తుంది. ఎగువ నా జాబితాను వారు దాటవేయలేరని ఇది Aకి బోధిస్తుంది. వారు ఏమి చేయబోతున్నారనే దాని గురించి వారు మాట్లాడాలి. B, C మరియు D కదలగలరా? B మరియు C చేయగలిగితే, కానీ D పాత అల్గారిథమ్ ప్రవర్తన యొక్క దుష్ప్రభావానికి దగ్గరి సంబంధం కలిగి ఉంటే?

అప్పుడు మనం ఈ పరిస్థితి నుండి ఎలా బయటపడతాము అనే దాని గురించి మాట్లాడాలి:

  1. బహుళ అంతర్గత APIలకు మద్దతు, మరియు D ఉపయోగించడాన్ని ఆపివేసే వరకు పాత అల్గోరిథం నిలిపివేయబడినట్లు గుర్తు చేస్తుంది.
  2. బహుళ విడుదల సంస్కరణలకు మద్దతు, పాత ఇంటర్‌ఫేస్‌తో ఒకటి, కొత్తది.
  3. B, C మరియు D ఏకకాలంలో ఆమోదించే వరకు A యొక్క మార్పుల విడుదలను ఆలస్యం చేయండి.

మేము 1, అనేక APIలను ఎంచుకున్నామని అనుకుందాం. ఈ సందర్భంలో మనకు రెండు కోడ్ ముక్కలు ఉన్నాయి. పాత మరియు కొత్త. కొన్ని పరిస్థితులలో చాలా సౌకర్యవంతంగా ఉంటుంది. మేము పాత కోడ్‌ని తిరిగి తనిఖీ చేస్తాము, దానిని నిలిపివేయబడినట్లు గుర్తించాము మరియు D బృందంతో తీసివేత షెడ్యూల్‌ను అంగీకరిస్తాము. పాలీ మరియు మోనో రిపోజిటరీలకు తప్పనిసరిగా సమానంగా ఉంటుంది.

బహుళ సంస్కరణలను విడుదల చేయడానికి, మాకు ఒక శాఖ అవసరం. ఇప్పుడు మనకు రెండు భాగాలు ఉన్నాయి - A1 మరియు A2. B మరియు C జట్లు A2ని ఉపయోగిస్తాయి మరియు D A1ని ఉపయోగిస్తాయి. D ముందుకు వెళ్లడానికి ముందు భద్రతా అప్‌డేట్‌లు మరియు ఇతర బగ్ పరిష్కారాలు అవసరం కావచ్చు కాబట్టి మాకు ప్రతి భాగం విడుదలకు సిద్ధంగా ఉండాలి. పాలీరెపోజిటరీలో, మనం దీన్ని మంచిగా భావించే దీర్ఘకాల శాఖలో దాచవచ్చు. మోనోర్పోజిటరీలో, మేము కొత్త మాడ్యూల్‌లో కోడ్‌ని సృష్టించమని బలవంతం చేస్తాము. టీమ్ D ఇప్పటికీ "పాత" కాంపోనెంట్‌కు మార్పులు చేయాల్సి ఉంటుంది. మేము ఇక్కడ చెల్లిస్తున్న ధరను ప్రతి ఒక్కరూ చూడగలరు - ఇప్పుడు మా వద్ద రెండు రెట్లు ఎక్కువ కోడ్ ఉంది మరియు A1 మరియు A2కి వర్తించే ఏవైనా బగ్ పరిష్కారాలు తప్పనిసరిగా రెండింటికి వర్తిస్తాయి. పాలిరిపోజిటరీలో బ్రాంచ్ విధానంతో, ఇది చెర్రీ-పిక్ వెనుక దాగి ఉంటుంది. డూప్లికేషన్ లేనందున ఖర్చు తక్కువగా ఉంటుందని మేము భావిస్తున్నాము. ఆచరణాత్మక దృక్కోణం నుండి, ధర ఒకే విధంగా ఉంటుంది: మీరు వాటిలో ఒకదానిని తొలగించే వరకు మీరు రెండు ఒకేలాంటి కోడ్‌బేస్‌లను నిర్మిస్తారు, విడుదల చేస్తారు మరియు నిర్వహిస్తారు. తేడా ఏమిటంటే మోనోరెపోజిటరీతో ఈ నొప్పి ప్రత్యక్షంగా మరియు కనిపిస్తుంది. ఇది మరింత అధ్వాన్నంగా ఉంది మరియు ఇది మంచిది.

చివరగా, మేము మూడవ పాయింట్‌కి వచ్చాము. విడుదల ఆలస్యం. A చేసిన మార్పులు టీమ్ A జీవితాలను మెరుగుపరిచే అవకాశం ఉంది. ముఖ్యమైనది, కానీ అత్యవసరం కాదు. మనం ఆలస్యం చేయగలమా? పాలీరెపోజిటరీలో, కళాకృతిని పిన్ చేయడానికి మేము దీన్ని పుష్ చేస్తాము. అయితే మేము దీన్ని టీమ్ Dకి చెబుతున్నాము. మీరు పట్టుకునే వరకు పాత వెర్షన్‌లోనే ఉండండి! ఇది పిరికివాడిని ఆడటానికి మిమ్మల్ని ఏర్పాటు చేస్తుంది. టీమ్ D వారి కాంపోనెంట్‌పై పని చేస్తూనే ఉంది, టీమ్ D చాలా కాలం చెల్లిన వెర్షన్‌ను ఉపయోగిస్తోందనే వాస్తవాన్ని విస్మరించింది (అది టీమ్ D యొక్క సమస్య, వారు తెలివితక్కువవారు). ఇంతలో, టీమ్ D కోడ్ స్థిరత్వం పట్ల టీమ్ A యొక్క అజాగ్రత్త వైఖరి గురించి పేలవంగా మాట్లాడుతుంది, వారు దాని గురించి మాట్లాడితే. నెలలు గడుస్తున్నాయి. చివరగా, టీమ్ D అప్‌డేట్ చేసే అవకాశాన్ని చూడాలని నిర్ణయించుకుంటుంది, అయితే A మాత్రమే మరిన్ని మార్పులను కలిగి ఉంది. టీమ్ A ఎప్పుడు లేదా ఎలా డిని విచ్ఛిన్నం చేశారో గుర్తుపట్టదు. అప్‌గ్రేడ్ చేయడం మరింత బాధాకరం మరియు ఎక్కువ సమయం పడుతుంది. ఇది ప్రాధాన్యత స్టాక్ నుండి మరింత దిగువకు పంపుతుంది. A లో భద్రతా సమస్య ఉన్న రోజు వరకు, అది ఒక శాఖను తయారు చేయమని బలవంతం చేస్తుంది. టీమ్ A సమయానికి తిరిగి వెళ్లాలి, D స్థిరంగా ఉన్నప్పుడు ఒక పాయింట్‌ను కనుగొని, అక్కడ సమస్యను పరిష్కరించి, దానిని విడుదలకు సిద్ధం చేయాలి. ఇది ప్రజలు చేసే వాస్తవ ఎంపిక, మరియు ఇది చాలా చెత్తగా ఉంది. మనం ఒకరినొకరు విస్మరించగలిగినంత కాలం ఇది టీమ్ A మరియు టీమ్ D రెండింటికీ మంచిది.

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

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

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

నమోదు చేసుకున్న వినియోగదారులు మాత్రమే సర్వేలో పాల్గొనగలరు. సైన్ ఇన్ చేయండిదయచేసి.

అతి పెద్ద మతోన్మాదులు ఎవరు? మద్దతుదారులు:

  • మోనోరెపో

  • రస్ట్

  • సరికాని పోల్ / రెండూ

33 మంది వినియోగదారులు ఓటు వేశారు. 13 మంది వినియోగదారులు దూరంగా ఉన్నారు.

మూలం: www.habr.com

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