200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

அணுகுமுறை ஐ.ஏ.சி. (குறியீடாக உள்கட்டமைப்பு) என்பது களஞ்சியத்தில் சேமிக்கப்பட்ட குறியீட்டை மட்டுமல்ல, இந்த குறியீட்டைச் சுற்றியுள்ள நபர்கள் மற்றும் செயல்முறைகளையும் கொண்டுள்ளது. மென்பொருள் மேம்பாடு முதல் உள்கட்டமைப்பு மேலாண்மை மற்றும் விளக்கம் வரையிலான அணுகுமுறைகளை மீண்டும் பயன்படுத்த முடியுமா? நீங்கள் கட்டுரையைப் படிக்கும் போது இந்த யோசனையை மனதில் வைத்திருப்பது நல்லது.

ஆங்கில பிரதி

இது என்னுடைய பதிவேடு நிகழ்ச்சிகள் மீது DevopsConf 2019-05-28.

ஸ்லைடுகள் மற்றும் வீடியோக்கள்

உள்கட்டமைப்பு பாஷ் வரலாறு

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

நீங்கள் ஒரு புதிய திட்டத்திற்கு வருகிறீர்கள் என்று வைத்துக்கொள்வோம், அவர்கள் உங்களிடம் சொல்கிறார்கள்: "எங்களிடம் உள்ளது குறியீட்டாக உள்கட்டமைப்பு". உண்மையில் அது மாறிவிடும் உள்கட்டமைப்பு பாஷ் வரலாறு அல்லது உதாரணமாக பாஷ் வரலாறாக ஆவணப்படுத்தல். இது மிகவும் உண்மையான சூழ்நிலை, எடுத்துக்காட்டாக, இதேபோன்ற வழக்கு டெனிஸ் லைசென்கோ ஒரு உரையில் விவரிக்கப்பட்டது முழு உள்கட்டமைப்பையும் மாற்றுவது மற்றும் நிம்மதியாக தூங்குவது எப்படி, பாஷ் வரலாற்றிலிருந்து திட்டத்திற்கான ஒத்திசைவான உள்கட்டமைப்பை அவர்கள் எவ்வாறு பெற்றனர் என்று அவர் கூறினார்.

சில ஆசைகளுடன், நாம் அதைச் சொல்லலாம் உள்கட்டமைப்பு பாஷ் வரலாறு இது குறியீடு போன்றது:

  1. மறுஉருவாக்கம்: நீங்கள் பாஷ் வரலாற்றை எடுக்கலாம், அங்கிருந்து கட்டளைகளை இயக்கலாம், மேலும் நீங்கள் ஒரு வேலை உள்ளமைவை வெளியீட்டாகப் பெறலாம்.
  2. பதிப்பு: யார் உள்ளே வந்தார்கள், என்ன செய்தார்கள் என்பது உங்களுக்குத் தெரியும், மீண்டும், இது வெளியேறும் போது செயல்படும் உள்ளமைவுக்கு உங்களை அழைத்துச் செல்லும் என்பது உண்மையல்ல.
  3. கதை: யார் என்ன செய்தார்கள் என்ற கதை. நீங்கள் சேவையகத்தை இழந்தால் மட்டுமே நீங்கள் அதைப் பயன்படுத்த முடியாது.

நான் என்ன செய்ய வேண்டும்?

குறியீட்டாக உள்கட்டமைப்பு

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

போன்ற ஒரு விசித்திரமான வழக்கு கூட உள்கட்டமைப்பு பாஷ் வரலாறு நீங்கள் அதை காதுகளால் இழுக்கலாம் குறியீட்டாக உள்கட்டமைப்பு, ஆனால் நல்ல பழைய LAMP சேவையகத்தை விட சிக்கலான ஒன்றைச் செய்ய விரும்பினால், இந்த குறியீட்டை எப்படியாவது மாற்றியமைக்க வேண்டும், மாற்ற வேண்டும், மேம்படுத்த வேண்டும் என்ற முடிவுக்கு வருவோம். அடுத்து நாம் இடையே உள்ள ஒற்றுமைகளைக் கருத்தில் கொள்ள விரும்புகிறோம் குறியீட்டாக உள்கட்டமைப்பு மற்றும் மென்பொருள் மேம்பாடு.

டி.ஆர்.ஒய்.

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

சேமிப்பக அமைப்பு மேம்பாட்டுத் திட்டத்தில், ஒரு துணைப் பணி இருந்தது அவ்வப்போது SDS ஐ உள்ளமைக்கவும்: நாங்கள் ஒரு புதிய வெளியீட்டை வெளியிடுகிறோம் - மேலும் சோதனைக்காக இது வெளியிடப்பட வேண்டும். பணி மிகவும் எளிது:

  • ssh வழியாக இங்கே உள்நுழைந்து கட்டளையை இயக்கவும்.
  • கோப்பை அங்கு நகலெடுக்கவும்.
  • இங்கே உள்ளமைவை சரிசெய்யவும்.
  • அங்கு சேவையை தொடங்குங்கள்
  • ...
  • லாபம்!

