ብሎግ

ያልተሳካ ዳግም ማተም የሚሰራን የጀርባ አገልጋይ ፈጽሞ አይሰርዝም

ሴፕቴምበር 25 ላይ ያልተሳካ ዳግም ማተም የአንድ መተግበሪያ የጀርባ አገልጋይ (backend) ሰርቶ ሲሠራ ለሁለት ሰዓት ተኩል ያህል የቆየውን ሰርዞታል። ያልተሳካ ህትመትን የሚቀለብሰው ኮድ ህትመቱ የነካቸውን የሰርቨር መተግበሪያዎች በሙሉ ያጠፋ ነበር፤ ህትመቱ ከመጀመሩ በፊትም ሲያገለግሉ የነበሩትንም ጭምር። አሁን ህትመቱ የፈጠራቸው መተግበሪያዎች ብቻ ይሰረዛሉ፤ ቀድሞ የነበረ መተግበሪያ ግን ከዚህ በፊት ይሠራበት የነበረው ትክክለኛ እትም ላይ ይመለሳል። በዚያው ቀን የተደረጉ ሁለት ተከታይ ማስተካከያዎች ቀልብሱ የሆስቲንግ መድረኩ የራሱ የማሰማሪያ መሣሪያ ሲወድቅም እንዲሠራ፣ እንዲሁም ጤናማ መተግበሪያ እንቅልፍ ላይ ስለነበረ ብቻ እንዳይወድቅ አድርገዋል።

የጀርባ አገልጋይ እንዴት እንደሚታተም

የMythex መተግበሪያህ የጀርባ አገልጋይ ሲኖረው (ማለትም ኤፒአይ ወይም ሰርቨር፣ በቀላሉ ፋይሎች ብቻ ሳይሆን)፣ ማተም ከDockerfile (መተግበሪያውን ወደ ምስል ለማሸግ የሚያገለግል የመመሪያ ፋይል) ይገነባል፤ ያንን ምስል በሆስቲንግ መድረካችን ማሽኖች ላይ ያሰማራል። ከዚያም የጤና ምርመራ (health check) አዲሱ እትም በትክክል ተነስቶ መቆየቱን ይጠብቃል፤ ከዚያ በኋላ ብቻ ህትመቱ ቀጥታ ላይ እንደሆነ ይታወቃል።

በመንገድ ላይ ማንኛውም ነገር ከተሳካ፣ ለማስቀረት መመለስ (rollback) ይሠራል። ይህ መመለስ በትክክል መሠራቱ ከማተም ሂደቱ ውስጥ ከማንኛውም ነገር በላይ ይበልጥ ይመዝናል፤ ምክንያቱም የሚሠራው አስቀድሞ ነገር ሲበላሽ ነው።

ችግር 1፡ መመለሱ መመለስ የነበረበትን ሰረዘ

መመለሱ ህትመቱ የዘረጋባቸውን የሰርቨር መተግበሪያዎች ዝርዝር ይይዝ ነበር፤ ሲከሽፍ ደግሞ እያንዳንዱን ያጠፋ ነበር። ይህ ለመጀመሪያ ህትመት ትክክል ነው፤ መተግበሪያው ገና አሁን ተፈጥሮ ነበር፣ ምንም የሚመረኮዝበት የለም፣ መሰረዙ ነገሮችን ቀድሞ ወደነበሩበት ይመልሳቸዋል።

ለዳግም ማተም ግን በትክክል የተሳሳተ ነበር። መተግበሪያው አስቀድሞ ነበረ፤ ለእውነተኛ ጎብኚዎችም ያገለግል ነበር። ሴፕቴምበር 25 ላይ የአንድ መተግበሪያ ኤፒአይ ለሁለት ሰዓት ተኩል ሲሠራ ቆይቶ በአንድ ያልተሳካ ዳግም ማተም ተሰረዘ።

በዚሁ ኮድ ውስጥ ሌላ ሁለተኛ ችግር ተደብቆ ነበር። መሰረዙ ካልተሳካ፣ የተበላሸው አዲስ ምስል በማሽኖቹ ላይ ይቀር ነበር፤ እኛ ግን የባለቤቱ አሁን ያለው ጣቢያ አሁንም ሥራ ላይ ነው ብለን እንነግረው ነበር። የጤና ምርመራው ሊወድቅ በሚችልበት ጊዜ አዲሱ ምስል ቀድሞውኑ በሁሉም ማሽኖች ላይ ተዘርግቶ ነበር። ምንም አለማድረግ ማቀልበስ ማለት አይደለም።

