మా కంపెనీ SRE బృందాన్ని ఆన్బోర్డ్ చేసే ప్రక్రియలో ఉంది. నేను అభివృద్ధి వైపు నుండి ఈ మొత్తం కథలోకి వచ్చాను. ఈ ప్రక్రియలో, నేను ఇతర డెవలపర్లతో భాగస్వామ్యం చేయాలనుకుంటున్న ఆలోచనలు మరియు అంతర్దృష్టులతో ముందుకు వచ్చాను. ఈ ప్రతిబింబ కథనంలో నేను ఏమి జరుగుతుందో, అది ఎలా జరుగుతుందో మరియు ప్రతి ఒక్కరూ దానితో ఎలా జీవించవచ్చో మాట్లాడతాను.
మా అంతర్గత కార్యక్రమంలో ప్రసంగాల ఆధారంగా వ్రాసిన కథనాల శ్రేణి కొనసాగింపు DevForum:
మేము ఆలోచనలను అమలు చేస్తూ SRE బృందాన్ని రూపొందించాలని నిర్ణయించుకున్నాము గూగుల్ శ్రీ. వారు తమ సొంత డెవలపర్ల నుండి ప్రోగ్రామర్లను నియమించుకున్నారు మరియు వారిని చాలా నెలల పాటు శిక్షణకు పంపారు.
బృందం కింది శిక్షణా పనులను కలిగి ఉంది:
మైక్రోసాఫ్ట్ అజూర్లో కోడ్ రూపంలో ఎక్కువగా ఉండే మా మౌలిక సదుపాయాలను వివరించండి (టెర్రాఫార్మ్ మరియు చుట్టూ ఉన్న ప్రతిదీ).
డెవలపర్లకు మౌలిక సదుపాయాలతో ఎలా పని చేయాలో నేర్పండి.
విధి కోసం డెవలపర్లను సిద్ధం చేయండి.
మేము మౌలిక సదుపాయాల భావనను కోడ్గా పరిచయం చేస్తున్నాము
ప్రపంచంలోని సాధారణ నమూనాలో (క్లాసికల్ అడ్మినిస్ట్రేషన్), మౌలిక సదుపాయాల గురించి జ్ఞానం రెండు ప్రదేశాలలో ఉంది:
లేదా నిపుణుల తలలలో జ్ఞానం రూపంలో.
లేదా ఈ సమాచారం కొన్ని టైప్రైటర్లపై ఉంది, వాటిలో కొన్ని నిపుణులకు తెలుసు. కానీ బయటి వ్యక్తి (మా బృందం మొత్తం హఠాత్తుగా చనిపోతే) ఏమి పని చేస్తుందో మరియు ఎలా పని చేస్తుందో గుర్తించగలరన్నది వాస్తవం కాదు. మెషీన్లో చాలా సమాచారం ఉండవచ్చు: ఉపకరణాలు, క్రోన్జాబ్లు, బెదిరింపు (చూడండి. డిస్క్ మౌంటు) డిస్క్ మరియు ఏమి జరుగుతుందో అంతులేని జాబితా. నిజంగా ఏమి జరుగుతుందో అర్థం చేసుకోవడం కష్టం.
రెండు సందర్భాల్లోనూ, మనం ఆధారపడటంలో చిక్కుకుపోయాము:
లేదా మృత్యువాత, అనారోగ్యానికి లోనైన, ప్రేమలో పడటం, మూడ్ స్వింగ్స్ మరియు సామాన్యమైన తొలగింపులు;
లేదా భౌతికంగా పనిచేసే యంత్రం నుండి, అది కూడా పడిపోతుంది, దొంగిలించబడుతుంది మరియు ఆశ్చర్యకరమైన మరియు అసౌకర్యాలను అందిస్తుంది.
ఆదర్శవంతంగా ప్రతిదీ మానవ-చదవగలిగే, నిర్వహించదగిన, బాగా వ్రాసిన కోడ్లోకి అనువదించాలని చెప్పనవసరం లేదు.
ఆ విధంగా, అవస్థాపన అనేది కోడ్ రూపంలో (Incfastructure as Code - IaC) అనేది కోడ్ రూపంలో ఉన్న మొత్తం అవస్థాపన యొక్క వివరణ, అలాగే దానితో పని చేయడానికి మరియు దాని నుండి నిజమైన మౌలిక సదుపాయాలను అమలు చేయడానికి సంబంధిత సాధనాలు.
ప్రతిదీ కోడ్లోకి ఎందుకు అనువదించాలి?మనుషులు యంత్రాలు కాదు. వారు ప్రతిదీ గుర్తుంచుకోలేరు. ఒక వ్యక్తి మరియు యంత్రం యొక్క ప్రతిచర్య భిన్నంగా ఉంటుంది. ఆటోమేటెడ్ ఏదైనా మానవుడు చేసే దానికంటే వేగంగా ఉంటుంది. అతి ముఖ్యమైన విషయం సత్యం యొక్క ఒకే మూలం.
కొత్త SRE ఇంజనీర్లు ఎక్కడ నుండి వచ్చారు?కాబట్టి, మేము కొత్త SRE ఇంజనీర్లను నియమించాలని నిర్ణయించుకున్నాము, అయితే వారిని ఎక్కడ నుండి పొందాలి? సరైన సమాధానాలతో బుక్ చేయండి (Google SRE పుస్తకం) మాకు చెబుతుంది: డెవలపర్ల నుండి. అన్నింటికంటే, వారు కోడ్తో పని చేస్తారు మరియు మీరు ఆదర్శ స్థితిని సాధిస్తారు.
మేము మా కంపెనీ వెలుపల పర్సనల్ మార్కెట్లో వారి కోసం చాలా కాలం పాటు వెతికాము. కానీ మా అభ్యర్థనలకు సరిపోయే వారు ఎవరూ కనుగొనబడలేదని మేము అంగీకరించాలి. నేను నా స్వంత వ్యక్తుల మధ్య వెతకవలసి వచ్చింది.
కోడ్గా సమస్యలు మౌలిక సదుపాయాలు
ఇప్పుడు ఇన్ఫ్రాస్ట్రక్చర్ను కోడ్గా హార్డ్కోడ్ చేయడం ఎలా అనేదానికి ఉదాహరణలను చూద్దాం. కోడ్ బాగా వ్రాయబడింది, అధిక నాణ్యత, వ్యాఖ్యలు మరియు ఇండెంటేషన్లతో.
టెర్రాఫార్మా నుండి ఉదాహరణ కోడ్.
Ansible నుండి ఉదాహరణ కోడ్.
పెద్దమనుషులు, ఇది చాలా సరళంగా ఉంటే! మేము వాస్తవ ప్రపంచంలో ఉన్నాము మరియు ఇది మిమ్మల్ని ఆశ్చర్యపరిచేందుకు, మీకు ఆశ్చర్యాలను మరియు సమస్యలను అందించడానికి ఎల్లప్పుడూ సిద్ధంగా ఉంటుంది. ఇక్కడ కూడా అవి లేకుండా కుదరదు.
1. మొదటి సమస్య ఏమిటంటే చాలా సందర్భాలలో IaC అనేది ఒక రకమైన dsl.
మరియు DSL, క్రమంగా, నిర్మాణం యొక్క వివరణ. మరింత ఖచ్చితంగా, మీరు ఏమి కలిగి ఉండాలి: Json, Yaml, వారి స్వంత dsl (HCL టెర్రాఫార్మ్లో ఉపయోగించబడుతుంది)తో వచ్చిన కొన్ని పెద్ద కంపెనీల నుండి మార్పులు.
ఇబ్బంది ఏమిటంటే ఇది సులభంగా తెలిసిన విషయాలను కలిగి ఉండకపోవచ్చు:
వేరియబుల్స్;
పరిస్థితులు;
ఎక్కడా వ్యాఖ్యలు లేవు, ఉదాహరణకు, Jsonలో, డిఫాల్ట్గా అవి అందించబడవు;
విధులు;
మరియు నేను తరగతులు, వారసత్వం మరియు అన్ని వంటి ఉన్నత స్థాయి విషయాల గురించి కూడా మాట్లాడటం లేదు.
2. అటువంటి కోడ్తో రెండవ సమస్య ఏమిటంటే చాలా తరచుగా ఇది భిన్నమైన వాతావరణం. సాధారణంగా మీరు C#తో కూర్చుని పని చేస్తారు, అనగా. ఒక భాష, ఒక స్టాక్, ఒక పర్యావరణ వ్యవస్థతో. మరియు ఇక్కడ మీకు అనేక రకాల సాంకేతికతలు ఉన్నాయి.
పైథాన్తో బాష్ Json చొప్పించిన కొన్ని ప్రక్రియను ప్రారంభించినప్పుడు ఇది చాలా వాస్తవమైన పరిస్థితి. మీరు దానిని విశ్లేషించి, మరొక జనరేటర్ మరో 30 ఫైళ్లను ఉత్పత్తి చేస్తుంది. వీటన్నింటి కోసం, అజూర్ కీ వాల్ట్ నుండి ఇన్పుట్ వేరియబుల్స్ స్వీకరించబడ్డాయి, ఇవి Goలో వ్రాసిన drone.io కోసం ప్లగిన్ ద్వారా కలిసి లాగబడతాయి మరియు ఈ వేరియబుల్స్ yaml గుండా వెళతాయి, ఇది jsonnet టెంప్లేట్ ఇంజిన్ నుండి ఉత్పత్తి చేయబడిన ఫలితంగా రూపొందించబడింది. మీరు ఇంత వైవిధ్యమైన వాతావరణాన్ని కలిగి ఉన్నప్పుడు ఖచ్చితంగా చక్కగా వివరించబడిన కోడ్ని కలిగి ఉండటం చాలా కష్టం.
ఒక పని యొక్క చట్రంలో సాంప్రదాయ అభివృద్ధి ఒక భాషతో వస్తుంది. ఇక్కడ మేము పెద్ద సంఖ్యలో భాషలతో పని చేస్తాము.
3. మూడవ సమస్య ట్యూనింగ్. మా కోసం ప్రతిదీ చేసే ఎడిటర్లను (Ms విజువల్ స్టూడియో, జెట్బ్రేన్స్ రైడర్) కూల్ చేయడానికి మేము అలవాటు పడ్డాము. మరి మనం మూర్ఖులమైనా తప్పు అని చెబుతారు. ఇది సహజంగా మరియు సహజంగా కనిపిస్తుంది.
కానీ ఎక్కడో సమీపంలో VSCode ఉంది, దీనిలో కొన్ని ప్లగిన్లు ఏదో ఒకవిధంగా ఇన్స్టాల్ చేయబడ్డాయి, మద్దతు ఇవ్వబడ్డాయి లేదా మద్దతు ఇవ్వబడవు. కొత్త సంస్కరణలు వచ్చాయి మరియు మద్దతు లేదు. ఒక ఫంక్షన్ని అమలు చేయడానికి ఒక సామాన్యమైన మార్పు (అది ఉనికిలో ఉన్నప్పటికీ) సంక్లిష్టమైన మరియు చిన్నవిషయం కాని సమస్యగా మారుతుంది. వేరియబుల్ యొక్క సాధారణ పేరు మార్చడం అనేది డజను ఫైల్ల ప్రాజెక్ట్లో రీప్లే. అతను మీకు అవసరమైన వాటిని ఉంచినట్లయితే మీరు అదృష్టవంతులు అవుతారు. వాస్తవానికి, ఇక్కడ మరియు అక్కడ బ్యాక్లైటింగ్ ఉంది, ఆటో-పూర్తి ఉంది, ఎక్కడా ఫార్మాటింగ్ ఉంది (ఇది విండోస్లో టెరాఫార్మ్లో నాకు పని చేయనప్పటికీ).
ఈ రచన సమయంలో vcode-terraform ప్లగ్ఇన్ వెర్షన్ 0.12కి మద్దతు ఇవ్వడానికి ఇంకా విడుదల చేయలేదు, అయినప్పటికీ ఇది 3 నెలలు విడుదలైంది.
ఇది మర్చిపోవాల్సిన సమయం...
డీబగ్గింగ్.
రీఫ్యాక్టరింగ్ సాధనం.
స్వయంచాలకంగా పూర్తి చేయడం.
సంకలనం సమయంలో లోపాలను గుర్తించడం.
ఇది హాస్యాస్పదంగా ఉంది, కానీ ఇది అభివృద్ధి సమయాన్ని కూడా పెంచుతుంది మరియు అనివార్యంగా సంభవించే లోపాల సంఖ్యను పెంచుతుంది.
చెత్త విషయం ఏమిటంటే, ఫైల్లను ఫోల్డర్లుగా ఎలా నిర్వహించాలి, కుళ్ళిపోవాలి, కోడ్ను నిర్వహించడం, చదవగలిగేలా చేయడం మరియు మొదలైన వాటి గురించి ఆలోచించకుండా మనం ఆలోచించవలసి వస్తుంది, కానీ నేను ఈ ఆదేశాన్ని ఎలా సరిగ్గా వ్రాయగలను, ఎందుకంటే నేను దానిని తప్పుగా వ్రాసాను. .
అనుభవశూన్యుడుగా, మీరు టెర్రాఫారమ్లను నేర్చుకోవడానికి ప్రయత్నిస్తున్నారు మరియు IDE మీకు ఏమాత్రం సహాయం చేయడం లేదు. డాక్యుమెంటేషన్ ఉన్నప్పుడు, లోపలికి వెళ్లి చూడండి. కానీ మీరు కొత్త ప్రోగ్రామింగ్ లాంగ్వేజ్ని నమోదు చేస్తుంటే, అటువంటి రకం ఉందని IDE మీకు చెబుతుంది, కానీ అలాంటిదేమీ లేదు. కనీసం పూర్ణాంక లేదా స్ట్రింగ్ స్థాయిలో. ఇది తరచుగా ఉపయోగకరంగా ఉంటుంది.
పరీక్షల సంగతేంటి?
మీరు అడగండి: "పరీక్షల గురించి ఏమిటి, ప్రోగ్రామర్లు, పెద్దమనుషులు?" సీరియస్ అబ్బాయిలు ప్రొడక్షన్లో ప్రతిదాన్ని పరీక్షిస్తారు మరియు ఇది కఠినమైనది. వెబ్సైట్ నుండి టెరాఫార్మ్ మాడ్యూల్ కోసం యూనిట్ పరీక్ష యొక్క ఉదాహరణ ఇక్కడ ఉంది మైక్రోసాఫ్ట్.
వారికి మంచి డాక్యుమెంటేషన్ ఉంది. డాక్యుమెంటేషన్ మరియు శిక్షణకు మైక్రోసాఫ్ట్ దాని విధానం కోసం నేను ఎల్లప్పుడూ ఇష్టపడుతున్నాను. కానీ ఇది ఖచ్చితమైన కోడ్ కాదని అర్థం చేసుకోవడానికి మీరు అంకుల్ బాబ్ కానవసరం లేదు. కుడివైపున ధ్రువీకరణను గమనించండి.
యూనిట్ పరీక్షలో సమస్య ఏమిటంటే మీరు మరియు నేను Json అవుట్పుట్ యొక్క ఖచ్చితత్వాన్ని తనిఖీ చేయగలము. నేను 5 పారామీటర్లను విసిరాను మరియు 2000 లైన్లతో కూడిన Json ఫుట్క్లాత్ ఇవ్వబడింది. నేను ఇక్కడ ఏమి జరుగుతుందో విశ్లేషించగలను, పరీక్ష ఫలితాన్ని ధృవీకరించగలను...
Goలో Jsonని అన్వయించడం కష్టం. మరియు మీరు గోలో వ్రాయవలసి ఉంటుంది, ఎందుకంటే మీరు వ్రాసే భాషలో పరీక్షించడానికి గోలోని టెర్రాఫార్మ్ మంచి అభ్యాసం. కోడ్ యొక్క సంస్థ చాలా బలహీనంగా ఉంది. అదే సమయంలో, ఇది పరీక్ష కోసం ఉత్తమ లైబ్రరీ.
మైక్రోసాఫ్ట్ తన మాడ్యూళ్ళను వ్రాసి, వాటిని ఈ విధంగా పరీక్షిస్తుంది. వాస్తవానికి ఇది ఓపెన్ సోర్స్. నేను మీ గురించి మాట్లాడుతున్నదంతా వచ్చి సరిదిద్దవచ్చు. నేను ఒక వారంలో కూర్చొని అన్నిటినీ సరిదిద్దగలను, ఓపెన్ సోర్స్ VS కోడ్ ప్లగిన్లు, టెర్రాఫారమ్లు, రైడర్ కోసం ప్లగిన్ను తయారు చేయగలను. బహుశా కొన్ని ఎనలైజర్లను వ్రాయవచ్చు, లింటర్లను జోడించవచ్చు, పరీక్ష కోసం లైబ్రరీని అందించవచ్చు. నేను అన్నీ చేయగలను. కానీ నేను చేయవలసినది అది కాదు.
కోడ్గా మౌలిక సదుపాయాలను ఉత్తమ అభ్యాసాలు
ముందుకు వెళ్దాం. IaCలో పరీక్షలు లేకుంటే, IDE మరియు ట్యూనింగ్ చెడ్డవి అయితే, కనీసం ఉత్తమ పద్ధతులు ఉండాలి. నేను ఇప్పుడే Google Analyticsకి వెళ్లి రెండు శోధన ప్రశ్నలను పోల్చాను: Terraform ఉత్తమ అభ్యాసాలు మరియు c# ఉత్తమ అభ్యాసాలు.
మనం ఏమి చూస్తాము? క్రూరమైన గణాంకాలు మాకు అనుకూలంగా లేవు. పదార్థం మొత్తం ఒకే విధంగా ఉంటుంది. C# డెవలప్మెంట్లో, మేము కేవలం మెటీరియల్లలో మునిగిపోయాము, మాకు సూపర్-బెస్ట్ ప్రాక్టీస్ ఉన్నాయి, నిపుణులు వ్రాసిన పుస్తకాలు ఉన్నాయి మరియు ఆ పుస్తకాలను విమర్శించే ఇతర నిపుణుల పుస్తకాలపై వ్రాసిన పుస్తకాలు కూడా ఉన్నాయి. అధికారిక డాక్యుమెంటేషన్, కథనాలు, శిక్షణా కోర్సులు మరియు ఇప్పుడు ఓపెన్ సోర్స్ అభివృద్ధి యొక్క సముద్రం.
IaC అభ్యర్థన విషయానికొస్తే: ఇక్కడ మీరు హైలోడ్ లేదా HashiConf నివేదికల నుండి, అధికారిక డాక్యుమెంటేషన్ మరియు Githubలోని అనేక సమస్యల నుండి సమాచారాన్ని బిట్బైట్గా సేకరించడానికి ప్రయత్నిస్తున్నారు. సాధారణంగా ఈ మాడ్యూళ్ళను ఎలా పంపిణీ చేయాలి, వాటితో ఏమి చేయాలి? ఇది నిజమైన సమస్య అని అనిపిస్తోంది... ఒక సంఘం ఉంది, పెద్దమనుషులు, ఎక్కడ ఏ ప్రశ్నకైనా మీకు గితుబ్లో 10 వ్యాఖ్యలు ఇవ్వబడతాయి. కానీ అది సరిగ్గా లేదు.
దురదృష్టవశాత్తు, ఈ సమయంలో, నిపుణులు ఇప్పుడే ఉద్భవించడం ప్రారంభించారు. వాటిలో ఇప్పటివరకు చాలా తక్కువ ఉన్నాయి. మరియు సంఘం కూడా ప్రాథమిక స్థాయిలో వేలాడుతోంది.
ఇదంతా ఎక్కడికి వెళుతుంది మరియు ఏమి చేయాలి
మీరు అన్నింటినీ వదిలివేసి, C#కి, రైడర్ ప్రపంచానికి తిరిగి వెళ్లవచ్చు. కానీ కాదు. మీకు పరిష్కారం దొరకకపోతే ఇలా చేయడం ఎందుకు? క్రింద నేను నా ఆత్మాశ్రయ తీర్మానాలను అందిస్తున్నాను. మీరు వ్యాఖ్యలలో నాతో వాదించవచ్చు, ఇది ఆసక్తికరంగా ఉంటుంది.
వ్యక్తిగతంగా, నేను కొన్ని విషయాలపై బెట్టింగ్ చేస్తున్నాను:
ఈ ప్రాంతంలో అభివృద్ధి చాలా వేగంగా జరుగుతోంది. DevOps కోసం అభ్యర్థనల షెడ్యూల్ ఇక్కడ ఉంది.
టాపిక్ హైప్ కావచ్చు, కానీ గోల పెరుగుతోందనే వాస్తవం కొంత ఆశను ఇస్తుంది.
ఏదైనా అంత త్వరగా పెరిగితే, ఏమి చేయాలో మరియు ఏమి చేయకూడదో మీకు చెప్పే తెలివైన వ్యక్తులు ఖచ్చితంగా కనిపిస్తారు. జనాదరణ పెరగడం వల్ల ఎవరైనా చివరకు vcode కోసం jsonnetకి ప్లగిన్ను జోడించడానికి సమయం ఉండవచ్చు, ఇది ctrl+shift+f ద్వారా శోధించడం కంటే ఫంక్షన్ను అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. విషయాలు అభివృద్ధి చెందుతున్నప్పుడు, మరిన్ని పదార్థాలు కనిపిస్తాయి. SRE గురించి Google నుండి ఒక పుస్తకాన్ని విడుదల చేయడం దీనికి అద్భుతమైన ఉదాహరణ.
సాంప్రదాయిక అభివృద్ధిలో అభివృద్ధి చెందిన పద్ధతులు మరియు అభ్యాసాలు ఉన్నాయి, వీటిని మనం ఇక్కడ విజయవంతంగా వర్తింపజేయవచ్చు. అవును, పరీక్ష మరియు వైవిధ్య వాతావరణం, తగినంత సాధనాలతో సూక్ష్మ నైపుణ్యాలు ఉన్నాయి, కానీ ఉపయోగకరమైన మరియు సహాయకరంగా ఉండే భారీ సంఖ్యలో అభ్యాసాలు సేకరించబడ్డాయి.
ఒక పనికిమాలిన ఉదాహరణ: పెయిర్ ప్రోగ్రామింగ్ ద్వారా సహకారం. ఇది గుర్తించడానికి చాలా సహాయపడుతుంది. మీకు సమీపంలో ఉన్న పొరుగువారు కూడా ఏదైనా అర్థం చేసుకోవడానికి ప్రయత్నిస్తున్నప్పుడు, మీరు కలిసి బాగా అర్థం చేసుకుంటారు.
రీఫ్యాక్టరింగ్ ఎలా జరుగుతుందో అర్థం చేసుకోవడం అటువంటి పరిస్థితిలో కూడా దానిని నిర్వహించడానికి సహాయపడుతుంది. అంటే, మీరు అన్నింటినీ ఒకేసారి మార్చలేరు, కానీ నామకరణాన్ని మార్చండి, ఆపై స్థానాన్ని మార్చండి, ఆపై మీరు కొంత భాగాన్ని హైలైట్ చేయవచ్చు, ఓహ్, కానీ ఇక్కడ తగినంత వ్యాఖ్యలు లేవు.
తీర్మానం
నా తార్కికం నిరాశావాదంగా అనిపించినప్పటికీ, నేను భవిష్యత్తును ఆశతో చూస్తున్నాను మరియు ప్రతిదీ మాకు (మరియు మీ కోసం) పని చేస్తుందని హృదయపూర్వకంగా ఆశిస్తున్నాను.
వ్యాసం యొక్క రెండవ భాగం తదుపరి సిద్ధం చేయబడుతోంది. దీనిలో, మా అభ్యాస ప్రక్రియను మెరుగుపరచడానికి మరియు మౌలిక సదుపాయాలతో పని చేయడానికి మేము చురుకైన అభివృద్ధి పద్ధతులను ఎలా ఉపయోగించాలో ఎలా ప్రయత్నించాము అనే దాని గురించి మాట్లాడుతాను.