விவரிக்கப்பட்ட தர்க்கத்திற்கு, பாஷ் போதுமானதை விட அதிகமாக உள்ளது, குறிப்பாக திட்டத்தின் ஆரம்ப கட்டங்களில், அது தொடங்கும் போது. இது நீங்கள் பாஷ் பயன்படுத்துவது மோசமானதல்ல, ஆனால் காலப்போக்கில் இதேபோன்ற, ஆனால் சற்று வித்தியாசமான ஒன்றை வரிசைப்படுத்த கோரிக்கைகள் உள்ளன. முதலில் நினைவுக்கு வருவது காப்பி பேஸ்ட். இப்போது எங்களிடம் ஏற்கனவே ஒரே மாதிரியான இரண்டு ஸ்கிரிப்ட்கள் உள்ளன, அவை கிட்டத்தட்ட ஒரே காரியத்தைச் செய்கின்றன. காலப்போக்கில், ஸ்கிரிப்டுகளின் எண்ணிக்கை அதிகரித்தது, மேலும் வெவ்வேறு ஸ்கிரிப்டுகளுக்கு இடையில் ஒத்திசைக்கப்பட வேண்டிய நிறுவலைப் பயன்படுத்துவதற்கு ஒரு குறிப்பிட்ட வணிக தர்க்கம் உள்ளது என்ற உண்மையை நாங்கள் எதிர்கொண்டோம், இது மிகவும் சிக்கலானது.

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

டி.ஆர்.ஒய் போன்ற ஒரு நடைமுறை உள்ளது என்று மாறிவிடும். (உங்களை மீண்டும் செய்ய வேண்டாம்). ஏற்கனவே உள்ள குறியீட்டை மீண்டும் பயன்படுத்துவதே யோசனை. இது எளிமையானதாகத் தெரிகிறது, ஆனால் நாங்கள் உடனடியாக இதற்கு வரவில்லை. எங்கள் விஷயத்தில், இது ஒரு சாதாரணமான யோசனை: ஸ்கிரிப்ட்களிலிருந்து கட்டமைப்புகளைப் பிரிப்பது. அந்த. நிறுவல் எவ்வாறு தனித்தனியாக பயன்படுத்தப்படுகிறது என்பதற்கான வணிக தர்க்கம், தனித்தனியாக கட்டமைப்புகள்.

எஸ்.ஓ.எல்.ஐ.டி. CFMக்கு

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

காலப்போக்கில் திட்டம் வளர்ந்தது மற்றும் இயற்கையான தொடர்ச்சி அன்சிபிலின் தோற்றம். அதன் தோற்றத்திற்கான முக்கிய காரணம், குழுவில் நிபுணத்துவம் உள்ளது மற்றும் பாஷ் சிக்கலான தர்க்கத்திற்காக வடிவமைக்கப்படவில்லை. அன்சிபிள் சிக்கலான தர்க்கத்தையும் கொண்டிருக்கத் தொடங்கியது. சிக்கலான தர்க்கம் குழப்பமாக மாறுவதைத் தடுக்க, மென்பொருள் உருவாக்கத்தில் குறியீட்டை ஒழுங்கமைப்பதற்கான கொள்கைகள் உள்ளன எஸ்.ஓ.எல்.ஐ.டி. மேலும், எடுத்துக்காட்டாக, கிரிகோரி பெட்ரோவ், “ஐடி நிபுணருக்கு ஏன் தனிப்பட்ட பிராண்ட் தேவை” என்ற அறிக்கையில், ஒரு நபர் சில சமூக நிறுவனங்களுடன் செயல்படுவதை எளிதாக்கும் வகையில் வடிவமைக்கப்பட்டுள்ளாரா என்ற கேள்வியை எழுப்பினார். பொருள்களாகும். இந்த இரண்டு யோசனைகளையும் இணைத்து, அவற்றைத் தொடர்ந்து உருவாக்கினால், நாமும் பயன்படுத்தலாம் என்பதை நாம் கவனிக்கிறோம் எஸ்.ஓ.எல்.ஐ.டி. எதிர்காலத்தில் இந்த தர்க்கத்தை பராமரிப்பதையும் மாற்றியமைப்பதையும் எளிதாக்குவதற்கு.

ஒற்றைப் பொறுப்புக் கொள்கை

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

ஒவ்வொரு வகுப்பும் ஒரு பணியை மட்டுமே செய்கிறது.

குறியீட்டைக் கலந்து ஒரே மாதிரியான தெய்வீக ஸ்பாகெட்டியை உருவாக்க வேண்டிய அவசியமில்லை. உள்கட்டமைப்பு எளிய செங்கற்களைக் கொண்டிருக்க வேண்டும். நீங்கள் அன்சிபிள் பிளேபுக்கை சிறிய துண்டுகளாகப் பிரித்து, அன்சிபிள் பாத்திரங்களைப் படித்தால், அவற்றைப் பராமரிப்பது எளிதாக இருக்கும்.

திறந்த மூடிய கொள்கை

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

