టెర్రాఫార్మ్ నుండి క్లౌడ్‌ఫార్మేషన్‌కి మారారు - మరియు చింతిస్తున్నాము

ఇన్‌ఫ్రాస్ట్రక్చర్‌ని పునరావృతమయ్యే టెక్స్ట్ ఫార్మాట్‌లో కోడ్‌గా సూచించడం అనేది ఎలుకలతో ఫిదా చేయాల్సిన అవసరం లేని సిస్టమ్‌లకు ఒక సాధారణ ఉత్తమ పద్ధతి. ఈ అభ్యాసానికి ఒక పేరు ఉంది - కోడ్‌గా మౌలిక సదుపాయాలు, మరియు ఇప్పటివరకు దీన్ని అమలు చేయడానికి రెండు ప్రసిద్ధ సాధనాలు ఉన్నాయి, ముఖ్యంగా AWSలో: Terraform и క్లౌడ్ ఫార్మేషన్.

టెర్రాఫార్మ్ నుండి క్లౌడ్‌ఫార్మేషన్‌కి మారారు - మరియు చింతిస్తున్నాము
టెర్రాఫార్మ్ మరియు క్లౌడ్ ఫార్మేషన్‌తో అనుభవాన్ని పోల్చడం

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

టెర్రాఫార్మ్ హారిబుల్

బీటా సాఫ్ట్‌వేర్

టెర్రాఫార్మ్ ఇంకా వెర్షన్ 1.0ని కూడా విడుదల చేయలేదు, దీనిని ఉపయోగించకపోవడానికి ఇది మంచి కారణం. నేను మొదటిసారి ప్రయత్నించినప్పటి నుండి ఇది చాలా మారిపోయింది, కానీ అప్పటికి terraform apply తరచుగా అనేక నవీకరణల తర్వాత లేదా కొన్ని సంవత్సరాల ఉపయోగం తర్వాత విచ్ఛిన్నం అవుతుంది. "ఇప్పుడు ప్రతిదీ భిన్నంగా ఉంది" అని నేను చెబుతాను, కానీ ... అందరూ చెప్పేది అదే, కాదా? మునుపటి సంస్కరణలకు అనుకూలంగా లేని మార్పులు ఉన్నాయి, అయినప్పటికీ అవి సముచితమైనవి మరియు రిసోర్స్ స్టోర్‌ల యొక్క సింటాక్స్ మరియు సంగ్రహణలు ఇప్పుడు మనకు అవసరమైనవిగా కూడా అనిపిస్తుంది. వాయిద్యం నిజంగా మెరుగుపడినట్లు కనిపిస్తోంది, కానీ... :-0

మరోవైపు, వెనుకబడిన అనుకూలతను నిర్వహించడంలో AWS మంచి పని చేసింది. వారి సేవలు తరచుగా సంస్థలో క్షుణ్ణంగా పరీక్షించబడటం మరియు ఆ తర్వాత మాత్రమే పేరు మార్చబడి, ప్రచురించబడటం దీనికి కారణం కావచ్చు. కాబట్టి "వారు కష్టపడి ప్రయత్నించారు" అనేది ఒక చిన్నమాట. AWS వలె వైవిధ్యమైన మరియు సంక్లిష్టమైన సిస్టమ్ కోసం APIలతో వెనుకబడిన అనుకూలతను నిర్వహించడం చాలా కష్టం. ఎంత విరివిగా వాడబడుతున్న పబ్లిక్ APIలను మెయింటెయిన్ చేయవలసి వచ్చిందో, ఇన్ని సంవత్సరాలుగా అలా చేయడం ఎంత కష్టమో అర్థం చేసుకోవాలి. కానీ CloudFormation యొక్క ప్రవర్తన, నా జ్ఞాపకార్థం, సంవత్సరాలుగా ఎన్నడూ మారలేదు.

కాలిని కలవండి... అది బుల్లెట్

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

టెర్రాఫార్మ్ గ్రేట్

అసంపూర్ణ రాష్ట్రాల నుండి రికవరీ

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

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

డాక్యుమెంట్ స్థితికి స్పష్టమైన మార్పులు

“సరే, లోడ్ బ్యాలెన్సర్, మీరు మారుతున్నారు. కానీ ఎలా?"