መፍትሄው፡ የፈጠርከውን ብቻ አጥፋ፣ ቀሪውን መልስ

እያንዳንዱ ህትመት አሁን የሚነካቸውን የሰርቨር መተግበሪያዎች ሁሉ መዝግቦ ይይዛል፦

  • ይህ ህትመት ይህን ፈጥሮት እንደሆነ፣ እና
  • ካልሆነ፣ ከመብቃቱ በፊት የትኛውን ምስል ሲያሠራ እንደነበረ።

ሲከሽፍ እያንዳንዱ መተግበሪያ ከሦስቱ አንዱን ያገኛል፦

  1. በዚህ ህትመት የተፈጠረ፦ ቀድሞ እንደነበረው ይሰረዛል።
  2. አስቀድሞ የነበረ፣ የቀድሞው ምስል የታወቀ፦ ያንኑ ምስል ከተመሳሳይ ውቅር ጋር በድጋሚ ያሰማራል። ግንባታ የለም፤ ምስሉ ብቻ ወደ ኋላ ይመለሳል።
  3. አስቀድሞ የነበረ፣ የቀድሞው ምስል ያልታወቀ፦ ምንም አይነካም። ቢመለስ እንኳን አስቀድሞ የነበረ መተግበሪያ ፈጽሞ አይሰረዝም።

እነዚህ ህጎች ትንሽ ንጹህ ተግባር (pure function) ናቸው፤ የራሳቸው ሙከራዎች አሏቸው፣ ስለዚህ ውሳኔው «ሁሉንም አጥፋ» ወደሚል ሳይመለስ በሙከራ ይጠበቃል።

ችግር 2፡ የማሰማሪያ መሣሪያው መመለሱን ከመጻፍ በፊት ሊወድቅ ይችል ነበር

ይህን ማስተካከያ ካደረግን ብዙም ሳይቆይ በውስጡ ክፍተት አገኘን። የሆስቲንግ መድረኩ የማሰማሪያ መሣሪያ የራሱ የጭስ ፈተናዎች (smoke checks) አሉት፤ አዲሶቹ ማሽኖች ቢበላሹ ስህተት ይወጣል። ይሁንና ይህን የሚያደርገው የአዲሱ ምስል ቀድሞውኑ በማሽኖቹ ላይ ከደረሰ በኋላ ነው።

ኮዳችን መተግበሪያውን ለመመለስ የሚመዘግበው መሣሪያው በተሳካ ሁኔታ ሲመለስ ብቻ ነበር። መሣሪያው ራሱ ማሰማራቱን ሲያከሽፈው፣ መተግበሪያው ገና በመመለሻ ዝርዝሩ ውስጥ አልነበረም፤ ስለዚህ ምንም አልተመለሰም። በስቴጂንግ አካባቢያችን ላይ አንድ የተበላሸ ዳግም ማተም የተበላሸውን ምስል ማገልገሉን ቀጠለ።

መፍትሄው፡ መመለሱን ከመጀመሩ በፊት ምዝግብ አድርግ

መተግበሪያው አሁን ለመመለስ የተመዘገበው፣ ዝግጁ እንደሆነ እና ምንም ምስል ከመዘርጋቱ በፊት፣ እንዲሁም ፈጠረው ወይም አልፈጠረው እና ምን ምስል ሲያሠራ እንደነበረ ጭምር ነው። ከዚያ በኋላ ምንም ቢወድቅ፣ መመለሱ መመለስ ያለበትን ያውቃል። በአካባቢያችን ሞክረነዋል፦ የተበላሸ ዳግም ማተም በማሰማሪያ መሣሪያው የራሱ የጭስ ፈተናዎች ወድቋል፣ የቀድሞው እትም ግን ምላሽ መስጠቱን ቀጠለ።

ችግር 3፡ የተኛ መተግበሪያ «በጭራሽ አልተነሳም» ተብሎ ወድቋል