திறந்த/மூடிய கொள்கை.

  • நீட்டிப்புக்கு திறந்தது: புதிய நிறுவன வகைகளை உருவாக்குவதன் மூலம் ஒரு நிறுவனத்தின் நடத்தையை நீட்டிக்க முடியும்.
  • மாற்றத்திற்கு மூடப்பட்டுள்ளது: ஒரு நிறுவனத்தின் நடத்தையை நீட்டிப்பதன் விளைவாக, அந்த நிறுவனங்களைப் பயன்படுத்தும் குறியீட்டில் எந்த மாற்றமும் செய்யப்படக்கூடாது.

ஆரம்பத்தில், நாங்கள் மெய்நிகர் கணினிகளில் சோதனை உள்கட்டமைப்பைப் பயன்படுத்தினோம், ஆனால் வரிசைப்படுத்துதலின் வணிக தர்க்கம் செயல்படுத்துவதில் இருந்து வேறுபட்டதாக இருந்ததால், எந்த பிரச்சனையும் இல்லாமல் baremetall க்கு ரோலிங் செய்தோம்.

லிஸ்கோவ் மாற்றுக் கொள்கை

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

பார்பரா லிஸ்கோவின் மாற்றுக் கொள்கை. நிரலில் உள்ள பொருள்கள் நிரலின் சரியான செயல்பாட்டை மாற்றாமல் அவற்றின் துணை வகைகளின் நிகழ்வுகளுடன் மாற்றப்பட வேண்டும்.

நீங்கள் அதை இன்னும் விரிவாகப் பார்த்தால், அது அங்கு பயன்படுத்தக்கூடிய எந்தவொரு குறிப்பிட்ட திட்டத்தின் அம்சம் அல்ல எஸ்.ஓ.எல்.ஐ.டி., இது பொதுவாக CFM பற்றியது, எடுத்துக்காட்டாக, மற்றொரு திட்டத்தில் பல்வேறு ஜாவா, பயன்பாட்டு சேவையகங்கள், தரவுத்தளங்கள், OS போன்றவற்றின் மேல் ஒரு பெட்டி ஜாவா பயன்பாட்டை வரிசைப்படுத்துவது அவசியம். இந்த எடுத்துக்காட்டைப் பயன்படுத்தி, மேலும் கொள்கைகளை நான் பரிசீலிப்பேன் எஸ்.ஓ.எல்.ஐ.டி.

எங்கள் விஷயத்தில், இம்ப்ஜாவா அல்லது ஆரக்கிள்ஜாவா பாத்திரத்தை நிறுவியிருந்தால், எங்களிடம் ஜாவா பைனரி இயங்கக்கூடியது என்று உள்கட்டமைப்பு குழுவிற்குள் ஒரு ஒப்பந்தம் உள்ளது. ஏனெனில் இது அவசியம் அப்ஸ்ட்ரீம் பாத்திரங்கள் இந்த நடத்தையைப் பொறுத்தது; அவர்கள் ஜாவாவை எதிர்பார்க்கிறார்கள். அதே நேரத்தில், பயன்பாட்டு வரிசைப்படுத்தல் தர்க்கத்தை மாற்றாமல் ஒரு ஜாவா செயல்படுத்தல்/பதிப்பை மற்றொரு பதிப்பாக மாற்ற இது அனுமதிக்கிறது.

இங்கே பிரச்சனை என்னவென்றால், அன்சிபில் இதை செயல்படுத்துவது சாத்தியமில்லை, இதன் விளைவாக குழுவிற்குள் சில ஒப்பந்தங்கள் தோன்றும்.

இடைமுகம் பிரித்தல் கோட்பாடு

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

இடைமுகம் பிரிக்கும் கொள்கை: “பல கிளையன்ட்-சார்ந்த இடைமுகங்கள் ஒரு பொது-நோக்க இடைமுகத்தை விட சிறந்தவை.

தொடக்கத்தில், பயன்பாட்டு வரிசைப்படுத்துதலின் அனைத்து மாறுபாடுகளையும் ஒரே அன்சிபிள் பிளேபுக்கில் வைக்க முயற்சித்தோம், ஆனால் அதை ஆதரிப்பது கடினமாக இருந்தது, மேலும் எங்களிடம் வெளிப்புற இடைமுகம் இருக்கும் போது அணுகுமுறை (கிளையன்ட் போர்ட் 443 ஐ எதிர்பார்க்கிறார்), பின்னர் ஒரு உள்கட்டமைப்பை தனிநபரிடமிருந்து சேகரிக்க முடியும். ஒரு குறிப்பிட்ட செயலாக்கத்திற்கான செங்கற்கள்.

சார்பு தலைகீழ் கோட்பாடு

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

சார்பு தலைகீழ் கொள்கை. உயர் மட்டங்களில் உள்ள தொகுதிகள் கீழ் மட்டங்களில் உள்ள தொகுதிகளைச் சார்ந்து இருக்கக்கூடாது. இரண்டு வகையான தொகுதிகளும் சுருக்கங்களைச் சார்ந்திருக்க வேண்டும். சுருக்கங்கள் விவரங்களைச் சார்ந்து இருக்கக்கூடாது. விவரங்கள் சுருக்கத்தைப் பொறுத்தது.