—ఆత్రుతగా ఉన్న ఇంజనీర్, “అంగీకరించు” బటన్‌ను నొక్కడానికి సిద్ధంగా ఉన్నారు.

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

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

వశ్యత

సాఫ్ట్‌వేర్‌ను వెనుకకు వ్రాయండి.

సూటిగా చెప్పాలంటే, దీర్ఘకాలిక సాఫ్ట్‌వేర్ యొక్క అతి ముఖ్యమైన లక్షణం మార్పులకు అనుగుణంగా ఉండే సామర్ధ్యం. ఏదైనా సాఫ్ట్‌వేర్‌ని వెనుకకు వ్రాయండి. చాలా తరచుగా నేను "సాధారణ" సేవను తీసుకోవడం ద్వారా తప్పులు చేసాను, ఆపై ప్రతిదీ ఒకే క్లౌడ్‌ఫార్మేషన్ లేదా టెర్రాఫార్మ్ స్టాక్‌లో క్రామ్ చేయడం ప్రారంభించాను. మరియు వాస్తవానికి, నెలల తర్వాత నేను ప్రతిదీ తప్పుగా అర్థం చేసుకున్నానని వెల్లడైంది మరియు సేవ నిజానికి సులభం కాదు! మరియు ఇప్పుడు నేను ఏదో ఒకవిధంగా పెద్ద స్టాక్‌ను చిన్న భాగాలుగా విభజించాలి. మీరు క్లౌడ్‌ఫార్మేషన్‌తో పని చేస్తున్నప్పుడు, ఇది ముందుగా ఉన్న స్టాక్‌ను పునఃసృష్టించడం ద్వారా మాత్రమే చేయబడుతుంది మరియు నా డేటాబేస్‌లతో నేను దీన్ని చేయను. టెర్రాఫార్మ్, మరోవైపు, స్టాక్‌ను విడదీయడం మరియు దానిని మరింత అర్థమయ్యే చిన్న భాగాలుగా విభజించడం సాధ్యం చేసింది.

gitలో మాడ్యూల్స్

క్లౌడ్‌ఫార్మేషన్ కోడ్‌ని షేర్ చేయడం కంటే టెర్రాఫార్మ్ కోడ్‌ను బహుళ స్టాక్‌లలో షేర్ చేయడం చాలా సులభం. Terraformతో, మీరు మీ కోడ్‌ను git రిపోజిటరీలో ఉంచవచ్చు మరియు సెమాంటిక్ వెర్షన్ నియంత్రణను ఉపయోగించి దాన్ని యాక్సెస్ చేయవచ్చు. ఈ రిపోజిటరీకి యాక్సెస్ ఉన్న ఎవరైనా షేర్ చేసిన కోడ్‌ని మళ్లీ ఉపయోగించుకోవచ్చు. CloudFormation యొక్క సమానమైనది S3, కానీ దీనికి అదే ప్రయోజనాలు లేవు మరియు S3కి అనుకూలంగా మనం gitని వదిలివేయడానికి ఎటువంటి కారణం లేదు.

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

కోడ్‌గా కార్యకలాపాలు

"దీన్ని స్క్రిప్ట్ చేసి ఓకే చేద్దాం."

టెర్రాఫార్మ్ సైకిల్‌ను కనిపెట్టడానికి 3 సంవత్సరాల ముందు ఇంజనీర్.

సాఫ్ట్‌వేర్ డెవలప్‌మెంట్ విషయానికి వస్తే, గో లేదా జావా ప్రోగ్రామ్ కేవలం కోడ్ కాదు.

టెర్రాఫార్మ్ నుండి క్లౌడ్‌ఫార్మేషన్‌కి మారారు - మరియు చింతిస్తున్నాము
కోడ్‌గా కోడ్

ఇది పనిచేసే మౌలిక సదుపాయాలు కూడా ఉన్నాయి.

టెర్రాఫార్మ్ నుండి క్లౌడ్‌ఫార్మేషన్‌కి మారారు - మరియు చింతిస్తున్నాము
కోడ్‌గా మౌలిక సదుపాయాలు

అయితే ఆమె ఎక్కడిది? దీన్ని ఎలా పర్యవేక్షించాలి? మీ కోడ్ ఎక్కడ నివసిస్తుంది? డెవలపర్‌లకు యాక్సెస్ అనుమతి అవసరమా?