Mythex ላይ የታተሙ መተግበሪያዎች ክሬዲቶችህን ለመቆጠብ ስራ ሲፈታ ይተኛሉ። ዳግም ማተም የተኛን ማሽን ቆሞ ይተዋል፤ ስለዚህ የጤና ምርመራው ማሽኑን ማንቃት አለበት። በዚያ ጊዜ መጀመር በአንድ ጊዜ ብቻ ይጠይቅ ነበር፤ መልሱንም ችላ ይል ነበር።

ሴፕቴምበር 25 ላይ ያ አንድ የመጀመር ጥያቄ ምንም ውጤት አላመጣም። ጤናማ የነበረ ኤፒአይ ለሙሉ አምስት ደቂቃ የጤና ምርመራ ቆሞ ቀረ፤ «1 ማሽን በጭራሽ አልተነሳም (የመጨረሻ ሁኔታ፦ stopped)» በሚል ወደቀ።

መድረኩ መጀመርን አንዳንዴ ይከለክላል። ይህን ስንመረምር፣ ሳናስነሳው «lease currently held» የሚል ግጭት መለሰ፤ ማሽን በዝማኔ ላይ እያለም ጅምርን ይከለክላል።

መፍትሄው፡ ደጋግመህ ጠይቅ፣ በሩን አንኳኳ

የጤና ምርመራው አሁን፦

  • በሚጠብቅበት ጊዜ የቆመ ማሽን እንዲነሳ በየ20 ሰከንዱ እንደገና ይጠይቃል፣
  • መድረኩ እምቢ ሲል የመለሰውን ይመዘግባል፣ እና
  • ጎብኚ እንደሚያደርገው አንድ ተራ ጥያቄ ወደ መተግበሪያው ይልካል፤ የመድረኩ ፕሮክሲ ጥያቄ ሲመጣ የተኛን ማሽን ያነቃዋል።

ይህን በእውነተኛው መድረክ ላይ በማይጠቅም አንድ ሙከራ መተግበሪያ ላይ ደግመን አሳይተናል፤ መጀመሪያ ጅምሩ እምቢ ተብሎ ነበር። ከማስተካከያው በፊት ህትመቱ ከ91 ሰከንድ በኋላ ወድቋል፤ ከማስተካከያው በኋላ በ20 ሰከንድ ውስጥ ታትሟል። ራሱ ሲነሳ የሚበላሽ መተግበሪያ አሁንም እንደሚገባው ይወድቃል።

ከዚህ የወሰድናቸው ትምህርቶች

  • መመለስ በአዲስና በነበረ መካከል ያለውን ልዩነት ማወቅ አለበት። ለፈጠርከው ነገር «መቀልበስ» ማለት መሰረዝ ነው። ቀድሞ ለነበረ ነገር «መቀልበስ» ማለት መመለስ ነው። ሁለቱን አንድ አድርጎ ማየት ነው የደህንነት ዘዴ ሥራ የሚሠራን መተግበሪያ የሚሰርዘው።
  • ከመንቀሳቀስህ በፊት እንዴት መቀልበስ እንደምትችል ጻፍ። መቀልበስ የሚመዘገበው ደረጃው ከተሳካ በኋላ ብቻ ከሆነ፣ በግማሽ የሚወድቅ ደረጃ የሚቀለበስበት ነገር አይተውም።
  • በምትመረኮዝበት ጥያቄ ላይ ያለውን መልስ ፈጽሞ ችላ አትበል። አንድ ችላ የተባለ «አይ» ጤናማ መተግበሪያን ወደ ያልተሳካ ህትመት ለወጠው።

ከዚያው ቀን ጋር የተያያዘ ሌላ ማስተካከያ፦ ከታተመ በኋላ ወዲያው የሚበላሹ መተግበሪያዎችን መያዝ። ህትመት በአንተ በኩል ቢከሽፍ ምን እንደሚፈጠር ለማወቅ፣ በሰነዶቹ ውስጥ የህትመት ችግር መፍቻ ይመልከቱ።

Mythex · Pricing · በAI ማንኛውንም ነገር ይገንቡ · የድር ጣቢያ እና የመተግበሪያ ቴምፕሌቶች · Mythex ከሌሎች ጋር ሲነጻጸር · የAI መተግበሪያ ግንባታ የቃላት መዝገበ-ቃላት · ነፃ የAI መተግበሪያ መገንቢያ መሳሪያዎች · English

English العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)