இங்கே எடுத்துக்காட்டு ஒரு எதிர் வடிவத்தை அடிப்படையாகக் கொண்டது.

  1. வாடிக்கையாளர்களில் ஒருவருக்கு தனிப்பட்ட மேகம் இருந்தது.
  2. மேகக்கணிக்குள் மெய்நிகர் இயந்திரங்களை ஆர்டர் செய்தோம்.
  3. ஆனால் மேகக்கணியின் தன்மையின் காரணமாக, VM எந்த ஹைப்பர்வைசரில் இருந்ததோ, அதனுடன் பயன்பாட்டு வரிசைப்படுத்தல் இணைக்கப்பட்டது.

அந்த. உயர்-நிலை பயன்பாட்டு வரிசைப்படுத்தல் தர்க்கம் ஹைப்பர்வைசரின் கீழ் நிலைகளுக்கு சார்புகளுடன் பாய்ந்தது, மேலும் இந்த தர்க்கத்தை மீண்டும் பயன்படுத்தும் போது இது சிக்கல்களைக் குறிக்கிறது. இந்த முறையில் செய்யாதீர்கள்.

பரஸ்பர

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

குறியீடாக உள்கட்டமைப்பு என்பது குறியீட்டைப் பற்றியது மட்டுமல்ல, குறியீட்டிற்கும் மக்களுக்கும் இடையிலான உறவைப் பற்றியது, உள்கட்டமைப்பு டெவலப்பர்களுக்கு இடையிலான தொடர்புகளைப் பற்றியது.

பஸ் காரணி

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

உங்கள் திட்டத்தில் வாஸ்யா இருப்பதாக வைத்துக் கொள்வோம். உங்கள் உள்கட்டமைப்பு பற்றி வாஸ்யாவுக்கு எல்லாம் தெரியும், வாஸ்யா திடீரென்று காணாமல் போனால் என்ன நடக்கும்? இது ஒரு உண்மையான நிலைமை, ஏனென்றால் அவர் ஒரு பேருந்தில் அடிக்கப்படலாம். சில நேரங்களில் அது நடக்கும். இது நடந்தால் மற்றும் குறியீடு, அதன் அமைப்பு, அது எவ்வாறு இயங்குகிறது, தோற்றங்கள் மற்றும் கடவுச்சொற்கள் பற்றிய அறிவு குழுவில் விநியோகிக்கப்படாவிட்டால், நீங்கள் பல விரும்பத்தகாத சூழ்நிலைகளை சந்திக்க நேரிடும். இந்த அபாயங்களைக் குறைக்க மற்றும் குழுவிற்குள் அறிவை விநியோகிக்க, நீங்கள் பல்வேறு அணுகுமுறைகளைப் பயன்படுத்தலாம்

ஜோடி டெவொப்சிங்

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

அது போல் இல்லை நகைச்சுவையாக, நிர்வாகிகள் பீர் குடித்தார்கள், கடவுச்சொற்களை மாற்றினர் மற்றும் ஜோடி நிரலாக்கத்தின் அனலாக். அந்த. இரண்டு பொறியாளர்கள் ஒரு கணினியில் அமர்ந்து, ஒரு விசைப்பலகை மற்றும் ஒன்றாக உங்கள் உள்கட்டமைப்பை அமைக்கத் தொடங்குங்கள்: ஒரு சேவையகத்தை அமைத்தல், ஒரு ஆன்சிபிள் பாத்திரத்தை எழுதுதல் போன்றவை. இது நன்றாக இருக்கிறது, ஆனால் அது எங்களுக்கு வேலை செய்யவில்லை. ஆனால் இந்த நடைமுறையின் சிறப்பு வழக்குகள் வேலை செய்தன. ஒரு புதிய ஊழியர் வருகிறார், அவரது வழிகாட்டி அவருடன் சேர்ந்து ஒரு உண்மையான பணியை மேற்கொள்கிறார், வேலை செய்கிறார் மற்றும் அறிவை மாற்றுகிறார்.

மற்றொரு சிறப்பு வழக்கு ஒரு சம்பவ அழைப்பு. ஒரு பிரச்சனையின் போது, ​​பணியில் இருப்பவர்கள் மற்றும் சம்பந்தப்பட்டவர்கள் குழு ஒன்று கூடுகிறது, ஒரு தலைவர் நியமிக்கப்படுகிறார், அவர் தனது திரையைப் பகிர்ந்துகொண்டு சிந்தனையின் ரயிலுக்கு குரல் கொடுக்கிறார். மற்ற பங்கேற்பாளர்கள் தலைவரின் எண்ணங்களைப் பின்பற்றுகிறார்கள், கன்சோலில் இருந்து தந்திரங்களை உளவு பார்க்கிறார்கள், பதிவில் ஒரு வரியைத் தவறவிடவில்லை என்பதைச் சரிபார்த்து, கணினியைப் பற்றிய புதிய விஷயங்களைக் கற்றுக்கொள்கிறார்கள். இந்த அணுகுமுறை அடிக்கடி வேலை செய்தது.

குறியீடு விமர்சனம்

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