టెర్రాఫార్మ్ నుండి క్లౌడ్‌ఫార్మేషన్‌కి మారారు - మరియు చింతిస్తున్నాము
కోడ్ వలె కార్యకలాపాలు

సాఫ్ట్‌వేర్ డెవలపర్‌గా ఉండటం అంటే కోడ్ రాయడం మాత్రమే కాదు.

AWS ఒక్కటే కాదు: మీరు బహుశా ఇతర ప్రొవైడర్‌లను ఉపయోగించవచ్చు. SignalFx, PagerDuty లేదా Github. మీరు CI/CD కోసం అంతర్గత జెంకిన్స్ సర్వర్ లేదా పర్యవేక్షణ కోసం అంతర్గత గ్రాఫానా డాష్‌బోర్డ్‌ని కలిగి ఉండవచ్చు. ఇన్‌ఫ్రా యాజ్ కోడ్ వివిధ కారణాల కోసం ఎంపిక చేయబడింది మరియు సాఫ్ట్‌వేర్‌కు సంబంధించిన ప్రతిదానికీ ప్రతి ఒక్కటి సమానంగా ముఖ్యమైనది.

నేను ట్విచ్‌లో పనిచేసినప్పుడు, మేము Amazon యొక్క మిక్స్‌డ్ ఎంబెడెడ్ మరియు AWS సిస్టమ్‌లలో సేవలను వేగవంతం చేసాము. మేము అనేక మైక్రోసర్వీస్‌లకు మద్దతు ఇచ్చాము మరియు కార్యాచరణ ఖర్చులను పెంచాము. చర్చలు ఇలా సాగాయి:

  • Я: పాపం, ఒక మైక్రోసర్వీస్‌ని ఓవర్‌లాక్ చేయడానికి ఇది చాలా సంజ్ఞలు. AWS ఖాతాను సృష్టించడానికి నేను ఈ చెత్తను ఉపయోగించాలి (మేము 2 ఖాతాలకు వెళ్లాము సూక్ష్మసేవ), ఆపై ఇది హెచ్చరికలను సెటప్ చేయడానికి, ఇది కోడ్ రిపోజిటరీ కోసం మరియు ఇది ఇమెయిల్ జాబితా కోసం, ఆపై ఇది...
  • దారి: స్క్రిప్ట్ చేసి ఓకే చేద్దాం.
  • Я: సరే, అయితే స్క్రిప్ట్‌నే మారుతుంది. ఈ అంతర్నిర్మిత అమెజాన్ గిజ్మోస్ అన్నీ తాజాగా ఉన్నాయని తనిఖీ చేయడానికి మాకు ఒక మార్గం అవసరం.
  • దారి: వినడానికి బాగుంది. మరియు మేము దీని కోసం స్క్రిప్ట్ వ్రాస్తాము.
  • Я: గ్రేట్! మరియు స్క్రిప్ట్ ఇప్పటికీ పారామితులను సెట్ చేయాల్సి ఉంటుంది. అతను వాటిని అంగీకరిస్తాడా?
  • దారి: అతను ఎక్కడికి వెళితే అక్కడికి తీసుకెళ్లనివ్వండి!
  • Я: ప్రక్రియ మారవచ్చు మరియు వెనుకబడిన అనుకూలత కోల్పోతుంది. ఒక రకమైన సెమాంటిక్ వెర్షన్ నియంత్రణ అవసరం.
  • దారి: గొప్ప ఆలోచన!
  • Я: వినియోగదారు ఇంటర్‌ఫేస్ లోపల సాధనాలను మానవీయంగా మార్చవచ్చు. దీన్ని తనిఖీ చేయడానికి మరియు పరిష్కరించడానికి మాకు ఒక మార్గం అవసరం.

…3 సంవత్సరాల తరువాత:

  • దారి: మరియు మాకు టెర్రాఫాం వచ్చింది.

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

క్లౌడ్‌ఫార్మేషన్ లాంబ్డా vs జిట్ మాడ్యూల్స్ టెర్రాఫార్మ్