உள்கட்டமைப்பு மற்றும் குறியீடு மதிப்பாய்வைப் பயன்படுத்தி அது எவ்வாறு செயல்படுகிறது என்பதைப் பற்றிய அறிவைப் பரப்புவது மிகவும் பயனுள்ளதாக இருந்தது:

  • உள்கட்டமைப்பு களஞ்சியத்தில் குறியீடு மூலம் விவரிக்கப்பட்டுள்ளது.
  • மாற்றங்கள் ஒரு தனி கிளையில் நிகழ்கின்றன.
  • ஒன்றிணைக்கும் கோரிக்கையின் போது, ​​உள்கட்டமைப்பில் ஏற்படும் மாற்றங்களின் டெல்டாவை நீங்கள் பார்க்கலாம்.

இங்குள்ள சிறப்பம்சம் என்னவென்றால், ஒரு அட்டவணையின்படி மதிப்பாய்வாளர்கள் ஒவ்வொருவராக தேர்ந்தெடுக்கப்பட்டனர், அதாவது. ஓரளவு நிகழ்தகவுடன் நீங்கள் ஒரு புதிய உள்கட்டமைப்பில் ஏறுவீர்கள்.

குறியீடு நடை

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

காலப்போக்கில், விமர்சனங்களின் போது சண்டைகள் தோன்ற ஆரம்பித்தன, ஏனென்றால்... விமர்சகர்கள் தங்களுடைய சொந்த பாணியைக் கொண்டிருந்தனர் மற்றும் மதிப்பாய்வாளர்களின் சுழற்சி வெவ்வேறு பாணிகளுடன் அவற்றை அடுக்கி வைத்தது: 2 இடைவெளிகள் அல்லது 4, CamelCase அல்லது snake_case. இதை உடனடியாக நடைமுறைப்படுத்த முடியவில்லை.

  • முதல் யோசனை லிண்டரைப் பயன்படுத்த பரிந்துரைக்கப்பட்டது, எல்லாவற்றிற்கும் மேலாக, எல்லோரும் ஒரு பொறியாளர், எல்லோரும் புத்திசாலிகள். ஆனால் வெவ்வேறு எடிட்டர்கள், OS, வசதியாக இல்லை
  • இது ஒவ்வொரு பிரச்சனைக்குரிய கமிட்டிக்கும் ஸ்லாக் என்று எழுதி லிண்டர் அவுட்புட்டை இணைக்கும் போட்டாக உருவானது. ஆனால் பெரும்பாலான சந்தர்ப்பங்களில் செய்ய வேண்டிய முக்கியமான விஷயங்கள் இருந்தன, மேலும் குறியீடு சரிசெய்யப்படாமல் இருந்தது.

கிரீன் பில்ட் மாஸ்டர்

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

நேரம் கடந்து செல்கிறது, சில சோதனைகளில் தேர்ச்சி பெறாத உறுதிமொழிகளை மாஸ்டருக்குள் அனுமதிக்க முடியாது என்ற முடிவுக்கு வந்துள்ளோம். வோய்லா! கிரீன் பில்ட் மாஸ்டரை நாங்கள் கண்டுபிடித்தோம், இது மென்பொருள் மேம்பாட்டில் நீண்ட காலமாக நடைமுறையில் உள்ளது:

  • தனி கிளையில் வளர்ச்சி நடந்து வருகிறது.
  • இந்த நூலில் சோதனைகள் நடந்து வருகின்றன.
  • சோதனைகள் தோல்வியுற்றால், குறியீடு அதை முதன்மையாக மாற்றாது.

இந்த முடிவை எடுத்தது மிகவும் வேதனையாக இருந்தது, ஏனென்றால்... நிறைய சர்ச்சையை ஏற்படுத்தியது, ஆனால் அது மதிப்புக்குரியது, ஏனென்றால்... விமர்சனங்கள் பாணியில் வேறுபாடுகள் இல்லாமல் இணைப்புகளுக்கான கோரிக்கைகளைப் பெறத் தொடங்கின, மேலும் காலப்போக்கில் சிக்கல் பகுதிகளின் எண்ணிக்கை குறையத் தொடங்கியது.

IaC சோதனை

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

நடை சரிபார்ப்புடன் கூடுதலாக, நீங்கள் மற்ற விஷயங்களைப் பயன்படுத்தலாம், எடுத்துக்காட்டாக, உங்கள் உள்கட்டமைப்பு உண்மையில் வரிசைப்படுத்த முடியுமா என்பதைச் சரிபார்க்க. அல்லது உள்கட்டமைப்பில் ஏற்படும் மாற்றங்கள் பண இழப்புக்கு வழிவகுக்காது என்பதை சரிபார்க்கவும். இது ஏன் தேவைப்படலாம்? கேள்வி சிக்கலானது மற்றும் தத்துவமானது, எப்படியாவது பவர்ஷெல்லில் ஒரு ஆட்டோ ஸ்கேலர் இருந்தது என்று ஒரு கதையுடன் பதிலளிப்பது நல்லது, அது எல்லை நிலைமைகளை சரிபார்க்கவில்லை => தேவைக்கு அதிகமாக VM கள் உருவாக்கப்பட்டன => வாடிக்கையாளர் திட்டமிட்டதை விட அதிக பணம் செலவழித்தார். இது மிகவும் இனிமையானது அல்ல, ஆனால் முந்தைய கட்டங்களில் இந்த பிழையைப் பிடிப்பது மிகவும் சாத்தியமாகும்.