లాంబ్డా అనేది కస్టమ్ లాజిక్ సమస్యకు క్లౌడ్‌ఫార్మేషన్ యొక్క పరిష్కారం. లాంబ్డాతో మీరు చేయవచ్చు మాక్రోలను సృష్టించండి లేదా వినియోగదారు వనరు. ఈ విధానం టెర్రాఫార్మ్ యొక్క జిట్ మాడ్యూల్స్ యొక్క సెమాంటిక్ వెర్షన్‌లో లేని అదనపు సంక్లిష్టతలను పరిచయం చేస్తుంది. నాకు, ఈ యూజర్ లాంబ్డాలన్నింటికీ అనుమతులను నిర్వహించడం చాలా ముఖ్యమైన సమస్య (మరియు ఇవి డజన్ల కొద్దీ AWS ఖాతాలు). మరొక ముఖ్యమైన సమస్య ఏమిటంటే, “మొదట వచ్చింది, కోడి లేదా గుడ్డు?” సమస్య: ఇది లాంబ్డా కోడ్‌కి సంబంధించినది. ఈ ఫంక్షన్ కూడా ఇన్‌ఫ్రాస్ట్రక్చర్ మరియు కోడ్, మరియు దీనికి పర్యవేక్షణ మరియు అప్‌డేట్‌లు అవసరం. శవపేటికలో చివరి గోరు లాంబ్డా కోడ్ మార్పులను అర్థపరంగా నవీకరించడంలో ఇబ్బంది; డైరెక్ట్ కమాండ్ లేకుండా స్టాక్ చర్యలు పరుగుల మధ్య మారకుండా కూడా మేము నిర్ధారించుకోవాలి.

నేను క్లాసిక్ లోడ్ బ్యాలెన్సర్‌తో సాగే బీన్‌స్టాక్ పర్యావరణం కోసం కానరీ విస్తరణను సృష్టించాలనుకున్నప్పుడు నాకు గుర్తుంది. ఉత్పత్తి పర్యావరణం పక్కన EB కోసం రెండవ విస్తరణ చేయడం సులభమయిన విషయం, ఇది ఒక అడుగు ముందుకు వేస్తుంది: ఆటో-స్కేలింగ్ కానరీ డిప్లాయ్‌మెంట్ గ్రూప్‌ను డిప్లాయ్‌మెంట్ LBతో ఉత్పత్తి వాతావరణంలోకి కలపడం. మరియు Terraform ఉపయోగిస్తుంది నుండి ముగింపుగా ASG బీంటాక్, దీనికి Terraformలో 4 అదనపు లైన్ల కోడ్ అవసరం. క్లౌడ్‌ఫార్మేషన్‌లో పోల్చదగిన పరిష్కారం ఉందా అని నేను అడిగినప్పుడు, వారు నన్ను డిప్లాయ్‌మెంట్ పైప్‌లైన్ మరియు ప్రతిదీ ఉన్న మొత్తం గిట్ రిపోజిటరీకి సూచించారు, అన్నీ 4 లైన్ల టెర్రాఫార్మ్ కోడ్ చేయగలిగే పని కోసం.

ఇది డ్రిఫ్ట్‌ని బాగా గుర్తిస్తుంది

రియాలిటీ అంచనాలకు సరిపోతుందని నిర్ధారించుకోండి.

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

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

CDK మరియు క్లౌడ్ ఫార్మేషన్ యొక్క భవిష్యత్తు

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

తద్వారా టెర్రాఫార్మ్ నిరాశపరచదు

ఇది “కోడ్‌గా మౌలిక సదుపాయాలు” మరియు “టెక్స్ట్‌గా” కాదు.

టెర్రాఫార్మ్ గురించి నా మొదటి అభిప్రాయం చాలా చెడ్డది. నేను విధానం అర్థం కాలేదు అనుకుంటున్నాను. దాదాపు అందరు ఇంజనీర్లు అసంకల్పితంగా దీనిని టెక్స్ట్ ఫార్మాట్‌గా గ్రహిస్తారు, అది కావలసిన అవస్థాపనగా మార్చబడుతుంది. ఈ విధంగా చేయవద్దు.

మంచి సాఫ్ట్‌వేర్ అభివృద్ధి యొక్క వాస్తవాలు టెర్రాఫార్మ్‌కు కూడా వర్తిస్తాయి.

టెర్రాఫార్మ్‌లో మంచి కోడ్‌ని రూపొందించడానికి అనుసరించిన అనేక పద్ధతులు విస్మరించడాన్ని నేను చూశాను. మీరు మంచి ప్రోగ్రామర్ కావడానికి సంవత్సరాలు చదువుకున్నారు. మీరు Terraformతో పని చేస్తున్నందున ఈ అనుభవాన్ని వదులుకోవద్దు. మంచి సాఫ్ట్‌వేర్ అభివృద్ధి యొక్క వాస్తవాలు టెర్రాఫార్మ్‌కు వర్తిస్తాయి.

కోడ్ ఎలా డాక్యుమెంట్ చేయబడదు?

నేను ఎటువంటి డాక్యుమెంటేషన్ లేకుండా భారీ టెర్రాఫార్మ్ స్టాక్‌లను చూశాను. ఎటువంటి డాక్యుమెంటేషన్ లేకుండా మీరు పేజీలలో కోడ్‌ను ఎలా వ్రాయగలరు? మీ గురించి వివరించే డాక్యుమెంటేషన్‌ను జోడించండి వద్ద టెర్రాఫార్మ్ ("కోడ్" అనే పదానికి ప్రాధాన్యత ఇవ్వడం), ఈ విభాగం ఎందుకు చాలా ముఖ్యమైనది మరియు మీరు ఏమి చేస్తారు.

ఒకప్పుడు ఒక పెద్ద ప్రధాన() ఫంక్షన్‌గా ఉన్న సేవలను మనం ఎలా అమలు చేయవచ్చు?

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

మీ కంపెనీ లైబ్రరీలను ఉపయోగించలేదా?

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

మీరు PEP8 లేదా gofmtని ఉపయోగించడం లేదా?

చాలా భాషలు ప్రామాణికమైన, ఆమోదించబడిన ఫార్మాటింగ్ పథకాన్ని కలిగి ఉంటాయి. పైథాన్‌లో ఇది PEP8. గో లో - gofmt. టెర్రాఫార్మ్ దాని స్వంతమైనది: terraform fmt. మీ ఆరోగ్యం కోసం దీన్ని ఆస్వాదించండి!

మీరు JavaScript తెలియకుండా React ఉపయోగిస్తారా?

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

మీరు సింగిల్‌టన్‌లు లేదా డిపెండెన్సీ ఇంజెక్షన్‌తో కోడింగ్ చేస్తున్నారా?

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

మీ లైబ్రరీలు పది పనులు బాగా చేస్తున్నాయా లేదా ఒక పని గొప్పగా చేస్తున్నాయా?

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

వెనుకబడిన అనుకూలత లేకుండా మీరు లైబ్రరీలకు ఎలా మార్పులు చేస్తారు?

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

మీ ఉత్పత్తి సేవ మీ ల్యాప్‌టాప్‌లో లేదా డేటా సెంటర్‌లో నడుస్తోందా?

Hashicorp వంటి సాధనాలు ఉన్నాయి టెర్రాఫార్మ్ మేఘం మీ టెర్రాఫాంను అమలు చేయడానికి. ఈ కేంద్రీకృత సేవలు టెర్రాఫార్మ్ మార్పులను నిర్వహించడం, ఆడిట్ చేయడం మరియు ఆమోదించడం సులభతరం చేస్తాయి.

నువ్వు పరీక్షలు రాయలేదా?

ఇంజనీర్లు కోడ్‌ను పరీక్షించాల్సిన అవసరం ఉందని గుర్తిస్తారు, అయితే టెర్రాఫార్మ్‌తో పని చేస్తున్నప్పుడు వారు తమను తాము తరచుగా పరీక్షించడం గురించి మరచిపోతారు. మౌలిక సదుపాయాల కోసం, ఇది ప్రమాదకరమైన క్షణాలతో నిండి ఉంది. CI/CD సమయంలో పరీక్ష కోసం సరిగ్గా అమర్చబడే మాడ్యూల్‌లను ఉపయోగించి స్టాక్‌లను “పరీక్షించడం” లేదా “ఉదాహరణను సృష్టించడం” అనేది నా సలహా.

టెర్రాఫార్మ్ మరియు మైక్రోసర్వీసెస్

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

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

మూలం: www.habr.com

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