சிக்கலான உள்கட்டமைப்பை ஏன் இன்னும் சிக்கலாக்க வேண்டும் என்று ஒருவர் கேட்கலாம். உள்கட்டமைப்புக்கான சோதனைகள், குறியீட்டைப் போலவே, எளிமைப்படுத்துவது பற்றியது அல்ல, ஆனால் உங்கள் உள்கட்டமைப்பு எவ்வாறு செயல்பட வேண்டும் என்பதை அறிவது.

IaC சோதனை பிரமிடு

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

IaC சோதனை: நிலையான பகுப்பாய்வு

நீங்கள் முழு உள்கட்டமைப்பையும் ஒரே நேரத்தில் வரிசைப்படுத்தி, அது செயல்படுகிறதா எனச் சரிபார்த்தால், அதற்கு அதிக நேரம் எடுக்கும் மற்றும் அதிக நேரம் தேவைப்படுவதை நீங்கள் காணலாம். எனவே, அடிப்படையானது விரைவாக வேலை செய்யும் ஒன்றாக இருக்க வேண்டும், அதில் நிறைய உள்ளது, மேலும் அது பல பழமையான இடங்களை உள்ளடக்கியது.

பாஷ் தந்திரமானது

ஒரு சிறிய உதாரணத்தைப் பார்ப்போம். தற்போதைய கோப்பகத்தில் உள்ள எல்லா கோப்புகளையும் தேர்ந்தெடுத்து மற்றொரு இடத்திற்கு நகலெடுக்கவும். நினைவுக்கு வரும் முதல் விஷயம்:

for i in * ; do 
    cp $i /some/path/$i.bak
done

கோப்பு பெயரில் இடம் இருந்தால் என்ன செய்வது? சரி, சரி, நாங்கள் புத்திசாலிகள், மேற்கோள்களை எவ்வாறு பயன்படுத்துவது என்பது எங்களுக்குத் தெரியும்:

for i in * ; do cp "$i" "/some/path/$i.bak" ; done

நன்றாக செய்தீர்களா? இல்லை! கோப்பகத்தில் எதுவும் இல்லை என்றால் என்ன, அதாவது. குளோப்பிங் வேலை செய்யாது.

find . -type f -exec mv -v {} dst/{}.bak ;

இப்போது நன்றாக முடிந்ததா? இல்லை... கோப்பு பெயரில் என்ன இருக்க முடியும் என்பதை மறந்துவிட்டேன் n.

touch x
mv x  "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir

நிலையான பகுப்பாய்வு கருவிகள்

மேற்கோள்களை நாம் மறந்துவிட்டால், முந்தைய படியில் இருந்து சிக்கலைப் பிடிக்கலாம், இதற்கு இயற்கையில் பல தீர்வுகள் உள்ளன ஷெல் செக், பொதுவாக அவற்றில் நிறைய உள்ளன, மேலும் உங்கள் IDE இன் கீழ் உங்கள் ஸ்டேக்கிற்கான ஒரு லிண்டரை நீங்கள் காணலாம்.

மொழி
கருவி

பாஷ்
ஷெல் செக்

ரூபி
ரூபோகாப்

மலைப்பாம்பு
பைலிண்ட்

ansible
அன்சிபிள் லிண்ட்

IaC சோதனை: அலகு சோதனைகள்

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

முந்தைய எடுத்துக்காட்டில் இருந்து நாம் பார்த்தது போல், லிண்டர்கள் சர்வ வல்லமை கொண்டவை அல்ல மற்றும் அனைத்து பிரச்சனை பகுதிகளையும் சுட்டிக்காட்ட முடியாது. மேலும், மென்பொருள் மேம்பாட்டில் சோதனையுடன் ஒப்பிடுவதன் மூலம், நாம் அலகு சோதனைகளை நினைவுபடுத்தலாம். உடனே நினைவுக்கு வருவது ஷனிட், ஜூனிட், rspec, பைடஸ்ட். ஆனால் அன்சிபிள், செஃப், சால்ட்ஸ்டாக் மற்றும் அவர்களைப் போன்றவர்களை என்ன செய்வது?

ஆரம்பத்தில் நாங்கள் பேசினோம் எஸ்.ஓ.எல்.ஐ.டி. நமது உள்கட்டமைப்பு சிறிய செங்கற்களைக் கொண்டிருக்க வேண்டும். அவர்களின் நேரம் வந்துவிட்டது.

  1. உள்கட்டமைப்பு சிறிய செங்கற்களாக பிரிக்கப்பட்டுள்ளது, எடுத்துக்காட்டாக, அன்சிபிள் பாத்திரங்கள்.
  2. சில வகையான சூழல் பயன்படுத்தப்படுகிறது, அது டாக்கர் அல்லது விஎம்.
  3. இந்த சோதனைச் சூழலுக்கு எங்கள் அன்சிபிள் பங்கைப் பயன்படுத்துகிறோம்.
  4. நாங்கள் எதிர்பார்த்தபடி எல்லாம் செயல்பட்டதா என்பதை நாங்கள் சரிபார்க்கிறோம் (நாங்கள் சோதனைகளை நடத்துகிறோம்).
  5. சரியா இல்லையா என்பதை நாங்கள் முடிவு செய்கிறோம்.

IaC சோதனை: அலகு சோதனை கருவிகள்

கேள்வி, CFMக்கான சோதனைகள் என்ன? நீங்கள் ஸ்கிரிப்டை இயக்கலாம் அல்லது இதற்கு ஆயத்த தீர்வுகளைப் பயன்படுத்தலாம்:

சிஎஃப்எம்
கருவி

Ansible
டெஸ்டின்ஃப்ரா

செஃப்
இன்ஸ்பெக்

செஃப்
சர்வர்ஸ்பெக்

உப்பு அடுக்கு
கோஸ்

டெஸ்டின்ஃப்ராவுக்கான எடுத்துக்காட்டு, பயனர்களை சரிபார்க்கிறது test1, test2 உள்ளன மற்றும் ஒரு குழுவில் உள்ளன sshusers:

def test_default_users(host):
    users = ['test1', 'test2' ]
    for login in users:
        assert host.user(login).exists
        assert 'sshusers' in host.user(login).groups

எதை தேர்வு செய்வது? கேள்வி சிக்கலானது மற்றும் தெளிவற்றது, 2018-2019க்கான கிதுபில் திட்டங்களில் ஏற்பட்ட மாற்றங்களுக்கான எடுத்துக்காட்டு இங்கே:

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

IaC சோதனை கட்டமைப்புகள்

கேள்வி எழுகிறது: அனைத்தையும் ஒன்றாக இணைத்து அதை எவ்வாறு தொடங்குவது? முடியும் அதை எடுத்து நீங்களே செய்யுங்கள் பொறியாளர்கள் போதுமான எண்ணிக்கையில் இருந்தால். அல்லது நீங்கள் ஆயத்த தீர்வுகளை எடுக்கலாம், இருப்பினும் அவற்றில் பல இல்லை:

சிஎஃப்எம்
கருவி

Ansible
மூலக்கூறு

செஃப்
சோதனை சமையலறை

Terraform
டெரரெஸ்ட்

2018-2019க்கான கிதுபில் திட்டங்களில் மாற்றங்களின் எடுத்துக்காட்டு:

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

மூலக்கூறு vs. சோதனை சமையலறை

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

ஆரம்பத்தில் நாங்கள் சோதனை சமையலறையைப் பயன்படுத்த முயற்சித்தேன்:

  1. இணையாக ஒரு VM ஐ உருவாக்கவும்.
  2. அன்சிபிள் பாத்திரங்களைப் பயன்படுத்துங்கள்.
  3. ஆய்வை இயக்கவும்.

25-35 பாத்திரங்களுக்கு அது 40-70 நிமிடங்கள் வேலை செய்தது, இது நீண்டது.

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

அடுத்த படி ஜென்கின்ஸ்/டாக்கர்/அன்சிபிள்/மூலக்யூலுக்கு மாறுவது. கருத்தியல் ரீதியாக எல்லாம் ஒன்றுதான்

  1. லிண்ட் விளையாட்டு புத்தகங்கள்.
  2. பாத்திரங்களை வரிசைப்படுத்துங்கள்.
  3. கொள்கலனை துவக்கவும்
  4. அன்சிபிள் பாத்திரங்களைப் பயன்படுத்துங்கள்.
  5. டெஸ்டின்ஃப்ராவை இயக்கவும்.
  6. இயலாமையை சரிபார்க்கவும்.

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

40 பாத்திரங்களுக்கான லைண்டிங் மற்றும் ஒரு டஜன் சோதனைகள் சுமார் 15 நிமிடங்கள் எடுக்கத் தொடங்கின.

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

எதைத் தேர்ந்தெடுப்பது என்பது பயன்படுத்தப்படும் அடுக்கு, அணியில் நிபுணத்துவம் போன்ற பல காரணிகளைப் பொறுத்தது. யூனிட் டெஸ்டிங் கேள்வியை எப்படி மூடுவது என்பதை இங்கு அனைவரும் தீர்மானிக்கிறார்கள்

IaC சோதனை: ஒருங்கிணைப்பு சோதனைகள்

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

உள்கட்டமைப்பு சோதனை பிரமிட்டின் அடுத்த படி ஒருங்கிணைப்பு சோதனைகள் ஆகும். அவை அலகு சோதனைகளுக்கு ஒத்தவை:

  1. உள்கட்டமைப்பு சிறிய செங்கற்களாக பிரிக்கப்பட்டுள்ளது, எடுத்துக்காட்டாக அன்சிபிள் பாத்திரங்கள்.
  2. சில வகையான சூழல் பயன்படுத்தப்படுகிறது, அது டாக்கர் அல்லது விஎம்.
  3. இந்த சோதனை சூழல் பொருந்தும் பல பொறுப்பான பாத்திரங்கள்.
  4. நாங்கள் எதிர்பார்த்தபடி எல்லாம் செயல்பட்டதா என்பதை நாங்கள் சரிபார்க்கிறோம் (நாங்கள் சோதனைகளை நடத்துகிறோம்).
  5. சரியா இல்லையா என்பதை நாங்கள் முடிவு செய்கிறோம்.

தோராயமாகச் சொன்னால், யூனிட் சோதனைகளில் இருப்பது போல, கணினியின் தனிப்பட்ட உறுப்பின் செயல்திறனை நாங்கள் சரிபார்க்கவில்லை, ஒட்டுமொத்தமாக சர்வர் எவ்வாறு கட்டமைக்கப்பட்டுள்ளது என்பதை நாங்கள் சரிபார்க்கிறோம்.

IaC சோதனை: முடிவு முதல் இறுதி வரை சோதனைகள்

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

பிரமிட்டின் உச்சியில் எண்ட் டு என்ட் சோதனைகள் நம்மை வரவேற்கின்றன. அந்த. எங்கள் உள்கட்டமைப்பின் தனி சேவையகம், தனி ஸ்கிரிப்ட் அல்லது தனி செங்கல் ஆகியவற்றின் செயல்திறனை நாங்கள் சரிபார்க்க மாட்டோம். பல சேவையகங்கள் ஒன்றாக இணைக்கப்பட்டுள்ளதா என்பதை நாங்கள் சரிபார்க்கிறோம், எங்கள் உள்கட்டமைப்பு நாங்கள் எதிர்பார்த்தபடி செயல்படுகிறது. துரதிர்ஷ்டவசமாக, ஆயத்த பெட்டி தீர்வுகளை நான் பார்த்ததில்லை, ஒருவேளை... உள்கட்டமைப்பு பெரும்பாலும் தனித்துவமானது மற்றும் டெம்ப்ளேட் செய்வது மற்றும் சோதனைக்கான கட்டமைப்பை உருவாக்குவது கடினம். இதன் விளைவாக, ஒவ்வொருவரும் தங்கள் சொந்த தீர்வுகளை உருவாக்குகிறார்கள். ஒரு கோரிக்கை உள்ளது, ஆனால் பதில் இல்லை. எனவே, எல்லாமே நமக்கு முன்பே கண்டுபிடிக்கப்பட்டவை என்பதில் மற்றவர்களை நல்ல எண்ணங்களுக்குத் தள்ள அல்லது என் மூக்கைத் தேய்க்க என்ன இருக்கிறது என்பதை நான் உங்களுக்குச் சொல்கிறேன்.

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

வளமான வரலாற்றைக் கொண்ட திட்டம். இது பெரிய நிறுவனங்களில் பயன்படுத்தப்படுகிறது மற்றும் நீங்கள் ஒவ்வொருவரும் மறைமுகமாக அதனுடன் பாதைகளை கடந்து இருக்கலாம். பயன்பாடு பல தரவுத்தளங்கள், ஒருங்கிணைப்புகள் போன்றவற்றை ஆதரிக்கிறது. உள்கட்டமைப்பு எப்படி இருக்கும் என்பதை அறிவது நிறைய டோக்கர்-கம்போஸ் கோப்புகள் மற்றும் எந்த சூழலில் எந்த சோதனைகளை இயக்க வேண்டும் என்பதை அறிவது ஜென்கின்ஸ்.

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

இந்த திட்டம் நீண்ட காலமாக, கட்டமைப்பிற்குள் வேலை செய்தது ஆராய்ச்சி நாங்கள் இதை Openshift க்கு மாற்ற முயற்சிக்கவில்லை. கொள்கலன்கள் அப்படியே இருக்கின்றன, ஆனால் ஏவுதல் சூழல் மாறிவிட்டது (ஹலோ டி.ஆர்.ஒய். மீண்டும்).

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

ஆராய்ச்சி யோசனை மேலும் சென்றது, ஓபன்ஷிப்டில் அவர்கள் APB (Ansible Playbook Bundle) போன்ற ஒன்றைக் கண்டுபிடித்தனர், இது ஒரு கொள்கலனில் உள்கட்டமைப்பை எவ்வாறு வரிசைப்படுத்துவது என்பது பற்றிய அறிவைப் பேக் செய்ய உங்களை அனுமதிக்கிறது. அந்த. உள்கட்டமைப்பை எவ்வாறு வரிசைப்படுத்துவது என்பது குறித்து மீண்டும் மீண்டும் சோதனை செய்யக்கூடிய அறிவு உள்ளது.

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

நாங்கள் ஒரு பன்முக உள்கட்டமைப்பில் இயங்கும் வரை இவை அனைத்தும் நன்றாக இருந்தது: சோதனைகளுக்கு எங்களுக்கு விண்டோஸ் தேவை. இதன் விளைவாக, என்ன, எங்கே, எப்படி வரிசைப்படுத்துவது மற்றும் சோதிப்பது பற்றிய அறிவு ஜென்கின்களிடம் உள்ளது.

தீர்மானம்

200 கோடுகளின் உள்கட்டமைப்புக் குறியீட்டைச் சோதிப்பதில் இருந்து நான் கற்றுக்கொண்டது

உள்கட்டமைப்பு என்பது குறியீடு

  • களஞ்சியத்தில் குறியீடு.
  • மனித தொடர்பு.
  • உள்கட்டமைப்பு சோதனை.

இணைப்புகள்

ஆதாரம்: www.habr.com

கருத்தைச் சேர்